我有大约2000张汽车图片,大多数朝右,但也有一些朝左。
我想找到一种方法来自动标记汽车的方向(新图片会持续进来)。
我很难开始,想知道这种图像检测问题是否有特定的名称,这可能会帮助我的搜索。对象方向检测是一个专门的领域吗?
我是一名软件开发者(不经常做机器学习或图像处理),手头有大量的Azure和GCC资源,但我找不到解决这个问题的办法。Azure认知服务可以告诉我们图片中有一辆车,但不能告诉我们车的方向。
我现在需要一个好的起点来开始工作。
应该补充说明,这些图片背景都是白色的,非常清晰,示例:
回答:
感谢Venkata的评论,我们的问题是由一个糟糕的数据集引起的(朝右的图片太多而朝左的太少)。
以下是我们解决问题的步骤:
我们在Azure中设置了一个训练和预测实例(使用我们的门户中的自定义视觉认知服务)。
然后我们使用https://www.customvision.ai/来设置一切并训练模型(它非常简单)。
最后我们实际上并不需要朝左的图片,我们只用了所有朝右的图片(最终实例中大约有500张),我们把它们全部上传并标记为“右”。然后我们用Photoshop脚本镜像所有图片,并再次上传,标记为“左”。训练大约用了15分钟,我们最终得到了100%的预测分数。我们用一批不在训练集中的图片进行了测试,以确认一切正常。
我们对大量的货车/卡车图片也做了同样的事情,这些图片是从不同的角度拍摄的(汽车都是侧面照,货车都是前三分之二视角,所以我们不确定是否会取得同样的成功)。
同样,我们自己翻转图片来创建朝左的图片,所以我们只需要获取朝右的货车图片来构建整个模型。
我们最终得到了99.8%的分数,这对于我们的用例完全可以接受,现在我们可以检测所有汽车和货车的方向,甚至可以检测前三分之二视角的汽车和侧面照的货车(尽管我们只训练了侧面照的汽车和三分之二视角的货车)。
自定义视觉门户提供了API端点和密钥,现在当我们系统中检测到新图片时,它会通过API(使用我们的.net站点中的自定义图像sdk/nuget)进行处理,我们检查标签看是否需要翻转。如果需要,我们翻转它并保存回磁盘,然后它会被缓存,因此不会不断地访问API。
这真是太神奇了,我们只用了 deux天时间来研究选项,选择供应商,然后将解决方案实施到生产平台。对于ML来说,这可能是一个简单的用例,但十年前(甚至五年前),我们都无法想象事情会发展得这么快。
tldr; 如果你需要检测图像中物体是朝左还是朝右,只需获取大量朝右的示例,然后自己翻转它们来创建一个平衡的模型。显然,这依赖于物体从一侧到另一侧看起来相同。