我正在尝试为特定用例构建ML模型。我已经阅读了各种不同的库,并试图训练我自己的分类器,但我觉得我所做的并不是很正确 - 对象检测的设置似乎都基于这个想法您检测到的对象可以包含大量表单,因此培训方法旨在将其考虑在内。我的用例与此不同。
我想要识别静态的平面图像,例如书籍封面。因此,我不需要提供它的许多图像,而只是从前面看它的样子的单个图像是有道理的。我想训练一个ML模型,这样我就可以在训练后向它展示那本书的封面图像,并且它会认出它。
训练后书籍封面的图像可能包括环境因素,例如不同的光照或交替的角度,但想法是如果书籍封面本身在全视图中,它应该能够被识别。 / p>
事实证明,要弄清楚这里要做什么是非常困难的。我所遇到的每一本指南都是为了对可能采取多种形式的物体进行培训而设计的。为我的目的调整这些指南并没有成功。
我尝试过使用Turi创建的非常简单的设置,对每本书的每个数据点进行培训,然后使用相同的数据进行验证,因为我显然不会这样做有一个培训和验证集。 Turi Create负责所有培训细节,显然是针对每个班级的许多示例而设计的。我觉得我在这里为了我的目的而严重修改它。经过测试,它也不适用于物体检测。
我使用OpenCV的关键点检测和最近邻匹配功能取得了一些有限的成功,但我们的想法是,它可以是更广泛的项目列表,可能是10k册,所以以这种方式对每一个进行图像比较是不切实际的。
过去一个月我一直在学习有关ML和计算机视觉的更多信息,但它肯定不是我的专业领域 - 我主要是软件开发人员。非常感谢我能得到的任何建议。
答案 0 :(得分:2)
你的问题没有开箱即用的答案(很遗憾地说),但是有一些关键领域的计算机视觉/机器学习,你会想知道如何解决这个问题。
首先:如果你真的想留在opencv和现有的库中(例如,你不希望这变成算法研究项目),我建议如下:
第二:如果上述情况不充分,您将参与更高级的研究项目。我仍然会推荐类似Hough变换或SIFT的东西,因为关键的洞察力是你应该能够找到一个非常擅长识别这个书籍封面的过滤器(或类似过滤器的对象)特别。这意味着像典型的深度学习方法这样的东西开箱即用。如果您真的想沿着这条路走下去,首先阅读数据扩充,然后阅读一次性或少数镜头学习,然后阅读转移学习。这是一条漫长的道路,所以我非常赞成我建议的第一种方法。
答案 1 :(得分:1)
以下答案可能会帮助您使用卷积神经网络(CNN)来解决/解决问题。请仔细阅读这些videos以了解有关该主题的更多信息。
目标:识别平面图像(例如:书籍封面)
训练集创建:您的训练集必须有正面和负面图像,其中正面图像是包含书籍封面的图像,而负面图像是不包含书籍封面的图像。
正面样本应包含,书籍封面图像模糊,相对于相机的不同位置,以不同角度倾斜,具有不同背景,不同光照等(无论哪个图像要返回为正)< / p>
负片样本应包含,图片没有书籍封面,只有背景等。
您也可以尝试手动创建这些数据集。
标签:
目前尚不清楚是否要找到书籍封面的确切坐标。 所以在这种情况下,输出应该是X_start,Y_start,Width和覆盖所有图像中书籍封面的边界框的高度。 对于没有书籍封面的图像(负样本),值为(0,0,0,0)。
另外,将图像分别标记为1s和0s分别为正负样本。
请查看这些页面以获取更多信息: