为卷积神经网络选择训练图像
Choosing train images for convolutional neural network
目标是从图像中定位对象。我决定修改和训练现有模型。但是,我无法决定是应该使用蒙版还是仅使用 ROI 来训练模型。
例如:对于class 1个数据,只有class 1个对象会出现在图像上,其他区域将用0填充,对于第2个class 我会做同样的事情,只会在掩码中留下第 2 个 class 的对象,以此类推第 3 个和第 4 个 class.
第二种方法,使用 ROI:我将从没有蒙版的图像中裁剪每个 class,只裁剪感兴趣的区域。
然后,我希望继续做类似的事情:https://github.com/jazzsaxmafia/Weakly_detector
我应该选择第一种方式还是第二种方式?任何像 "Your plan won't work, try this" 的评论也很感激。
--编辑--
明确地说,
原图:http://s31.postimg.org/btyn660bf/image.jpg
1 次使用遮罩的方法:
- 第 1 class : http://s31.postimg.org/4s0pjywpn/class11.png
- 第二 class : http://s31.postimg.org/3zy1krsij/class21.png
- 第三 class : http://s31.postimg.org/itcp5j09n/class31.png
- 第四 class : http://s31.postimg.org/yowxv31gb/class41.png
第一种使用 ROI 的方法:
- 第 1 class : http://s31.postimg.org/4x4gtn40r/class1.png
- 第二 class : http://s31.postimg.org/8s7uw7n6j/class2.png
- 第三 class : http://s31.postimg.org/mxdny0w7v/class3.png
- 第四 class : http://s31.postimg.org/qfpnuex3v/class4.png
P.S :对于新示例,对象的位置将非常相似,因此使用掩码方法可能会更有用一些。对于 ROI 方法,我需要规范化每个具有非常不同大小的对象。然而,对整个图像蒙版进行归一化可能会使原始蒙版之间的方差更小。
假设 CNN 在大量高质量数据上进行训练,它们通常对不同的背景非常稳健。所以我猜想使用掩码和 ROI 方法之间的区别不会很大。不管你使用哪种方法,你都需要标准化你提供给 CNN 的图像的大小。
我实现了一些手势识别软件,遇到了类似的问题。我可以只使用原始的、未处理的 ROI,或者我可以使用过滤掉大部分背景的预处理版本。我基本上尝试了两种方法并比较了模型的准确性。就我而言,我能够从预处理图像中获得稍微更好的结果。另一方面,我的图像中的背景更加复杂和多变。无论如何,我的建议是建立一个可靠的机制来测试你的模型的准确性并进行实验,看看什么最有效。
老实说,最重要的是为每个class收集很多个好样本。就我而言,我一直看到实质性的改进,直到我达到每个 class 大约 5000 张图像。由于收集大量数据需要很长时间,因此最好捕获并存储原始的全尺寸图像以及实际数据收集中涉及的任何元数据,以便您可以尝试不同的方法(掩蔽与 ROI ,不同的输入图像大小,其他预处理,如直方图归一化等)而无需收集新数据。
目标是从图像中定位对象。我决定修改和训练现有模型。但是,我无法决定是应该使用蒙版还是仅使用 ROI 来训练模型。
例如:对于class 1个数据,只有class 1个对象会出现在图像上,其他区域将用0填充,对于第2个class 我会做同样的事情,只会在掩码中留下第 2 个 class 的对象,以此类推第 3 个和第 4 个 class.
第二种方法,使用 ROI:我将从没有蒙版的图像中裁剪每个 class,只裁剪感兴趣的区域。
然后,我希望继续做类似的事情:https://github.com/jazzsaxmafia/Weakly_detector
我应该选择第一种方式还是第二种方式?任何像 "Your plan won't work, try this" 的评论也很感激。
--编辑-- 明确地说,
原图:http://s31.postimg.org/btyn660bf/image.jpg
1 次使用遮罩的方法:
- 第 1 class : http://s31.postimg.org/4s0pjywpn/class11.png
- 第二 class : http://s31.postimg.org/3zy1krsij/class21.png
- 第三 class : http://s31.postimg.org/itcp5j09n/class31.png
- 第四 class : http://s31.postimg.org/yowxv31gb/class41.png
第一种使用 ROI 的方法:
- 第 1 class : http://s31.postimg.org/4x4gtn40r/class1.png
- 第二 class : http://s31.postimg.org/8s7uw7n6j/class2.png
- 第三 class : http://s31.postimg.org/mxdny0w7v/class3.png
- 第四 class : http://s31.postimg.org/qfpnuex3v/class4.png
P.S :对于新示例,对象的位置将非常相似,因此使用掩码方法可能会更有用一些。对于 ROI 方法,我需要规范化每个具有非常不同大小的对象。然而,对整个图像蒙版进行归一化可能会使原始蒙版之间的方差更小。
假设 CNN 在大量高质量数据上进行训练,它们通常对不同的背景非常稳健。所以我猜想使用掩码和 ROI 方法之间的区别不会很大。不管你使用哪种方法,你都需要标准化你提供给 CNN 的图像的大小。
我实现了一些手势识别软件,遇到了类似的问题。我可以只使用原始的、未处理的 ROI,或者我可以使用过滤掉大部分背景的预处理版本。我基本上尝试了两种方法并比较了模型的准确性。就我而言,我能够从预处理图像中获得稍微更好的结果。另一方面,我的图像中的背景更加复杂和多变。无论如何,我的建议是建立一个可靠的机制来测试你的模型的准确性并进行实验,看看什么最有效。
老实说,最重要的是为每个class收集很多个好样本。就我而言,我一直看到实质性的改进,直到我达到每个 class 大约 5000 张图像。由于收集大量数据需要很长时间,因此最好捕获并存储原始的全尺寸图像以及实际数据收集中涉及的任何元数据,以便您可以尝试不同的方法(掩蔽与 ROI ,不同的输入图像大小,其他预处理,如直方图归一化等)而无需收集新数据。