opencv - 深度学习 - 如何执行 RANDOM CROP 并且不丢失数据中的任何信息(更改地面实况标签)

标签 opencv machine-learning deep-learning computer-vision conv-neural-network

我有来自 的图像补丁DDSM 乳房 X 光检查 150x150在尺寸方面。我想通过将这些图像随机裁剪 2 次到 120x120 来扩充我的数据集尺寸。所以,如果我的数据集包含 6500图像,用随机裁剪增加它应该让我到 13000图片。问题是,我不想丢失图像中的潜在信息并可能更改地面实况标签。
最好的方法是什么?我应该从 150x150 随机裁剪它们吗?至120x120并希望获得最好的结果,或者可能先填充它们然后再进行裁剪?解决这个问题的标准方法是什么?

最佳答案

如果您的地面实况包含您要分类的确切位置,请使用地面实况以明智的方式裁剪图像。 IE。如果您要删除要分类的内容,请调整基本事实。
如果您不知道要分类的位置,您可以

  • 尝试在您的未增强数据集上训练分类器,
  • 找出你的分类器对图像的哪些区域使用react,
  • 记下这些位置
  • 以明智的方式裁剪图像
  • 训练一个新的分类器

  • 但是你如何“找出你的分类器对哪些区域使用react”?
    Visualizing and Understanding Convolutional Networks 中描述了多种方法。泽勒和弗格斯:
    Image by Zeiler et al. Visualization by occlusion.
    想象一下,您的分类器对乳腺癌或无乳腺癌进行分类。现在只需拍摄一张包含乳腺癌阳性信息的图像,并用一些空白颜色遮挡图像的一部分(参见上图中的灰色方 block ,Zeiler 等人的图像)并预测癌症与否。现在移动被遮挡的正方形。最后,您将获得原始图像所有部分的粗略预测分数(请参见上图中的(d)),因为当您掩盖了负责积极预测的重要部分时,您(应该)得到一个阴性癌症预测。
    如果您的某人实际上可以在图像中识别癌症,这也是检查和防范混淆因素的好方法。
    顺便说一句:您可能希望即时裁剪并随机化裁剪方式以生成更多样本。
    如果 150x150 已经是 region of interest (ROI)您可以尝试以下数据扩充:
  • 使用更大的补丁,例如170x170 始终包含您的 150x150 补丁
  • 使用更大的补丁,例如200x200,然后缩小到 150x150
  • 为图像添加一些高斯噪声
  • 稍微旋转图像(随机量)
  • 稍微改变图像对比度
  • 人为地模拟您在原始数据集中看到的任何其他(图像)效果
  • 关于opencv - 深度学习 - 如何执行 RANDOM CROP 并且不丢失数据中的任何信息(更改地面实况标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62738868/

    相关文章:

    python - 多条水平线和垂直线未显示

    python - 如何取消我的训练数据分布对后续神经网络分类功能带来的巨大负面影响?

    python-3.x - 从 sklearn 导入数据集时出错

    python - 如何在 python 中从 LAB (l*a*b) 颜色空间中获取 a channel

    python - 使用opencv解析点云图像

    python - 从 Angular 2 前端调用后端 python 脚本

    python - 超高成本Tensorflow

    python - 继续使用 keras 中保存的模型训练 CNN

    python - 从文本文件加载keras模型

    opencv - 具有固定背景的OpenCV/EmguCV中的背景减法