PyTorch版:集成注意力和MobileNet的YOLOv4

Pytorch版YOLOv4(attentive YOLOv4)(Mobilenet YOLOv4) 训练PASCAL VOC、COCO和自己的数据集 YOLOv4-pytorch 训练自己的数据集环境新特性安装依赖库准备工作下载预训练模型训练测试 注:版权所有,转载请注明出处。 环境 Nvida GeForce RTX 2070 CUDA10.0 CUDNN7.0 Windows10 Python 3.6 代码地址: 新特性 Mish Data Augment (RandomHorizontalFlip, RandomCrop, RandomAffine, Resize) Custom data Step lr Schedule Mult 阅读详情

距离 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 和自定义数据集上运行。

项目地址:https://github.com/argusswift/YOLOv4-PyTorch

除此以外,该项目还向主干网络添加了一些有用的注意力方法,并实现了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/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
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.tar

MSCOCO 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. 下载权重文件

1)darknet 预训练权重:yolov4(https://drive.google.com/file/d/1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT/view)。

2)Mobilenet 预训练权重:

mobilenetv2:(https://pan.baidu.com/share/init?surl=sjixK2L9L0YgQnvfDuVTJQ,提取码:args);

mobilenetv3:(https://pan.baidu.com/share/init?surl=75wKejULuM0ZD05b9iSftg,提取码:args)。

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 images

for 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 images

CUDA_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 / 中可以查看热图,如下所示:

爆改YOLOv8|使用MobileNetV4替换yolov8的Backbone MobileNetV4,yolov8改进backbone, yolov8改进, 即插即用 阅读详情

相关推荐

Windows环境下DataEase一站式安装指南(含WSL2+Docker配置)

本文详细介绍了在Windows环境下通过WSL2和Docker快速部署DataEase的完整教程。从WSL2配置、Docker环境搭建到DataEase离线安装,逐步指导用户完成一站式部署,特别适合需要快速搭建数据分析平台的开发者。教程包含常见问题解决方案和性能优化技巧,帮助用户高效使用这款国产开源数据可视化工具。

weixin_42526166的博客 392

探索先进技术:PyTorch实现的MobileNet-YOLOv4

探索先进技术:PyTorch实现的MobileNet-YOLOv4 在计算机视觉领域,快速而准确的目标检测是关键任务之一。为我们提供了一个基于PyTorch框架的轻量级解决方案——MobileNet-YOLOv4。本文将带你深入了解这一项目的特性、技术优势及潜在应用,以激发你的探索热情。 项目简介 MobileNet-YOLOv4是由Bubbliiiing在PyTorch平台上实现的,结合了Mob...

gitblog_00003的博客 618

用豆包+Skill从零制作AI漫剧:分镜、画面、配音到成片全流程

AI漫剧作为一种新兴内容形态,结合AI绘画与AI视频生成技术,正在改变短视频创作方式。其核心原理是利用提示词工程,将创意转化为结构化分镜脚本,再通过豆包等AI助手的Skill能力,将重复的脚本生成和分镜拆解流程固化为可复用的指令模板,从而大幅降低从构思到成品的生产门槛。这种模式无需剧组、演员和实景拍摄,让个人创作者也能借助图像生成、TTS配音与剪辑合成工具,批量化地生产剧情短片,适用于短视频平台连载、商业定制与个人IP打造。围绕豆包+Skill这条主线,从选题、剧本写作、分镜表设计,到画面提示词生成、视频片

weixin_29048309的博客 1463

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

机器之心报道作者:陈萍距离 YOLO v4 的推出,已经过去 5 个多月。YOLO 框架采用 C 语言作为底层代码,这对于惯用 Python 的研究者来说,实在是有点不友好。因此网上出现...

zandaoguang的博客 1592

快速了解GPU分布通信技术:PCIe、NVLink与NVSwitch

PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,广泛用于连接计算机的各种硬件设备。PCIe4.0是目前较为先进的版本,提供了高达64GB/s的带宽。InfiniBand是一种用于高性能计算的高速互连技术,通过交换机在节点之间直接创建一个专用的受保护通道。InfiniBand适配器通过PCIe接口连接到CPU,另一端通过InfiniBand网络端口连接到InfiniBand子网。

全世界的博客 7543

保姆级教程:用Code Blocks搞定中科蓝讯AB5768E蓝牙音响SDK开发环境(附资源包)

本文提供了一份详细的Code Blocks配置指南,帮助开发者快速搭建中科蓝讯AB5768E蓝牙音响SDK开发环境。从工具链安装、环境配置到工程导入和调试技巧,涵盖全流程避坑要点,特别适合K12开发板初学者。附资源包下载,助您高效完成蓝牙音响开发。

weixin_28692817的博客 447

Mobilenet-YoloV4

CSPDarknet53获取到的三个初步特征实际上只是三个特征层而已,如果可以找到Mobilenet系列网络当中特征层高宽和CSPDarknet53有效特征层高宽相同的特征层,就可以将这些特征层替换原始的CSPDarknet53的特征层,这个时候就可以将Mobilenet系列网络的特征层传入到加强特征提取网络进行加强特征提取,这样就把可以将Mobilenet系列网络应用到YOLOv4网络当中了。

weixin_63967970的博客 169

AMD 3D V-Cache技术解析:CPU缓存堆叠如何突破性能瓶颈

在半导体领域,缓存(Cache)是提升处理器性能的关键技术,其核心原理是在高速CPU核心与慢速主存之间建立数据中转站,以缓解“内存墙”问题。随着摩尔定律放缓,传统平面扩展缓存面临面积成本高、延迟增加等挑战。3D封装技术应运而生,通过垂直堆叠实现极致的互联密度与带宽,成为突破性能瓶颈的重要工程路径。这项技术的价值在于能以更优的功耗和延迟,显著提升缓存容量,从而改善游戏、科学计算等数据密集型应用的性能。以AMD 3D V-Cache为代表的Hybrid Bonding(混合键合)工艺,正是这一趋势的典型实践,它

weixin_30432579的博客 415

睿智的目标检测49——Pytorch 利用mobilenet系列(v1,v2,v3)搭建yolov4目标检测平台

睿智的目标检测39——Pytorch 利用mobilenet系列(v1,v2,v3)搭建yolov4目标检测平台学习前言源码下载网络替换实现思路1、mobilenet系列网络介绍a、mobilenetV1介绍b、mobilenetV2介绍c、mobilenetV3介绍2、将预测结果融入到yolov4网络当中如何训练自己的mobilenet-yolo31、训练参数指定2、开始训练 学习前言 一起来看看如何利用mobilenet系列搭建yolov4目标检测平台。 源码下载 https://github.com/

Bubbliiiing的学习小课堂 4万+

检测头篇 | 手把手教你如何去更换YOLOv8的检测头为ASFF_Detect

自适应空间特征融合(ASFF)的主要原理旨在解决单次检测器中不同尺度特征的不一致性问题。具体来说,ASFF通过动态调整来自不同尺度特征金字塔层的特征贡献,确保每个检测对象的特征表示是一致且最优的。本文所做出的改进是将YOLOv8的检测头更换为ASFF_Detect。🌈

小哥谈 2496

EndNote X9 快速上手教程(毕业论文参考文献管理器)

EndNote X9 快速上手教程一、EndNote X9安装1.安装2 安装之后重要步骤二、第一次打开 EndNote三、参考文献引用1. 导入知网文献2. 参考文献引用四、常见问题1. 引用文献中出现%J的问题2 参考文献中出现et.al1 在文章中引用的编号的地方出现2 在参看文献列表里出现 一、EndNote X9安装 1.安装 打开文件夹 安装前,一定要读 #Readme.txt 文件 一定要把License.dat和ENX9Inst.msi放在同一文件夹,安装的时候会自动激活。 我的安装路

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 2万+

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

原标题:PyTorch版YOLOv4更新了,不仅适用于自定义数据集,还集成了注意力和MobileNet作者:陈萍距离 YOLO v4 的推出 ,已经过去 5 个多月。YOLO 框架采用 C 语言作为底层代码,这对于惯用 Python 的研究者来说,实在是有点不友好。因此网上出现了很多基于各种深度学习框架的 YOLO 复现版本。近日,就有研究者在 GitHub 上更新了基于 PyTorch 的 YO...

weixin_30956665的博客 204

TXS0104EPWR 4通道电平转换模块原理图设计,已量产

在嵌入式系统设计中,不同模块间的电平不兼容是常见问题 —— 比如 1.8V 的 MCU 与 3.3V 的传感器通信,或是 3.3V 的外设与 5V 的主控交互。这类场景下,一款高效、低功耗的双向电平转换器就成了关键组件。本文将结合实际原理图,深度解析 TI TXS0104 这款 4 通道双向电平转换器的设计要点与应用实践。

不脱发的程序猿 486

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

(给Python开发者加星标,提升Python技能)来源:机器之心距离YOLO v4 的推出,已经过去 5 个多月。YOLO 框架采用 C 语言作为底层代码,这对于惯用 Python 的研究者来说,实在是有点不友好。因此网上出现了很多基于各种深度学习框架的 YOLO 复现版本。近日,就有研究者在 GitHub 上更新了基于 PyTorch 的 YOLOv4。从今年 4 月 YOLOv4...

weixin_39915820的博客 351

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

python dataset不是实时更新的结果_PyTorch版YOLOv4更新了,不仅适用于自定义数据集,还集成了注意力和MobileNet...

机器之心报道作者:陈萍距离 ,已经过去 5 个多月。YOLO 框架采用 C 语言作为底层代码,这对于惯用 Python 的研究者来说,实在是有点不友好。因此网上出现了很多基于各种深度学习框架的 YOLO 复现版本。近日,就有研究者在 GitHub 上更新了基于 PyTorch 的 YOLOv4。 从今年 4 月 YOLOv4 发布后,对于这个目标检测框架,问的最多的问题或许就是:「有没有同学复现 ...

weixin_39609622的博客 71

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

id从0开始自增长_PyTorch 版 YOLOv4 更新了,不仅适用于自定义数据集,还集成了注意力和 MobileNet...

(给Python开发者加星标,提升Python技能)来源:机器之心距离YOLO v4 的推出,已经过去 5 个多月。YOLO 框架采用 C 语言作为底层代码,这对于惯用 Python 的研究者来说,实在是有点不友好。因此网上出现了很多基于各种深度学习框架的 YOLO 复现版本。近日,就有研究者在 GitHub 上更新了基于 PyTorch 的 YOLOv4。从今年 4 月 YOLOv4...

weixin_35662670的博客 153

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【目标检测】PyTorch版YOLOv4项目介绍

文章原文出处 https://mp.weixin.qq.com/s/3ItH0swoicI_gMmfkHHClQ. 背景知识 YOLO v4框架采用C语言作为底层代码。 近日,有研究者在 GitHub 上开源了一个项目:基于 PyTorch 深度学习框架的 YOLOv4 复现版本,该版本基于 YOLOv4 作者给出的实现 AlexeyAB/darknet,并在 PASCAL VOC、COCO 和自定义数据集上运行。 项目介绍 项目地址: https://github.com/argusswift/YOLOv

qq_25692343的博客 1453
上一篇: gcc和g++是什么,有什么区别?
下一篇: 10个例子带你了解机器学习中的线性代数
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值