【问题标题】:How to design a model for contour recognition? In particular, how to shape the output layer?如何设计轮廓识别模型?特别是如何塑造输出层?
【发布时间】:2021-08-24 16:53:11
【问题描述】:

我想设计和训练一个神经网络,用于在一些显微图像中自动识别边缘。 开始使用 Keras,以后可能会考虑使用 PyTorch。

图片的结构比较简单,有一些暗区和一些清晰区,比较容易区分,任务是选择 darkclear 区域之间的轮廓像素。黑暗和清晰之间的过渡是渐进的,所以我的结果不是单行边缘像素,而是边缘处 10 或 15 像素宽的“带”。

我手动注释了 200 多张图像,因此对于每张图像,我都有另一个相同大小的图像,其中轮廓的像素是黑色的,而所有其他像素都是白色的。

我看过很多关于如何设计编译拟合模型(神经网络)以及如何测试的教程它,使用手动注释的数据。

但是,大多数教程都处理分类问题,其中输出层中的神经元数量就是类别的数量。

我的问题不是分类问题,理想情况下我的输出应该是与输入大小相同的图像。

所以,这是我的问题:

设计输出层的最佳方式是什么?具有多个神经元的层等于像素数是最好的主意吗?或者这是一种浪费,还有更高效的方法吗?


附录

  1. 图像“容易”,但仍然很难找到轮廓像素,因此我认为值得使用机器学习方法。
  2. 深色和清晰之间的过渡有点渐变,所以我的结果不是边缘上的单行像素,而是一条带,即 10 或 15 宽的边缘像素带。由于我追求的是一条像素带,我的类别应该是“边缘”和“非边缘”。如果我使用“暗像素”和“清晰像素”这两个类别,然后以数字方式找到两个区域之间的像素,我不会得到我需要的“功能区”结果。

【问题讨论】:

  • 看看图像分割,我认为像 U-net 这样的东西会很好用。另外,可能只是我,但您过度使用粗体和斜体实际上使我更难阅读您的问题。
  • 如果你的工作是“相当简单......容易区分”,你也可能根本不需要神经网络
  • 为什么需要神经网络来完成如此简单的任务?首先使用 Canny 或 LoG 过滤器。
  • 我已经删除了一些粗体,我希望文本现在更具可读性。这些区域“相对容易”识别,但仍然具有挑战性。我尝试过基于像素梯度的算法和其他数值分析,但我对结果不满意。我相信至少值得尝试机器学习。我发现文献报道了机器学习在类似问题上的应用。但在科学文献中,他们并没有给出这样的技术和“世俗”细节...... :)

标签: python tensorflow image-processing contour


【解决方案1】:

简短的回答是“”:输出中的神经元数量与输入中的神经元数量一样多,即输出具有相同分辨率的图像输入图像

网络架构将有一个输入层,每个像素都有一个神经元,然后隐藏层通常会缩小到更少的神经元,可能有 卷积 层,然后更多的层会重新扩展神经元的数量,直到输出层,原则上可以与输入层具有相同数量的神经元。

这类问题中最常见的架构是U-net架构,在文章“U-Net: Convolutional Networks for Biomedical Image Segmentation”中有描述,由 Ronneberger、Fischer 和 Brox 撰写,发表在 open arxiv:https://arxiv.org/abs/1505.04597

[

【讨论】:

    猜你喜欢
    • 2012-07-12
    • 2012-07-15
    • 2023-04-02
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 2015-03-11
    相关资源
    最近更新 更多