计算机视觉(Computer Vision)对我来说也算是老朋友了,我最开始接触人工智能就是计算机视觉相关的知识。最近受益于老大每日带我去旁听的算法例会,又加上看了徐立(商汤)的《计算机视觉的完整链条,从成像到早期视觉再到识别理解》,发现很多信息,当时不觉得有什么,现在想想,每一步都是有意义的。 今天,我会根据亲身经理的项目案例和平时所学,从产品实践的角度,谈谈计算机视觉。 一、前言 计算机视觉(computer vision)是使用计算机以及相关设备对生物视觉的一种模拟。它主要任务是通过对采集的图片或视频进行处理以获得相应场景的三维信息。 在徐立的分享中,将计算机视觉的完整链条分为了三部分: 成像(image) 早期视觉(early vision) 识别理解(Recognition) 本文也将根据徐立对整个链条的三部分分类,分别用实际例子结合谈谈产品在三部分中可以关注的内容。 二、成像(image) 成像就是模拟的相机原理,就是在解决怎样把拍摄照片的质量进行提升的问题。 我们在实际工业运用中,经常发现实际数据和实验室数据相差过大,实验数据的质量远远差于实验室数据。更甚者在最开始训练模型的时候,我们会发现实验室模型在实际场景毫无效用。 经过多次试验测试,我们发现影响图像质量的因素大概有以下几类: 光照影响 过暗或过亮等非正常光照环境,会对模型的效果产生很大干扰。在解决光照影响这个问题上,我想可以通过两种方式: 1)从产品角度控制: a.在用户可以更换环境的前提下(比如手机自拍等),可语音/界面提示用户目前环境不理想,建议换一个环境。 b.用户不能控制更换环境的情况下(比如人脸识别、车辆识别等摄像头固定的场景),只能通过调试硬件设施弥补这个问题。 夜晚:在工业上我们碰到过曝或者过暗的情况更多都是在晚上,由于摄像头在晚上会自动切换到黑夜场景(从图片上看就是从彩色切换为黑白),因此在晚上强光下(例如车灯照射)图像就会过曝,这样的情况我们可以通过强制设置摄像头环境为白天(图像为彩色)来避免。过暗的情况从节省成本角度看,我们可以在摄像头旁边增加一个光线发散、功率不高的灯来弥补。当然这两个问题也可以通过购买高质量的摄像头解决,但这样做也意味着更高的成本。 白日:白天也会出现光线过亮的情况,这种情况可以考虑用滤光片等等。 2)算法角度控制 用算法将图片进行处理,可以将图片恢复得让人眼看清的程度。徐立在文中举例了这样一张图片:
这张图片从暗到明,经过算法的处理我们可以显而易见地观察到整个图片的内容。这个办法非常灵活,但也对公司的算法提出了更高的要求。我们知道每一次算法的过滤时间是非常重要的,如果在对时间要求非常严格的场景(人脸识别、车辆识别),这样在识别之前还要对图片进行转化,无疑是增加了输出结果的时间。技术实力不那么强的公司可能是需要权衡一下的。 模糊(blur) 模糊也是工业中经常遇到且令人十分头痛的问题。这里我们先将模糊分下类: 运动模糊:人体移动、车辆移动 对焦模糊:摄像头距离等因素构成,类似近视眼,图像中低频存在,高频缺失。所以需要用算法设法补齐高频部分。 低分辨率差值模糊:小图放大等,图像中低频存在,高频缺失。所以需要用算法设法补齐高频部分。 混合模糊:多种模糊类型共同存在 对于模糊产品上能控制的场景比较少,仅针对于第一种运动模糊且产品和用户有交互的情况下才能做到。其他类型的模糊均需要采用算法进行处理。 我们发现大多数模型(包括face++等技术比较前沿公司的模型),也会出现大量正常图像被判为模糊。从算法角度讲这可能不是很理想,但从工业角度讲这是可以被接受的,被误判为模糊图像的正常图像会被过滤掉或者经过算法处理后再识别,这对用户来说不会造成使用上的不适。而且我们也能保证阈值以上的图都是正常图片,对模型训练来说也是有利的。所以,产品需要关注的精确率和召回率在某种特定情况下可以降低要求。 (责任编辑:admin) |