我正在开发一个Ruby on Rails应用程序,我想在其中检测图像中物理对象(瓶子和食品包)的数量。
我刚刚探索了谷歌视觉API (https://cloud.google.com/vision/)来检查这是否可能。我上传了一张照片,上面有一些很酷的饮料瓶,得到了下面的回应。
{
"responses" : [
{
"labelAnnotations" : [
{
"mid" : "/m/01jwgf",
"score" : 0.77698487,
"description" : "product"
},
{
"mid" : "/m/0271t",
"score" : 0.72027034,
"description" : "drink"
},
{
"mid" : "/m/02jnhm",
"score" : 0.51373237,
"description" : "tin can"
}
]
}
]
}
我这里关心的是,它没有给出图像中可用的冷饮瓶的数量,而是返回照片中可用的对象类型。
这是可能的在谷歌视觉API或任何其他解决方案可用于此?
不幸的是,这个问题还没有完全解决。你可以使用一些目标检测算法,比如Faster RCNN和YOLO。如果它们包含在ImageNet数据集中,它们可以给你一个边界框;当然,你可以用它们来训练你自己的分类器。我推荐YOLO,它真的很容易使用,而且有很好的文档。
还可以部署DIGITS对象检测服务器,其中包含Faster RCNN。它提供了一个非常好的用户界面来使用这些模型
我做了一个简单的命令行程序,通过JRuby使用OpenCV检测人脸并将其替换为表情符号。这是一个绝对痛苦的设置,但一旦完成,它是一个美丽的写作。我还编写了一个小脚本来创建OpenCV JRuby项目,这些项目可以在shell脚本中使用所需的命令行参数执行,这减轻了设置时的大部分痛苦,如果不是全部的话。
稍后,当我在我的电脑上,我将上传项目和脚本到GitHub和链接他们在这里,如果你想要我,但现在我可以直接你到这个项目作为一个例子。
编辑
下面是JRuby OpenCV项目和脚本的链接:
JRuby OpenCV Project
项目创建脚本