
前面的文章概略描述物件侦测技术对推动产业智能化至关重要,近年核心技术也由传统做法提升为深度学习,带来更多突破。
接下来我们要面对这些技术转化为产品时会遭遇怎样的问题?如何克服?特别是过去几年有幸协助开发各式应用,看到了这当中的一些盲点。
最关键的问题是正确率。正确率的描述非常笼统,一般我们会更细分为precision(P)以及recall(R),前者代表所回报的物件中有多少比例是正确的,比如说画面中框列了10辆车子,有几辆是对的;后者代表实际的物件标的中找到多少比例,例如画面中有10辆车子,实际框列了几臺。
如果P跟R都是100%的话代表这是完美的系统(没有误判、没有缺漏),一般无法达到,所以在开发过程中为了理解各个技术元件或是比较各方法间的效能,我们会画出所谓的PR curve,呈现不同情境下的P跟R。
一般而言,PR curve底下的面积越大时,代表系统的效能越好(也就是P跟R可以在较高的情境下共存)。
我们很难设计单一演算法P跟R都是完美无缺。一般在检测环境(AOI、自驾时)中比较在乎recall,所以会刻意将所有可能物件挑出,但是会造成P下降(多了假警报),解决方法是接续使用其他演算法再进行过滤,剔除误判,或是利用其他信號源再确认,比如说使用雷达信號标定可能物件之后,再使用摄影机辨认是否为车辆。
在某些应用中比较在乎precision,可以牺牲recall。例如查找系统中。寻找大量照片时,因为使用者不清楚有多少真实标的(例如:狗)存在,我们只需将有把握的标的呈现出来,并按照信心度排序,就能满足使用者的需要。一般推荐系统也是采用这样的策略,确保使用者的满意度。
物件侦测正确率不高是什么原因?在产品开发上我们当然建议使用开源軟件,降低开发时间。但即使是最前瞻的研究成果,在产品使用上还是有很多问题,其中最关键,也是大家通常忽略的是所谓「anchor」的设定。
大部分的物件侦测演算法都会使用anchor,代表几组不同长宽比的矩形,类似于物件外框的模板,用来标定物件外框。因为这些演算法(通常是学术界所开始的)都测试在公开數據集,所以anchor的设定一般都是优化这些數據集中的物件,而其中的物件大小、长宽比例、视角等与实际场域中差异相当大,所以正确率无法提升。
例如公开數據集内的人大都是站立的,而实际场域中姿态变化较多。尤其是在AOI检测上更会遇到这样的状况,通常瑕疵的长宽比跟一般常见物件的比例是不同的,或是光学文字識別(OCR)时得先框出文字范围,再行識別,而这些文字区间的长宽比差异甚大。
解决anchor在实际场域上的限制,可以试著修改或是增减需要的anchor种类。不过另一种常见的作法是直接使用anchor-free的策略(如FCOS),不使用缺省模板,在侦测时,以某个基准点,往外推估可能物件的长宽,在实际使用上有不错的效能。
公开數據集中物件样貌与场域中有很大的差异(例如人脸數據库中大都未配戴眼镜),所以实际场域的數據还是得收集,当然越多对产品效能越好。
之前我们大都使用国外的數據标注服务,近来国内社福企业结合身障人士提供类似服务,几次合作下来,也呈现不错的工作品质。另在时间与成本考量下,有其他方法可以善用未标注的數據,可以参考之前的文章。
除了使用公开數據集外,也可以善用網絡公开信息(在未侵权的情形下)收集數據。例如之前曾经看过的案例是利用美国购车(新车、二手车)网站上各种车辆的完整分类、各角度的照片等,用来增益车辆侦测的數據。
降低耗能、效率提升绝对是必要的,特别是在深度学习技术结合低耗电智能芯片呈现极佳的产业机会。有许多方法在之前文章都已经提过,混搭使用之后在各个情境下都可以达到产品的要求,可以做为参考。我们也观察到智能技术逐渐由云端落地到多样的终端产品上,智能化的资通讯设备绝对是我们产业再提升的机会。