2021SC@SDUSC
PaddleDetection简介
PaddleDetection是基于PaddlePaddle的端到端对象检测开发工具包,可以帮助开发人员在训练模型的整个开发,优化性能和推理速度以及部署模型方面提供帮助。PaddleDetection在模块化设计中提供了各种对象检测体系结构,并提供了丰富的数据增强方法,网络组件,丢失功能等。PaddleDetection支持实际项目,例如工业质量检查,遥感图像对象检测以及具有模型等实际功能的自动检查。压缩和多平台部署。 PaddleDetection提供了丰富的模型,包括100多种预先训练的模型,例如对象检测,实例分割,面部检测等。它涵盖了冠军模型,适用于云和边缘设备的实用检测模型。 PaddleDetection关键操作在C++和CUDA中实现,再加上PaddlePaddle的高效推理引擎,可以在服务器环境中轻松部署。 PaddleDetection组件设计为模块化。通过简单的配置更改即可轻松定制模型体系结构以及数据预处理管道。 借助基础的PaddlePaddle框架,PaddleDetection可以加快培训速度并减少GPU内存占用。另外,与其他框架相比,YOLOv3培训要快得多。另一个示例是Mask-RCNN(ResNet50),在多GPU训练期间,每个GPU(Tesla V100 16GB)最多容纳4张图像。
环境部署与安装
- 下载好Paddle预测库。选择win10下的cuda10版本
- 下载好PaddleDetection的代码:选择release0.4
- 将上述预测库、PaddleDetection代码、opencv放在一个文件夹中
- 打开Cmake软件,添加编译来源和编译输出。
- 编译文件来源PaddleDetection代码中deploy/cpp。作者自定义便于输出,在编译来源文件夹同一个目录下,创建了一个out文件夹。
- 点击Configure,选择x64模式
- 然后点击3 Open Project会发现我们编译生成的项目。
- 在VS下进行调试 。最先选择release模式,找到main文件夹,并右键点击–重新生成
组内分工
我负责Anchor Free系列模型相关内容的研究
Anchor Free系列模型
简介
目前主流的检测算法大体分为两类: single-stage和two-stage,其中single-stage的经典算法包括SSD, YOLO等,two-stage方法有RCNN系列模型,两大类算法在PaddleDetection Model Zoo中均有给出,它们的共同特点是先定义一系列密集的,大小不等的anchor区域,再基于这些先验区域进行分类和回归,这种方式极大的受限于anchor自身的设计。随着CornerNet的提出,涌现了多种anchor free方法,PaddleDetection也集成了一系列anchor free算法。
模型库与基线
算法细节
CornerNet-Squeeze
简介: CornerNet-Squeeze 在Cornernet基础上进行改进,预测目标框的左上角和右下角的位置,同时参考SqueezeNet和MobileNet的特点,优化了CornerNet骨干网络Hourglass-104,大幅提升了模型预测速度,相较于原版YOLO-v3,在训练精度和推理速度上都具备一定优势。
特点:
- 使用corner_pooling获取候选框左上角和右下角的位置
- 替换Hourglass-104中的residual
- block为SqueezeNet中的fire-module 替换第二层3x3卷积为3x3深度可分离卷积
FCOS
简介: FCOS是一种密集预测的anchor-free检测算法,使用RetinaNet的骨架,直接在feature map上回归目标物体的长宽,并预测物体的类别以及centerness(feature map上像素点离物体中心的偏移程度),centerness最终会作为权重来调整物体得分。
特点:
- 利用FPN结构在不同层预测不同scale的物体框,避免了同一feature map像素点处有多个物体框重叠的情况
- 通过center-ness单层分支预测当前点是否是目标中心,消除低质量误检
TTFNet
简介: TTFNet是一种用于实时目标检测且对训练时间友好的网络,对CenterNet收敛速度慢的问题进行改进,提出了利用高斯核生成训练样本的新方法,有效的消除了anchor-free head中存在的模糊性。同时简单轻量化的网络结构也易于进行任务扩展。
特点:
- 结构简单,仅需要两个head检测目标位置和大小,并且去除了耗时的后处理操作
- 训练时间短,基于DarkNet53的骨干网路,V100
8卡仅需要训练2个小时即可达到较好的模型效果
|