2017-07-07 134 views
1

我正在运行一个模型来检测图像中的一些有趣功能。我有一组图像测量600x200像素。这些图像具有我想识别的岩石碎片等特征。设想一个覆盖在图像上的(4x12)网格,我可以使用注释工具(如((4,9), (3,10), (3,11), (3,12)))手动生成注释以识别图像中感兴趣的单元格。我可以用Keras构建一个CNN模型,将输入作为灰度图像。但是,我应该如何编码输出。这似乎直觉对我的一种方法是把它当作形状(12,4,1)的稀疏矩阵,只有有趣的细胞具有1,而其他都为0我的CNN输出层应该是什么样子?

  • 有没有更好的方式来编码输出?
  • 最后一层应该是什么激活功能?我正在使用ReLU作为隐藏层。
  • 损失函数应该是什么?将mean_squared_error工作?
+0

为什么不分割你的图像,并用“小型网络(4 * 12)”来划分每个网格区域? –

+0

这些图像从圆形钻孔中展平。因此,我对正弦曲线模式感兴趣,以识别有趣的地质特征,而不是其他看起来相似但不是正弦曲线的岩石特征。 –

回答

2

你的问题实在是类同探测和分割的问题(你可以看到它如here。您提出的方法是因为在这两种检测与分割任务计算你所提出的特征图合理是一个平常的一部分。训练管道但是 - 有几个问题,你可能会遇到:

  • 内存问题:你需要以应对内存问题要么处理稀疏张量或使用发电机,
  • 丢失和激活:Keras API目前不支持分段丢失和激活,因此您需要自行实施。 Herehere你可以找到一个关于如何解决这个问题的例子。

在仅检测到的情况下(不对这一点进行分类),我会建议您使用sigmoidbinary_crossentropy。在分类softmaxcategorical_crossentropy的情况下。

当然 - 还有其他如何解决这个问题的方法。人们可以把它解决为一种回归,你需要预测有什么有趣的像素。但处理Keras中的变化输入相当麻烦。

相关问题