做图像识别有很多不同的途径。谷歌最近发布了一个使用Tensorflow的物体识别API,让计算机视觉在各方面都更进了一步。
API概述
这个API是用COCO(文本中的常见物体)数据集训练出来的。这是一个大约有30万张图像、90种最常见物体的数据集。物体的样本包括:
COCO数据集的一些物体种类
这个API提供了5种不同的模型,使用者可以通过设置不同检测边界范围来平衡运行速度和准确率。
上图中的mAP(平均精度)是检测边界框的准确率和回召率的乘积。这是一个很好的混合测度,在评价模型对目标物体的敏锐度和它是否能很好的避免虚假目标中非常好用。mAP值越高,模型的准确度越高,但运行速度会相应下降。
实测时间,主要步骤如下:
1. 下载一个打包模型(.pb-protobuf)并把它载入缓存
2. 使用内置的辅助代码来载入标签,类别,可视化工具等等。
3. 建立一个新的会话,在图片上运行模型。
总体来说步骤非常简单。而且这个API文档还提供了一些能运行这些主要步骤的Jupyter文档——链接
这个模型在实例图像上表现得相当出色(如下图):
更进一步——在视频上运行上
接下来我打算在视频上尝试这个API。使用了Python moviepy库,主要步骤如下:
对于3-4秒的片段,这个程序需要花费大概1分钟的时间来运行。但鉴于我们使用的是一个载入缓存的模型,而且没有使用GPU,我们实现的效果还是很惊艳的!很难相信只用这么一点代码,就可以以很高的准确率检测并且在很多常见物体上画出边界框。当然,我们还是能看到有一些表现有待提升。比如下面的例子。这个视频里的鸟完全没有被检测出来。
几个进一步探索这个API的想法: