Skip to content

Windxy/YOLOv4-Based-on-PaddleDetection

Repository files navigation

YOLOv4-Based-on-PaddleDetection

一、说明

YOLOv4

论文链接:https://arxiv.org/pdf/2004.10934v1.pdf

作为YOLO系列经典检测网络,YOLOv4继承了YOLOv3的优势,总结了单阶段网络可以分为主干backbone、颈部neck和头部head三个部分、同时引入了大量的训练技巧、新的检测方案和损失方案

one-stage

YOLOv4由主干网络CSPDarkNet53、颈部网络SPP和PANet、YOLOv3的头部网络组成,如下图所示

YOLOv4

本项目基于AIStudioPaddleDetection开源框架复现了YOLOv4。在COCO2017数据集上进行训练,并在COCO-test2017数据集进行测试,最终测试结果达到mAP=41.7%

下载预训练权重,可以通过两种方式进行获取

cp data/data106469/yolov4_cspdarknet.pdparams work/pretrain_model

COCO2017数据集

AIStudio:https://aistudio.baidu.com/aistudio/datasetdetail/7122

二、步骤

step0.创建AIStudio环境

paddle选用2.0以上版本

GPU选用TeslaV100 32G及以上

数据集选用COCO2017数据集和训练好的权重(可在创建项目中添加数据集搜索选择)

step1.克隆本项目到work目录下

cd ~/work
git clone https://github.com/Windxy/YOLOv4-Based-on-PaddleDetection.git
cd ~

step2.安装pycocotools

pip install pycocotools

step3.解压数据集

cd ~/data/data7122
unzip ann*.zip
unzip val*.zip
unzip image_info*.zip
unzip train*.zip
unzip test*.zip
cd ~/w

step4.将data7122重命名为coco

mv /home/aistudio/data/data7122 /home/aistudio/data/coco 

step5.训练 and 评估

python PaddleDetection/tools/train.py -c yolov4_cspdarknet_coco.yml --eval -o use_gpu=true

step6.评估

python PaddleDetection/tools/eval.py -c yolov4_cspdarknet_coco.yml -o use_gpu=true

step7-1.测试

python PaddleDetection/tools/eval.py -c yolov4_cspdarknet_coco_test.yml -o use_gpu=true

step7-2.上传官网进行测试评估

1.将测试集测试结果得到的bbox.json进行zip打包
2.进入https://competitions.codalab.org/competitions/20794#participate,注册并submit打包后的zip文件
3.下载输出结果

step8.推理测试自己的图片

python PaddleDetection/tools/infer.py -c yolov4_cspdarknet_coco_test.yml -o use_gpu=true --infer_dir=自己图片的目录

三、测试结果

官网评测结果

进入官网https://competitions.codalab.org/competitions/20794#participate

注册并submit打包后的zip文件(已打包好的zip文件链接:https://pan.baidu.com/s/1HE7Krq0B6_goIsm-nVf2lA 提取码:b9n9 )

测试后文件存在coco_test2017_output目录下

 Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.417
 Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.644
 Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.453
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.247
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.456
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.513
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.331
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.531
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.560
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.374
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.610
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.697

单张图片测试结果

测试图片

结果

About

YOLOv4 based on PaddleDetection

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published