2021SC@SDUSC

PaddleDetection 是PaddlePaddle推出的物体检测统一框架。支持现有的RCNN、SSD、YOLO等系列模型、支持 ResNet、ResNet-VD、ResNeXt、ResNeXt-VD、SENet、MobileNet、DarkNet等主干网络。针对不同的业务场景(性能、目标大小、准确率等)可以调用框架下的不同参数(或者是参数文件),实现任务。相比于tensorflow的Object_Detection,优势之一就是将YOLO这一目标检测的快速算法融合到了框架下。

项目简介:

第一步:安装paddle

利用anaconda创建一个名字叫做anaconda的paddle环境(备注:下文中命令提示窗口出现的(paddle)是指该项目环境的名称叫做paddle)具体安装方式见如下链接

https://zhuanlan.zhihu/p/67830286

第二步:安装COCO-API

pip install Cython
pip install git+https://github/philferriere/cocoapi.git#subdirectory=PythonAPI

第三步:选择一个文件夹,下载PaddleDetection

第一种方式:直接从github官网上进行下载https://github/PaddlePaddle/PaddleDetection

第二种方式:使用git进行下载:git clone 

第四步:安装所需的Python其他依赖库

依赖库文档在requirements.txt中给出,可使用pip install -r requirements.txt,如下图所示是requirements.txt文档中的内容。

在下图所示内容中打“cmd”,然后出现在该路径的命令提示符。

激活环境,并且 pip install -r requirements.txt 

然后运行

当显示Successfully…… ,基本上表示安装完成了,具体是否成功,下一步的测试验证

第五步:确认测试通过 

set PYTHONPATH=`pwd`:$PYTHONPATH
python ppdet/modeling/tests/test_architectures.py  ###备注:在paddle自带的文档中为export PYTHONPATH=`pwd`:$PYTHONPATH
export是linux下的用法,在windows下将exoprt改成set

但是发现运行报错,报错内容如下:

错误提示发现缺少“ppdet”这个模块,ppdet(其实就是paddle detection的一个缩写),但是我们在项目的路径里面可以发现有这个模块,原因就是,我们的代码所在的路径无法读取到该文件下的代码,因此,我们需要在代码中进行改进一下。

找到 ppdet/modeling/tests/test_architectures.py这个文件,然后添加红框所示的代码。备注,第二个红框里面的路径是我的项目路径

出现如图所示的代码,表示运行成功

 

至此,所有的运行环境已经配置成功。

小组分工:  

我负责YOLO v4模型相关问题的研究

YOLO v4模型:

简介

YOLO v4的Paddle实现版本,要求使用PaddlePaddle2.0.0及以上版本或适当的develop版本

目前转换了darknet中YOLO v4的权重,可以直接对图片进行预测,在test-dev2019中精度为43.5%。另外,支持VOC数据集上finetune,精度达到85.5%

目前支持YOLO v4的多个模块:

  • mish激活函数
  • PAN模块
  • SPP模块
  • ciou loss
  • label_smooth
  • grid_sensitive

目前支持YOLO系列的Anchor聚类算法

python tools/anchor_cluster.py -c ${config} -m ${method} -s ${size}

主要参数配置参考下表 | 参数 | 用途 | 默认值 | 备注 | |:------:|:------:|:------:|:------:| | -c/--config | 模型的配置文件 | 无默认值 | 必须指定 | | -n/--n | 聚类的簇数 | 9 | Anchor的数目 | | -s/--size | 图片的输入尺寸 | None | 若指定,则使用指定的尺寸,如果不指定, 则尝试从配置文件中读取图片尺寸 | | -m/--method | 使用的Anchor聚类方法 | v2 | 目前只支持yolov2/v5的聚类算法 | | -i/--iters | kmeans聚类算法的迭代次数 | 1000 | kmeans算法收敛或者达到迭代次数后终止 | | -gi/--gen_iters | 遗传算法的迭代次数 | 1000 | 该参数只用于yolov5的Anchor聚类算法 | | -t/--thresh| Anchor尺度的阈值 | 0.25 | 该参数只用于yolov5的Anchor聚类算法 |

模型库

下表中展示了当前支持的网络结构。

GPU个数测试集骨干网络精度模型下载配置文件
YOLO v4-test-dev2019CSPDarkNet5343.5下载链接配置文件
YOLO v4 VOC2VOC2007CSPDarkNet5385.5下载链接配置文件

注意:

  • 由于原版YOLO v4使用coco trainval2014进行训练,训练样本中包含部分评估样本,若使用val集会导致精度虚高,因此使用coco test集对模型进行评估。
  • YOLO v4模型仅支持coco test集评估和图片预测,由于test集不包含目标框的真实标注,评估时会将预测结果保存在json文件中,请将结果提交至cocodataset上查看最终精度指标。
  • coco测试集使用test2017,下载请参考coco2017

 

 

更多推荐

PaddleDetection项目的部署与分工