pytorchyolov4训练_PyTorch版YOLOv4更新了,不仅适用于自定义数据集,还集成了注意力和MobileNet...

研究人员在GitHub上发布了一个基于PyTorch的YOLOv4实现,该版本基于AlexeyAB/darknet,并在PASCAL VOC和COCO数据集上进行了训练。此版本还包括SEnet和CBAM等注意力方法,以及对MobileNetV2和V3的支持。项目提供了详细的训练和评估指南,支持自定义数据集的训练和检测。
摘要由CSDN通过智能技术生成

距离 YOLO v4 的推出,已经过去 5 个多月。YOLO 框架采用 C 语言作为底层代码,这对于惯用 Python 的研究者来说,实在是有点不友好。因此网上出现了很多基于各种深度学习框架的 YOLO 复现版本。近日,就有研究者在 GitHub 上更新了基于 PyTorch 的 YOLOv4。

从今年 4 月 YOLOv4 发布后,对于这个目标检测框架,问的最多的问题或许就是:「有没有同学复现 YOLOv4 的, 可以交流一下么」。由于原版 YOLO 使用 C 语言进行编程,光凭这一点就让不少同学望而却步。网上有很多基于 TF/Keras 和 Caffe 等的复现版本,但不少项目只给了代码,并没有给出模型在 COCO、PASCAL VOC 数据集上的训练结果。近日,有研究者在 GitHub 上开源了一个项目:基于 PyTorch 深度学习框架的 YOLOv4 复现版本,该版本基于 YOLOv4 作者给出的实现 AlexeyAB/darknet,并在 PASCAL VOC、COCO 和自定义数据集上运行。除此以外,该项目还向主干网络添加了一些有用的注意力方法,并实现了 mobilenetv2-YOLOV4 和 mobilenetv3-YOLOV4。attentive YOLOv4该项目向主干网络添加了一些注意力方法,如 SEnet、CBAM。

SEnet (CVPR 2017)

CBAM (CVPR 2018)mobilenet YOLOv4该研究还实现了 mobilenetv2-YOLOV4 和 mobilenetv3-YOLOV4(只需更改 config/yolov4_config.py 中的 MODEL_TYPE 即可)。下表展示了 mobilenetv2-YOLOV4 的性能结果:

现在我们来看该项目的详细内容和要求。环境要求Nvida GeForce RTX 2080TI

CUDA10.0

CUDNN7.0

windows 或 linux 系统

python 3.6特性DO-Conv (https://arxiv.org/abs/2006.12030) (torch>=1.2)

Attention

fp_16 training

Mish

Custom data

Data Augment (RandomHorizontalFlip, RandomCrop, RandomAffine, Resize)

Multi-scale Training (320 to 640)

focal loss

CIOU

Label smooth

Mixup

cosine lr安装依赖项运行脚本安装依赖项。你需要提供 conda 安装路径(例如 ~/anaconda3)以及所创建 conda 环境的名称(此处为 YOLOv4-PyTorch)。pip3 install -r requirements.txt --user需要注意的是:安装脚本已在 Ubuntu 18.04 和 Window 10 系统上进行过测试。如果出现问题,请查看详细的安装说明:https://github.com/argusswift/YOLOv4-PyTorch/blob/master/INSTALL.md。准备工作1. git 复制 YOLOv4 库准备工作的第一步是复制 YOLOv4。git clone github.com/argusswift/YOLOv4-PyTorch.git然后更新配置文件「config/yolov4_config.py」中「PROJECT_PATH」。2. 数据集准备该项目准备了 Pascal VOC 和 MSCOCO 2017 数据集。其中 PascalVOC 数据集包括 VOC 2012_trainval、VOC 2007_trainval 和 VOC2007_test,MSCOCO 2017 数据集包括 train2017_img、train2017_ann、val2017_img、val2017_ann、test2017_img、test2017_list。PascalVOC 数据集下载命令:# Download the data.

cd $HOME/data

wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar

# Extract the data.

tar -xvf VOCtrainval_11-May-2012.tar

tar -xvf VOCtrainval_06-Nov-2007.tar

tar -xvf VOCtest_06-Nov-2007.tarMSCOCO 2017 数据集下载命令:#step1: download the following data and annotation

2017 Train images [118K/18GB]

2017 Val images [5K/1GB]2017 Test images [41K/6GB]

2017 Train/Val annotations [241MB]

#step2: arrange the data to the following structure

COCO

---train

---test

---val

---annotations在数据集下载好后,需要进行以下操作:将数据集放入目录,更新 config/yolov4_config.py 中的 DATA_PATH 参数。

(对于 COCO 数据集)使用 coco_to_voc.py 将 COCO 数据类型转换为 VOC 数据类型。

转换数据格式:使用 utils/voc.py 或 utils/coco.py 将 pascal voc *.xml 格式(或 COCO *.json 格式)转换为 *.txt 格式(Image_path xmin0,ymin0,xmax0,ymax0,class0 xmin1,ymin1,xmax1,ymax1,class1 ...)。3. 下载权重文件2)Mobilenet 预训练权重:3)在根目录下创建 weight 文件夹,将下载好的权重文件放到 weight / 目录下。4)训练时在 config/yolov4_config.py 中设置 MODEL_TYPE。4. 转换成自定义数据集(基于自定义数据集进行训练)1)将自定义数据集的图片放入 JPEGImages 文件夹,将注释文件放入 Annotations 文件夹。2)使用 xml_to_txt.py 文件将训练和测试文件列表写入 ImageSets/Main/*.txt。3)转换数据格式:使用 utils/voc.py 或 utils/coco.py 将 pascal voc *.xml 格式(或 COCO *.json 格式)转换为 *.txt 格式(Image_path xmin0,ymin0,xmax0,ymax0,class0 xmin1,ymin1,xmax1,ymax1,class1 ...)。训练运行以下命令开始训练,详情参见 config / yolov4_config.py。训练时应将 DATA_TYPE 设置为 VOC 或 COCO。CUDA_VISIBLE_DEVICES=0 nohup python -u train.py --weight_path weight/yolov4.weights --gpu_id 0 > nohup.log 2>&1 &它还支持 resume 训练,添加 --resume,使用以下命令即可自动加载 last.pt。CUDA_VISIBLE_DEVICES=0 nohup python -u train.py --weight_path weight/last.pt --gpu_id 0 > nohup.log 2>&1 &检测修改检测图像路径:DATA_TEST=/path/to/your/test_data# your own images。for VOC dataset:

CUDA_VISIBLE_DEVICES=0 python3 eval_voc.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode det

for COCO dataset:

CUDA_VISIBLE_DEVICES=0 python3 eval_coco.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode det结果可以在 output / 中查看,如下所示:

评估(Pascal VOC 数据集)修改评估数据集路径:DATA_PATH=/path/to/your/test_data # your own imagesfor VOC dataset:

CUDA_VISIBLE_DEVICES=0 python3 eval_voc.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval -

评估(COCO 数据集)修改评估数据集路径:DATA_PATH=/path/to/your/test_data # your own imagesCUDA_VISIBLE_DEVICES=0 python3 eval_coco.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode val

type=bbox

Running per image evaluation... DONE (t=0.34s).

Accumulating evaluation results... DONE (t=0.08s).

Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.438

Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.607

Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.469

Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.253

Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.486

Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.567

Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.342

Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.571

Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.632

Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.458

Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.691

Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.790可视化热图在 val_voc.py 中设置 showatt=Ture,网络即可输出热图。for VOC dataset:

CUDA_VISIBLE_DEVICES=0 python3 eval_voc.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval

for COCO dataset:

CUDA_VISIBLE_DEVICES=0 python3 eval_coco.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval在 output / 中可以查看热图,如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值