【发布时间】:2021-08-24 16:53:11
【问题描述】:
我想设计和训练一个神经网络,用于在一些显微图像中自动识别边缘。 开始使用 Keras,以后可能会考虑使用 PyTorch。
图片的结构比较简单,有一些暗区和一些清晰区,比较容易区分,任务是选择 dark 和 clear 区域之间的轮廓像素。黑暗和清晰之间的过渡是渐进的,所以我的结果不是单行边缘像素,而是边缘处 10 或 15 像素宽的“带”。
我手动注释了 200 多张图像,因此对于每张图像,我都有另一个相同大小的图像,其中轮廓的像素是黑色的,而所有其他像素都是白色的。
我看过很多关于如何设计、编译和拟合模型(神经网络)以及如何测试的教程它,使用手动注释的数据。
但是,大多数教程都处理分类问题,其中输出层中的神经元数量就是类别的数量。
我的问题不是分类问题,理想情况下我的输出应该是与输入大小相同的图像。
所以,这是我的问题:
设计输出层的最佳方式是什么?具有多个神经元的层等于像素数是最好的主意吗?或者这是一种浪费,还有更高效的方法吗?
附录
- 图像“容易”,但仍然很难找到轮廓像素,因此我认为值得使用机器学习方法。
- 深色和清晰之间的过渡有点渐变,所以我的结果不是边缘上的单行像素,而是一条带,即 10 或 15 宽的边缘像素带。由于我追求的是一条像素带,我的类别应该是“边缘”和“非边缘”。如果我使用“暗像素”和“清晰像素”这两个类别,然后以数字方式找到两个区域之间的像素,我不会得到我需要的“功能区”结果。
【问题讨论】:
-
看看图像分割,我认为像 U-net 这样的东西会很好用。另外,可能只是我,但您过度使用粗体和斜体实际上使我更难阅读您的问题。
-
如果你的工作是“相当简单......容易区分”,你也可能根本不需要神经网络
-
为什么需要神经网络来完成如此简单的任务?首先使用 Canny 或 LoG 过滤器。
-
我已经删除了一些粗体,我希望文本现在更具可读性。这些区域“相对容易”识别,但仍然具有挑战性。我尝试过基于像素梯度的算法和其他数值分析,但我对结果不满意。我相信至少值得尝试机器学习。我发现文献报道了机器学习在类似问题上的应用。但在科学文献中,他们并没有给出这样的技术和“世俗”细节...... :)
标签: python tensorflow image-processing contour