检测图像中物理对象的数量(图像处理)



我正在开发一个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

项目创建脚本

最新更新