我正在尝试使用Tensorflow训练模型来检测基本形状,如圆形,方形,矩形等。什么是最好的输入数据集?要直接加载形状或使用OpenCV查找图像边缘并仅加载边缘图像。
我们也可以使用OpenCV检测形状。使用机器学习会有什么附加优势。
用于训练模型的示例图像。
答案 0 :(得分:4)
我建议从本指南开始进行分类,而不是对象检测: https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0
分类是针对一张图片的一个唯一标记(99%正方形,1%圆圈)。对象检测用于对图片内的多个对象进行分类(x_min = 3,y_min = 8,x_max = 20,y_max30,99%square)。您的案例看起来更像是一个分类问题。
您不需要像指南那样完整的Docker安装。 如果你的系统上有Python 3.6,你可以这样做:
pip install tensorflow
然后跳到" 4。检索图像"
我必须自己尝试一下,所以我使用附加组件'#34; fatkun批量下载图像"从Google下载了前100张正方形和圆圈图片。来自Chrome网上应用店。
在我的前10次测试中,我的准确率在92,0%(0.992 ..)和99,58%之间。如果您的示例比Google的许多不同图片更加统一,您可能会获得更好的结果。
答案 1 :(得分:2)
您可能想要在张量流中检出目标检测。 https://github.com/tensorflow/models/tree/master/object_detection
这里有一个预先训练过的模型 http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_11_06_2017.tar.gz
使用神经网络进行检测的一个潜在优势是它可以减少要计算的cpu周期。这在移动设备上很有用。 例如 - 霍夫变换https://en.wikipedia.org/wiki/Hough_transform的计算成本太高,但如果使用卷积神经网络,则会为实时图像处理开辟更多的可能性。
要实际训练新模型 - 请参阅此处https://www.tensorflow.org/tutorials/deep_cnn