PaddleDetection学习(一)
PaddleDetection学习(一)安装GitHub地址:https://github.com/PaddlePaddle/PaddleDetection1、安装PaddlePaddle框架# CUDA 10.1python -m pip install paddlepaddle-gpu==2.2.0.post101 -f https://www.paddlepaddle.org.cn/whl/
PaddleDetection学习(一)
安装
GitHub地址:https://github.com/PaddlePaddle/PaddleDetection
1、安装PaddlePaddle框架
# CUDA 10.1
python -m pip install paddlepaddle-gpu==2.2.0.post101 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
# CPU
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
2、安装PaddleDetection
# 克隆PaddleDetection仓库
git clone https://github.com/PaddlePaddle/PaddleDetection.git
# 安装依赖
cd PaddleDetection
pip install -r requirements.txt
# 编译安装paddledet
python setup.py install
安装后验证:
python ppdet/modeling/tests/test_architectures.py
如若出现问题:libSM.so.6: cannot open shared object file: No such file or directory
解决方案:
apt-get install libsm6 # 安装对应软件包
通过验证会打印如下信息:
3、案例体验
通过官方给定的Demo进行体验:
export CUDA_VISIBLE_DEVICES=0
python tools/infer.py -c configs/ppyolo/ppyolo_r50vd_dcn_1x_coco.yml -o use_gpu=true weights=https://paddledet.bj.bcebos.com/models/ppyolo_r50vd_dcn_1x_coco.pdparams --infer_img=demo/000000014439.jpg
预测结果在output目录下:
PaddleDetection特点
一、模型丰富
提供丰富的模型套件,场景包含目标检测、实力分割、人脸检测、追踪等,并且提供相对应的预训练模型,涵盖了多种全球竞赛冠军方案;
套件结构图:
二、简洁易用
1、动态图开发,可灵活调试代码;
2、模块化设计,使用配置文件即可修改超参数,使用简单方便;
产业级目标检测算法
在实际落地场景中,目标检测方案有以下问题:
- 模型选用及开发:高精度or轻量化,如何快速改进并训练新的数据集;
- 模型优化:如何提升精度,进行版本迭代;
- 模型部署:服务器or端侧部署,
PP-YOLO
一、YOLO最根本原理:
目标检测实质是通过滑窗的方法找到目标对应位置,YOYO用CNN实现滑窗的作用:
二、YOLOV3的简单结构图:
三、PP-YOLO简介:
V2版本在COCO2017数据集上的精度达到49.5%,在640*640的输入尺寸下,FPS达到68.9;PP-YOLOV2在同等速度下,精度已经超越YOLOV5;
四、PP-YOLO改进点
1、MixUP数据增强:将两张图像线性相加来平滑数据集;
2、Backbone的替换:DarkNet53 —> Paddle分类中的ResNet50(用好的预训练模型);
3、Backbone中添加DCN,原理是让参与计算的点集中在物体上,涨精度但会掉一点点速度;
4、Neck部分加入SPP,获得不同的感受野,增加了一点参数;
5、Neck部分加入Coordconv,由于Conv做one-hot转坐标任务差,所以加入坐标信息;
6、Neck加入PAN,增强Neck部分的特征融合能力;
7、Neck加入MISH激活函数,希望处处平滑,<0处也有值;
8、Loss部分加入IOU Loss,定位时xywh的loss一同计算,公式1-IOU的平方;
9、Loss部分加入IoU Aware Branch,也就是加多了一个分支来预测IOU;
10、加指数滑动平均EMA,平均一下更容易得到最优解;
11、SoftNMS的并行处理版本,就算IOU很大,也不直接抑制掉,而是降分;
12、调大一定Batch后调大Input size,Batch到一定值后已经稳定训练,调大Input size对小物体好;
关于PP-YOLO2的模型使用案例,可参考官方教程:https://aistudio.baidu.com/aistudio/projectdetail/3200646?forkThirdPart=1
总结
Paddle是百度自研的一款框架,在当前很场景中已经有很好的应用;不管是目标检测、NLP、OCR,都在工业界能简单快速的应用;虽然大部分项目还是用Pytorch、Tensorflow比较多,但Paddle也是不比这两者差的一个框架;
更多推荐
所有评论(0)