编者按:发展至今,计算机视觉已经产生了不少令人惊叹的应用,但一提到
它,人们首先想到的总是人脸检测、物品识别……除去已经发展得很成熟的人脸识别技术,
我们难道只能用检测室内物品来练习技巧吗?作为一个极具工程价值的领域,也许大家应
当扩张技术应用的广度,把它和现实场景结合起来,真正做一些更接地气的尝试。
本文旨在构建一个自定义 Mask R-CNN 模型,它可以检测汽车车身的损坏区域(如下图所
示)。这背后的应用理念是,购买二手车时,消费者首先会关注车身刮擦情况,有了这个
模型,他们足不出户就能大致了解车子情况,避免被坑。而对于日常生活中的小事故,如
果用户只需上传图片就能完成车辆破损鉴定,保险公司的索赔效率也会大幅提高。
Mask R-CNN 是一个实例分割模型,它能确定图片中各个目标的位置和类别,给出像素级
预测。所谓“实例分割”,指的是对场景内的每种兴趣对象进行分割,无论它们是否属于
同一类别——比如模型可以从街景视频中识别车辆、人员等单个目标。下图是在 COCO
数据集上训练好的 Mask R-CNN,如图所示,大到每一辆车,小到单根香蕉,它都能用窗
口标出目标物品在画面中的像素位置。
不同于 Faster R-CNN 这样的经典对象检测模型,Mask R-CNN 的一个特点是可以给窗口内
表示对象轮廓的像素着色。可能有人会觉得这是个鸡肋功能,但它对自动驾驶汽车和机器
人控制意义非凡:
着色可以帮助汽车明确道路上各目标的具体像素位置,从而避免发生碰撞;
如果机器人想抓取某个目标物品,它就需要知道位置信息(如亚马逊的无人机)。
如果只是单纯想在 COCO 上训练 Mask R-CNN 模型,最简单的方法是调用 Tensorflow
Object Detection API,具体内容 Github 都有,此处不再详谈。