摄像头的图像识别AI

本文是在当时给LG客户解释的文章基础上,脱敏了项目细节后,抽离出来通用的摄像机图像识别AI的解释说明,以作为科普解释用。

名词解释

  • 场景:指真实测试时覆盖到用户各个场景,由不同环境组成的场景,如离摄像机1m/3m/5m、白天/黑夜情况、各种姿态(坐着、躺着、站立)
  • AI引擎接口:通过网络方式,传入图片,返回图片的识别结果
  • 训练集:训练AI用的数据集合。
  • 测试集:测试AI性能用的数据集合。

图像识别AI的特点

  1. AI的局限性。AI是针对特定场景去解决特定的需求,会受限于硬件本身AI性能,摄像机支持的拍照环境,数据制约等等因素。如果数据无覆盖到的场景,针对该场景的识别能力是较差的。所以市面上AI 的F1值是没办法达到100%。
  2. 训练集。由于AI的局限性,用来训练数据是不可能做到覆盖所有场景。在AI训练过程中,场景选择上会先尽量去满足能覆盖到摄像机适用范围的常用场景。当发现有需要AI支持却没支持的场景时,我们就会想办法采集该场景数据加入AI训练集从而来提升对该场景的识别能力。然而,训练集并非越多越好,如果数据分布不均匀,容易出现因为优化了一些场景识别率而导致了另外一些场景的识别率降低的情况。因此能平均的覆盖到更多场景是最好的。
  3. 测试集。测试集的采集尽可能覆盖用户的使用场景。在这些图片素材中,常见的场景应该占绝大多数,且针对不同的场景,图片分布也要尽可能均,最终得到出来的F1值的评价才是有意义的。基于这样的场景不足和改进也才更能指导AI的优化。测试集一旦构成,该测试集的版本就应该固定,且不可变更,这样才能进行模型版本的比较。如果要新增测试集,可以单独形成一个新的测试集,进行单独评测。
  4. 测试方法。测试方法应当尽量符合用户真实使用情况。一般会分两种测试。
    • 第一种模型指标测试,即AI引擎接口测试,该测试直接通过调用AI接口去测试AI模型指标情况,该方法快速简便,一旦模型更新同样的测试集很快就能得到测试结果,并且方便和上一次的模型版本结果进行比较。这是LUMI的验证方式,也是AI业内通用的方式。
    • 第二种是端到端(end to end)测试,该测试方式主要从用户实际使用场景进行验证功能的使用情况,该功能是否达到预期,因为该场景测试无法复现,不能当做测试指标的方式。

常规AI的优化步骤

AI的优化,需要以下4个必要的步骤:

  1. 根据误识别的照片分析误识别场景(1~2天)
    • 当有一个误识别的图片或者视频给到AI团队,AI团队会去分析是什么引起的误识别或者漏识别,然后会抽象出一个需要被优化场景
  2. 根据误识别场景收集训练和测试所需的照片(时间不确定,需要根据需要被优化的场景数量决定,一般Aqara迭代用G3采集新场景需要2~3个月)
    • 最科学的数据应该是用G3采集得到的图片数据。但如果时间紧急,则退而求其次可以用网络爬虫的方式获取图片数据
  3. 根据所收集的照片对AI进行训练和测试验证(1~2周)
    • 因为有新的数据训练后,可能会导致原来识别没问题的部分识别结果降低,所以需要改变参数多次训练,看最终哪个训练效果最好。
    • 每次需要训练,我们都会集合几个场景一起训练,这样可以节省训练时间。如果每优化一个场景就训练一次,则训练的时间会被延长更多。
  4. 更新新的AI固件
    • 在保证原来识别的准确率不降低的同时,新加入的场景识别率上升的AI固件才允许被更新

图像识别的策略

AI图像识别中,除了AI本身的识别能力,一般开发设计时,也会引用一些策略应用,来辅助提升AI识别的效果。这里的应用策略,是指上报阈值的设定,判定为真的条件,或者是否设计静止物体只上报一次等等。之所以是识别效果,是因为在AI能力已经确定后,设计了不同的策略,用户的感知仍然会不同。比如阈值设定上,若阈值偏低,则用户感受到的就是产品有更高灵敏度,这样就可以保证召回率;若阈值偏高,则用户感受到的就是产品的灵敏度低,但这样就是保证了精确率。不同场景下,对于灵敏度的需求是不一样的。 

然而,在设计策略的时候,除了考虑用户场景,也要考虑设计的策略对其他的影响。比如在图像识别过程中,可能因为拍摄角度或者图像模糊等问题,会在某一帧出现误识别的情况。此时,当把判定为真的条件设计为多帧判断的应用策略,可以一定程度上规避误识别的问题(比如连续三帧可行度都是高于设定阈值,才把该结果判定为真并上报处理)。

但要注意的是,采用多帧判断的策略,至少影响会有两个方面:

  1. 设备响应时间会变长(处理一帧的时间×3+上报时间)
  2. 如果设备有跟踪功能,跟踪采取的策略是否和侦测策略一致,不一致的话用户是否能感知能接受。

除非设备每秒取帧很多,就算多帧识别用户也感知不到,否则上述情况都会引发体验问题。第一个点好理解,主要是第二个点。因为一般来说,跟踪的响应需要更加灵敏,所以一般不会用到三帧判定后才转动那么长时间,不然加上电机转动的延迟,有可能会经常跟不上画面。但如果帧率不一致,又可能出现设备跟踪转动后,却因为是误识别而没有上报。那此时,用户是否可以接受这种情况,就值得研究。这个点我们当时和客户也是有过研讨。我们经过一些调研,觉得国内用户对AI的容忍度还是比较高,可以接受上述情况。但是客户觉得韩国民众对这种不一致现象接受度会更低,可能会觉得自己的摄像头被黑客控制从而引发客诉和负面舆论。此外,在跟踪和侦测的不一致中,除了判定为真的帧数外,阈值设定也有类似的情况,因为跟踪一般阈值会低于侦测的阈值。因此对不同的国家,策略设计上也可以有所不同,从而来适应当地用户习惯。

change list
20211203--初稿
20220723--补充图像识别的策略