Python 基于模板图像的卷积网络训练

Python 基于模板图像的卷积网络训练,python,tensorflow,neural-network,conv-neural-network,Python,Tensorflow,Neural Network,Conv Neural Network,我试图设计和训练一个卷积神经网络来识别图像中的圆形细胞。我训练它的“切口”的完整图像,要么在图像的中间有一个圆(正训练样本)或不(负训练样本)。 中间有圆形图像(热图颜色不规则,图像全部灰度): 而不是仅仅对这两种输入图像进行分类(中间或不在中间),我希望网络输出是一个二进制位图,如果输入图像中没有圆圈,或者在图像中间有一个“斑点”(理想地是单点)来表示圆的中心,那么它就是一个统一的值(例如-1)。然后,这将应用于包含许多这样的圆形单元格的大型图像,并且输出应该是带有单元格所在位置斑点的位图 为

我试图设计和训练一个卷积神经网络来识别图像中的圆形细胞。我训练它的“切口”的完整图像,要么在图像的中间有一个圆(正训练样本)或不(负训练样本)。

中间有圆形图像(热图颜色不规则,图像全部灰度):

而不是仅仅对这两种输入图像进行分类(中间或不在中间),我希望网络输出是一个二进制位图,如果输入图像中没有圆圈,或者在图像中间有一个“斑点”(理想地是单点)来表示圆的中心,那么它就是一个统一的值(例如-1)。然后,这将应用于包含许多这样的圆形单元格的大型图像,并且输出应该是带有单元格所在位置斑点的位图

为了训练这一点,我使用输出图像和2D高斯滤波器之间的均方误差()作为正训练样本,使用图像和均匀矩阵之间的均方误差(值-1作为负训练样本)。理想情况下,这会导致美国有线电视新闻网收敛于一个图像,它类似于正训练样本中间的高斯峰,和一个图像,它是负训练样本的均匀的1。 然而,网络不断汇聚在一个不切实际的解决方案上,即“使一切为零”。这不会使MSE最小化,因此我不认为这是网络结构的固有问题(我尝试了不同的结构,从带有与输入图像一样大的过滤器的单层CNN到带有不同大小过滤器的多层CNN,所有这些都具有相同的结果)

我使用的损失函数如下所示:

weighted_score = tf.reduce_sum(tf.square(tf.sub(conv_squeeze, y)),
                 reduction_indices=[1, 2])
conv_-squese
是网络的输出图像,
y
是标签(即上面显示的高斯模板)。我已经尝试过按此处建议的批量大小取平均值:


但是没有成功。我找不到任何关于如何用模板图像作为标签来训练神经网络的学术出版物,因此,如果有人能为我指出正确的方向,我将不胜感激。非常感谢你

根据您的描述,我认为您正面临“数据不平衡”的问题。您可以尝试使用铰链损耗而不是MSE,这可能会解决您的问题。

根据您的描述,我认为您面临的是“数据不平衡”问题。您可以尝试使用铰链损耗代替MSE,这可能会解决您的问题。

一般来说,使用MSE进行训练并不容易。另一种方法是先预测是否有细胞,然后预测其中心和大小(预测高斯分布似乎非常复杂)。你的神经元会死亡吗“一切归零”通常是神经元死亡的信号。你有没有让你对relu神经元的初始偏差为非零,你有没有尝试过不同的学习率来进行训练?可能你需要一个非常小的学习率才能有稳定的学习,因为特征值和其他东西。一般来说,使用MSE进行训练并不容易。另一种方法是先预测是否有细胞,然后预测其中心和大小(预测高斯分布似乎非常复杂)。你的神经元会死亡吗“一切归零”通常是神经元死亡的信号。你有没有让你对relu神经元的初始偏差为非零,你有没有尝试过不同的学习率来进行训练?可能你需要一个非常小的学习率才能有稳定的学习,因为特征值和其他东西。嗨@Yong Li,欢迎来到stack overflow。虽然你的答案似乎是正确的,但在你的答案中有很多可能性和开放式的解决方案。你可以在问题的评论中提到这些,询问提问者的观点,并将其作为结果发布。Shi@Yong Li,欢迎来到stack overflow。虽然你的答案似乎是正确的,但在你的答案中有很多可能性和开放式的解决方案。你可以在问题的评论中提到这些,询问提问者的观点,并将其作为结果发布