第五章 深度学习
八、目标检测
4. 视频关键帧处理
例如,需要从一台晚会中抹去某个违法明星的视频,如果视频每秒25帧,采用逐帧扫描,每处理一帧需要2秒,则需要的处理时间为:
时间 = 4 * 3600 * 25 * 2
共需要200个小时才能处理完成。所以就需要借助关键帧来提高处理速度,降低目标检测复杂度。
4.1 什么是关键帧
关键帧(I-Frame):
-
关键帧是包含该段视频中主要信息的帧
-
关键帧在压缩成AVI, MP4, MOV等格式时,该帧会完全保留
-
视频解码时只需要本帧数据,不需要从前一帧、后一帧获取数据
前向差别帧(P-Frame)
- 当前帧与前一个I-Frame或前一个P-Frame之间的差别,可以理解为与前一帧的数据偏移值
- P-Frame没有完整数据画面,只有与前一帧的差别信息,解码时需要从前一帧获取数据
双向差别帧(B-Frame)
- 记录本帧与前一帧、后一帧的差别
- 解码时需要获取前一帧、后一帧的数据
- 压缩后的视频体积小,但编解码计算较慢
4.2 如何提取关键帧
可以使用FFMPEG工具提取视频中的关键帧。
也可以使用FFMPEG工具进行视频截取。
5. 目标检测数据集
5.1 PASCAL VOC
VOC数据集是目标检测经常用的一个数据集,自2005年起每年举办一次比赛,最开始只有4类,到2007年扩充为20个类,共有两个常用的版本:2007和2012。学术界常用5k的train/val 2007和16k的train/val 2012作为训练集,test 2007作为测试集,用10k的train/val 2007+test 2007和16k的train/val 2012作为训练集,test2012作为测试集,分别汇报结果。
5.2 MS COCO
COCO数据集是微软团队发布的一个可以用来图像recognition+segmentation+captioning 数据集,该数据集收集了大量包含常见物体的日常场景图片,并提供像素级的实例标注以更精确地评估检测和分割算法的效果,致力于推动场景理解的研究进展。依托这一数据集,每年举办一次比赛,现已涵盖检测、分割、关键点识别、注释等机器视觉的中心任务,是继ImageNet Challenge以来最有影响力的学术竞赛之一。
相比ImageNet,COCO更加偏好目标与其场景共同出现的图片,即non-iconic images。这样的图片能够反映视觉上的语义,更符合图像理解的任务要求。而相对的iconic images则更适合浅语义的图像分类等任务。
COCO的检测任务共含有80个类,在2014年发布的数据规模分train/val/test分别为80k/40k/40k,学术界较为通用的划分是使用train和35k的val子集作为训练集(trainval35k),使用剩余的val作为测试集(minival),同时向官方的evaluation server提交结果(test-dev)。除此之外,COCO官方也保留一部分test数据作为比赛的评测集。
5.3 Google Open Image
Open Image是谷歌团队发布的数据集。最新发布的Open Images V4包含190万图像、600个种类,1540万个bounding-box标注,是当前最大的带物体位置标注信息的数据集。这些边界框大部分都是由专业注释人员手动绘制的,确保了它们的准确性和一致性。另外,这些图像是非常多样化的,并且通常包含有多个对象的复杂场景(平均每个图像 8 个)。
5.4 ImageNet
ImageNet是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库。ImageNet是美国斯坦福的计算机科学家,模拟人类的识别系统建立的。能够从图片识别物体。ImageNet数据集文档详细,有专门的团队维护,使用非常方便,在计算机视觉领域研究论文中应用非常广,几乎成为了目前深度学习图像领域算法性能检验的“标准”数据集。ImageNet数据集有1400多万幅图片,涵盖2万多个类别;其中有超过百万的图片有明确的类别标注和图像中物体位置的标注。
6. 常用图像标注工具
6.1 LabelImg
1)LabelImg 是一款开源的图像标注工具,标签可用于分类和目标检测,它是用 Python 编写的,并使用Qt作为其图形界面,简单好用。注释以 PASCAL VOC 格式保存为 XML 文件,这是 ImageNet 使用的格式。 此外,它还支持 COCO 数据集格式。
2)前置条件:安装Python3以上版本,安装Pyqt5。PyQt5安装指令如下:
pip3 install --user PyQt5==5.14.1 --index-url https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host https://pypi.tuna.tsinghua.edu.cn
3)安装方法:
第一步:下载安装包
第二步:使用Pycharm打开项目,运行labelImg.py文件;或直接运行labelImg.py文件
(见专栏 -> 全栈资料包 -> 资源包/03_dl)
4)常见错误处理:
报错:ModuleNotFoundError: No module named ‘libs.resources’
- 处理方式:
- 将python下scripts添加到环境变量path中
- 在labelImg目录下执行命令:pyrcc5 -o resources.py resources.qrc
- 将生成的resources.py拷贝到labelImg/libs/下
- 执行labelImg.py程序
6.2 Labelme
labelme 是一款开源的图像/视频标注工具,标签可用于目标检测、分割和分类。灵感是来自于 MIT 开源的一款标注工具 Labelme。Labelme具有的特点是:
- 支持图像的标注的组件有:矩形框,多边形,圆,线,点(rectangle, polygons, circle, lines, points)
- 支持视频标注
- GUI 自定义
- 支持导出 VOC 格式用于 semantic/instance segmentation
- 支出导出 COCO 格式用于 instance segmentation
6.3 Labelbox
Labelbox 是一家为机器学习应用程序创建、管理和维护数据集的服务提供商,其中包含一款部分免费的数据标签工具,包含图像分类和分割,文本,音频和视频注释的接口,其中图像视频标注具有的功能如下:
- 可用于标注的组件有:矩形框,多边形,线,点,画笔,超像素等(bounding box, polygons, lines, points,brush, subpixels)
- 标签可用于分类,分割,目标检测等
- 以 JSON / CSV / WKT / COCO / Pascal VOC 等格式导出数据
- 支持 Tiled Imagery (Maps)
- 支持视频标注 (快要更新)
6.4 RectLabel
RectLabel 是一款在线免费图像标注工具,标签可用于目标检测、分割和分类。具有的功能或特点:
- 可用的组件:矩形框,多边形,三次贝塞尔曲线,直线和点,画笔,超像素
- 可只标记整张图像而不绘制
- 可使用画笔和超像素
- 导出为YOLO,KITTI,COCO JSON和CSV格式
- 以PASCAL VOC XML格式读写
- 使用Core ML模型自动标记图像
- 将视频转换为图像帧
6.5 CVAT
CVAT 是一款开源的基于网络的交互式视频/图像标注工具,是对加州视频标注工具(Video Annotation Tool) 项目的重新设计和实现。OpenCV团队正在使用该工具来标注不同属性的数百万个对象,许多 UI 和 UX 的决策都基于专业数据标注团队的反馈。具有的功能
- 关键帧之间的边界框插值
- 自动标注(使用TensorFlow OD API 和 Intel OpenVINO IR格式的深度学习模型)
6.6 VIA
VGG Image Annotator(VIA)是一款简单独立的手动注释软件,适用于图像,音频和视频。 VIA 在 Web 浏览器中运行,不需要任何安装或设置。 页面可在大多数现代Web浏览器中作为离线应用程序运行。
- 支持标注的区域组件有:矩形,圆形,椭圆形,多边形,点和折线
7. 附录:术语表
英文全写 | 英文简写 | 中文名称 |
---|---|---|
one stage | 一阶段检测 | |
two stage | 两阶段检测 | |
region proposal | RP | 候选区域(一个有可能包含待检物体的预选框) |
bounding boxes | bb | 候选框 |
Non-Maximum Suppression | NMS | 非极大值抑制 |
selective search | SS | 选择搜索 |
Regions with CNN features | R-CNN | |
region of interest | RoI | 感兴趣区域(候选区域) |
You Only Look Once | YOLO | |
frame per second | fps | 帧每秒 |
High Resolution Classifier | 高分辨率分类器 | |
Batch Normalization | BN | 批量正则化 |
Mean Average Precision | mAP | 平均精度均值 |
Intersection over Union | IOU | 交并比(“预测的边框” 和 “真实的边框” 的交集和并集的比值) |
Fine-Grained Features | 细粒度特征 | |
Feature Pyramid Network | FPN | 特征金字塔网络 |