计算机视觉产业落地的难点与应对

出自:百度大脑——(计算机视觉产业落地难点与应对)https://www.bilibili.com/video/BV1eB4y1T772?spm_id_from=333.999.0.0

学术研究和产业应用的区别

学术研究 产业应用
任务 1. 定义明确
2. 聚焦某一任务
3. 单一明确的评估标准
1. 开放问题
2. 系统整体设计
3. 多维度,复杂评估
数据 1. 公开数据集
2. 固定不变
3. 数据量大
1. 自定义数据集(也可以采用公开)
2. 不断迭代
3. 数据量小
算力 无硬性限制(不受到设备限制) 1. 限制硬件端部署
2. 服务器部署吞吐量要求
3. 实时性要求

产业落地难点

数据的规模和平衡性

  1. 数据的规模:

    业务数据集通常会远小于公开数据集,通常只有几百到几千张。传统的mnist,CIFAR,VOC,COCO都比业务数据集多得多,甚至ImageNet22K,YFCC100m,JFT-300M这些数据设置达到了亿级。

  2. 数据平衡性:

    理想状态:每个类别的图片数量一致

    现实状态:每个类别的图片数量基本不一致,有的设置相差很大

解决数据问题的思路

  1. 迁移学习与预训练:使得模型能够提前见到过更多的图片,加速模型的收敛。
  2. 数据增广,数据合成(OCR,GAN):使得原本数据范围得到扩张,可以看到更多的图片。
  3. 少样本学习和但样本学习(one-shot/few-shot learning)
  4. 无监督和半监督学习:使得没有标签的数据也能够被使用
  5. oversampling(过采样)/undersampling(降采样):使得数据集每个类别的数量尽可能均衡
  6. focal loss:对难易样本和不同数量类别样本的权重更加均衡一些

泛化及鲁棒性

常见的深度学习迷惑行为:

  1. paper里结果很好,实际常见不work

  2. 换了一家CT机的影像就诊断不出来了

  3. 阴天就检测不出目标了

  4. image-20211030152921369

学术界指标高,并不一定在业务场景表现就好,也许只是overfit了公开数据集

解决思路泛化性问题的思路

  1. 正则化(regularization): 确保模型在比较残缺的情况下也能学到鲁棒的特征
    1. weight decay(权重衰减)
    2. early stopping(早退)
    3. dropout/dropblok(神经失活)
  2. 数据增广
  3. domain adaptation(域自适应)

长尾及需求变化

  1. 零售,人脸等场景
    1. 类别多
    2. 新品产生(对应度量学习)
  2. 模型层面解藕
    1. detector->classifier
    2. embedding->indexer
  3. 度量学习(metric learning):提取图像的特征装进数据库中,使用图片提取的特征进入数据库中进行比对
  4. 持续学习(continual learning)
  5. 终身学习(life-long learning)

常见计算机视觉任务

图像分类

定义:输入一张图片,输出图片的类别

用途:通常作为其他任务的特征提取器(backbone)或者级联模型使用

定型选型思路:

  1. 服务器端:ResNet及其变体系列,EfficientNet系列
  2. 移动/嵌入式:MobileNet系列,ShuffleNet系列
  3. 大感受野(关键点,分割):HRNet系列,HourGlass

作为backbone时调参的注意事项:

  1. batchnorm(检测与量化)
  2. 蒸馏weight decay

图像识别

定义:输入一张图片,完成主体检测+识别过程

主体检测:快速找出图像中的一个活多个主体

度量学习:获取主体部分的图像特征

检索系统:集成Möbius 算法,高效完成向量检索

常规结构:

image-20211030154959440

目标检测

定义:输入一张图片,输出图片中物体的位置及类别

Anchor base Anchor free
One-stage Yolo,SSD FCOS,CornerNet
Tow-stage RCNN CPNDet

原来anchor free和stage是两个概念

定性选型思路:

  1. 两阶段:准确率,小目标
  2. 单阶段:速度表现
  3. Anchor free:速度,召回率

分割任务

定义:输入一张图片,输出每个像素的类别

定性选型思路:

  1. 医疗影像相关:先尝试U-Net系列

  2. 实时性要求/移动端:Fast-SCNN系列

    不知道为什么实时性这里没有使用BiseNet和STDC-Seg这种在paper上表现较好的模型。可能和之前说的,paper好不一定现实好,也有可能是因为工业界资料比较老旧了(视频是21年7月的)。也可能工业界比较求稳,上面的建议比较经得起时间考验,不过是比赛的话还是可以先试试BiseNet和STDC-Seg。

  3. 其他需求:先试试DeepLab V3+

我是否需要实例分割?Mask-RCNN/Solo

我是否需要全景分割?think again ! (请重新考虑)

产业落地项目流程拆解

部署环境—>任务映射—>数据采集—>建模迭代

部署环境要明确好自己的部署方式

数据采集和建模迭代的过程是整个落地过程最漫长的部分,这两个过程可以是相互弥补的,比如我一开始只有1000多张图片,然后训练的一个模型,后面突然多了几张图片,然后可以通过这个模型训练出来的标签进行微调,这样节省了标注成本。

部署环境

狭义部署环境

云端

1. 易于部署迭代
2. 可使用大模型,快速原型上限
3. 高延迟
4. 成本线性升高

边缘端

1. 算力限制
2. 前期开发部署成本高
3. 低延迟
4. 成本可控

广义部署环境:

其他系统模块

  1. 传感器(近视野,红外)
  2. 配套硬件(震动台,visual marker等)

流程自动化程度

  1. 全自动 vs human-in-the-loop
  2. 场景容错范围:质检,医疗,零售
  3. 信任机制的建立

问题拆解与任务映射

出入车辆身份认证:车辆识别—>车牌识别检测+OCR

优先选择低复杂度模型

单模型和多模型组合/级联的问题:

  1. 多任务训练是否干扰,后续受前置任务精度制约

  2. 时延与运算量(如何衡量多任务带来的计算量增加)

  3. 数据变化速度与维护成本(如果有新的数据进来,怎么把数据划分成连个任务的数据集)

数据采集

少量精细标记数据的作用远大于大量粗标记/无标记的数据

不同标注方式信息含量不同:分割>检测>分类

可以尝试半自动/协同标注:标注100个样本迭代一个模型,尽量人工审核

成本允许的情况下,数据多多益善

有多少人工,就有多少智能。——业界名言

图片标注原则

  1. 清晰明确的标注标准
  2. 不同标注人员标注结果需统一
  3. 标注尽可能细致
  4. 场景覆盖尽可能全面,持续迭代

模型迭代

快速起步,从0到1

一站式工具

成熟使用模型

根据需求调整结构/超参

  1. 训飞(loss突然非常大,震荡):学习率,warm up
  2. 加速:小backbone,砍channel,使用depthwise conv,插值替换deconv等
  3. 小目标:大感受野backbone,使用早期特征,使用dilated conv,调整anchor

数据迭代

  1. 结合bad case分析不断微调
  2. 一般来说加数据始终是有效的
  3. 可以多尝试增广,采样等方法
1
2
3
4
5
6
7
8
9
10
11
Dear Editor,

I feel so sorry for troubling you. I don't know whether it is an appropriate time to contact you. This is with regard to our submitted manuscript, submitted to your journal on the 2021-12-31, the title is: "STDC-MA Network for Semantic Segmentation", my manuscript ID is IPR-2021-12-0857
I have submitted the manuscript in "IET Image Processing" for almost 4 months. Usually, the review time of manuscripts in your journal is less than three months. However, we have not received the comments on our manuscript yet. Could you help check my manuscript's process and current status, please?

Thanks very much for your kindness and looking forward to hearing from you. Wish you happy every day!

Sincerely

Xiaochun Lei