# YOLOv3 SPP
## 该项目源自[ultralytics/yolov3](https://github.com/ultralytics/yolov3)
## 1 环境配置:
* Python3.6或者3.7
* Pytorch1.7.1(注意:必须是1.6.0或以上,因为使用官方提供的混合精度训练1.6.0后才支持)
* pycocotools(Linux: ```pip install pycocotools```;
Windows: ```pip install pycocotools-windows```(不需要额外安装vs))
* 更多环境配置信息,请查看```requirements.txt```文件
* 最好使用GPU训练
## 2 文件结构:
```
├── cfg: 配置文件目录
│ ├── hyp.yaml: 训练网络的相关超参数
│ └── yolov3-spp.cfg: yolov3-spp网络结构配置
│
├── data: 存储训练时数据集相关信息缓存
│ └── pascal_voc_classes.json: pascal voc数据集标签
│
├── runs: 保存训练过程中生成的所有tensorboard相关文件
├── build_utils: 搭建训练网络时使用到的工具
│ ├── datasets.py: 数据读取以及预处理方法
│ ├── img_utils.py: 部分图像处理方法
│ ├── layers.py: 实现的一些基础层结构
│ ├── parse_config.py: 解析yolov3-spp.cfg文件
│ ├── torch_utils.py: 使用pytorch实现的一些工具
│ └── utils.py: 训练网络过程中使用到的一些方法
│
├── train_utils: 训练验证网络时使用到的工具(包括多GPU训练以及使用cocotools)
├── weights: 所有相关预训练权重(下面会给出百度云的下载地址)
├── model.py: 模型搭建文件
├── train.py: 针对单GPU或者CPU的用户使用
├── train_multi_GPU.py: 针对使用多GPU的用户使用
├── trans_voc2yolo.py: 将voc数据集标注信息(.xml)转为yolo标注格式(.txt)
├── calculate_dataset.py: 1)统计训练集和验证集的数据并生成相应.txt文件
│ 2)创建data.data文件
│ 3)根据yolov3-spp.cfg结合数据集类别数创建my_yolov3.cfg文件
└── predict_test.py: 简易的预测脚本,使用训练好的权重进行预测测试
```
## 3 训练数据的准备以及目录结构
* 这里建议标注数据时直接生成yolo格式的标签文件```.txt```,推荐使用免费开源的标注软件(支持yolo格式),[https://github.com/tzutalin/labelImg](https://github.com/tzutalin/labelImg)
* 如果之前已经标注成pascal voc的```.xml```格式了也没关系,我写了个voc转yolo格式的转化脚本,4.1会讲怎么使用
* 测试图像时最好将图像缩放到32的倍数
* 标注好的数据集请按照以下目录结构进行摆放:
```
├── my_yolo_dataset 自定义数据集根目录
│ ├── train 训练集目录
│ │ ├── images 训练集图像目录
│ │ └── labels 训练集标签目录
│ └── val 验证集目录
│ ├── images 验证集图像目录
│ └── labels 验证集标签目录
```
## 4 利用标注好的数据集生成一系列相关准备文件,为了方便我写了个脚本,通过脚本可直接生成。也可参考原作者的[教程](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data)
```
├── data 利用数据集生成的一系列相关准备文件目录
│ ├── my_train_data.txt: 该文件里存储的是所有训练图片的路径地址
│ ├── my_val_data.txt: 该文件里存储的是所有验证图片的路径地址
│ ├── my_data_label.names: 该文件里存储的是所有类别的名称,一个类别对应一行(这里会根据```.json```文件自动生成)
│ └── my_data.data: 该文件里记录的是类别数类别信息、train以及valid对应的txt文件
```
### 4.1 将VOC标注数据转为YOLO标注数据(如果你的数据已经是YOLO格式了,可跳过该步骤)
* 使用```trans_voc2yolo.py```脚本进行转换,并在```./data/```文件夹下生成```my_data_label.names```标签文件,
* 执行脚本前,需要根据自己的路径修改以下参数
```python
# voc数据集根目录以及版本
voc_root = "./VOCdevkit"
voc_version = "VOC2012"
# 转换的训练集以及验证集对应txt文件,对应VOCdevkit/VOC2012/ImageSets/Main文件夹下的txt文件
train_txt = "train.txt"
val_txt = "val.txt"
# 转换后的文件保存目录
save_file_root = "/home/wz/my_project/my_yolo_dataset"
# label标签对应json文件
label_json_path = './data/pascal_voc_classes.json'
```
* 生成的```my_data_label.names```标签文件格式如下
```text
aeroplane
bicycle
bird
boat
bottle
bus
...
```
### 4.2 根据摆放好的数据集信息生成一系列相关准备文件
* 使用```calculate_dataset.py```脚本生成```my_train_data.txt```文件、```my_val_data.txt```文件以及```my_data.data```文件,并生成新的```my_yolov3.cfg```文件
* 执行脚本前,需要根据自己的路径修改以下参数
```python
# 训练集的labels目录路径
train_annotation_dir = "/home/wz/my_project/my_yolo_dataset/train/labels"
# 验证集的labels目录路径
val_annotation_dir = "/home/wz/my_project/my_yolo_dataset/val/labels"
# 上一步生成的my_data_label.names文件路径(如果没有该文件,可以自己手动编辑一个txt文档,然后重命名为.names格式即可)
classes_label = "./data/my_data_label.names"
# 原始yolov3-spp.cfg网络结构配置文件
cfg_path = "./cfg/yolov3-spp.cfg"
```
## 5 预训练权重下载地址(下载后放入weights文件夹中):
* ```yolov3-spp-ultralytics-416.pt```: 链接: https://pan.baidu.com/s/1cK3USHKxDx-d5dONij52lA 密码: r3vm
* ```yolov3-spp-ultralytics-512.pt```: 链接: https://pan.baidu.com/s/1k5yeTZZNv8Xqf0uBXnUK-g 密码: e3k1
* ```yolov3-spp-ultralytics-608.pt```: 链接: https://pan.baidu.com/s/1GI8BA0wxeWMC0cjrC01G7Q 密码: ma3t
* ```yolov3spp-voc-512.pt``` **(这是我在视频演示训练中得到的权重)**: 链接: https://pan.baidu.com/s/1aFAtaHlge0ieFtQ9nhmj3w 密码: 8ph3
## 6 数据集,本例程使用的是PASCAL VOC2012数据集
* ```Pascal VOC2012``` train/val数据集下载地址:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
* 如果不了解数据集或者想使用自己的数据集进行训练,请参考我的bilibili:https://b23.tv/F1kSCK
## 7 使用方法
* 确保提前准备好数据集
* 确保提前下载好对应预训练模型权重
* 若要使用单GPU训练或者使用CPU训练,直接使用train.py训练脚本
* 若要使用多GPU训练,使用```python -m torch.distributed.launch --nproc_per_node=8 --use_env train_multi_GPU.py```指令,```nproc_per_node```参数为使用GPU数量
## 如果对YOLOv3 SPP网络原理不是很理解可参考我的bilibili
[https://www.bilibili.com/video/BV1yi4y1g7ro?p=3](https://www.bilibili.com/video/BV1yi4y1g7ro?p=3)
## 进一步了解该项目,以及对YOLOv3 SPP代码的分析可参考我的bilibili
[https://www.bilibili.com/video/BV1t54y1C7ra](https://www.bilibili.com/video/BV1t54y1C7ra)
## YOLOv3 SPP框架图
![yolov3spp](yolov3spp.png)
没有合适的资源?快使用搜索试试~ 我知道了~
基于yolov3_spp的头盔检测
共1278个文件
txt:601个
jpg:599个
py:25个
需积分: 43 9 下载量 124 浏览量
2022-04-19
21:09:43
上传
评论 2
收藏 572.88MB ZIP 举报
温馨提示
此代码包含了电车戴头盔数据集(数据集从biying,baidu,google获取,本人手动标注)。训练完成后,可对戴头盔和不戴头盔的的图片进行头盔检测。并使用了PyQT编写了GUI界面,可通过可视化操作读取图片信息并对是否戴头盔进行检测。
资源详情
资源评论
资源推荐
收起资源包目录
基于yolov3_spp的头盔检测 (1278个子文件)
events.out.tfevents.1603791769.localhost.localdomain.178338.0 12KB
events.out.tfevents.1647916888.XiaoKong-HappyPlanet.11772.0 12KB
events.out.tfevents.1647750213.XiaoKong-HappyPlanet.5696.0 4KB
events.out.tfevents.1648392258.XiaoKong-HappyPlanet.3504.0 3KB
events.out.tfevents.1648557427.XiaoKong-HappyPlanet.23968.0 866B
events.out.tfevents.1647921436.XiaoKong-HappyPlanet.23816.0 40B
events.out.tfevents.1647863882.XiaoKong-HappyPlanet.5560.0 40B
events.out.tfevents.1647749940.XiaoKong-HappyPlanet.14140.0 40B
events.out.tfevents.1648391140.XiaoKong-HappyPlanet.4640.0 40B
events.out.tfevents.1648390973.XiaoKong-HappyPlanet.4472.0 40B
events.out.tfevents.1647781792.XiaoKong-HappyPlanet.284.0 40B
events.out.tfevents.1648389087.XiaoKong-HappyPlanet.11236.0 40B
events.out.tfevents.1647749652.XiaoKong-HappyPlanet.20928.0 40B
events.out.tfevents.1647780987.XiaoKong-HappyPlanet.22612.0 40B
events.out.tfevents.1647749695.XiaoKong-HappyPlanet.18564.0 40B
events.out.tfevents.1647749801.XiaoKong-HappyPlanet.18308.0 40B
events.out.tfevents.1647749736.XiaoKong-HappyPlanet.21472.0 40B
my_yolov3.cfg 9KB
yolov3-spp.cfg 9KB
my_data.data 101B
.gitignore 50B
yolov3_spp.iml 497B
10152_22.jpg 2.24MB
10034.png_1.jpg 1.86MB
10023.jpg 1.67MB
10095.jpg 1.52MB
10992.jpg 1.37MB
10041.jpg 1.36MB
10035.jpg 1.29MB
10029_11.jpg 1.04MB
10021_55.jpg 1.03MB
10069 (1).jpg 1.03MB
10119.jpg 638KB
10063.jpg 625KB
10004.jpg 610KB
10922.jpg 580KB
10003.jpg 559KB
10956.jpg 544KB
10147.jpg 544KB
10200.jpg 478KB
10952.jpg 455KB
10027_11.jpg 453KB
10139.jpg 431KB
10932.jpg 419KB
10072.jpeg_1.jpg 414KB
10153.jpg 400KB
10021.jpg 385KB
10958.jpg 369KB
10010.jpg 340KB
10185.jpg 335KB
10029.jpeg_1.jpg 305KB
10016.jpg 304KB
10034.jpg 288KB
10017.jpg 285KB
10035_221.jpg 283KB
10003_331.jpg 283KB
10107.jpg 278KB
10122.jpg 273KB
10023.jpeg_1.jpg 272KB
10005_331.jpg 255KB
10057_33.jpg 255KB
10005.jpg 248KB
10096.jpg 237KB
10031.jpg 234KB
10071.jpg 234KB
10065_221.jpg 233KB
10095.jpeg_1.jpg 229KB
10016.jpeg_1.jpg 221KB
10143_33.jpg 211KB
10074.jpg 209KB
10087.jpg 209KB
10013_331.jpg 205KB
10054 (1).jpg 197KB
10104.jpg 194KB
10026_33.jpg 184KB
10019.jpg 183KB
10048.jpg 183KB
10149.jpeg_1.jpg 183KB
10170.jpg 180KB
10020.jpg 175KB
10092.jpg 173KB
10110.jpg 173KB
10079.jpg 169KB
10056.jpg 169KB
10014.jpg 167KB
10024_33.jpg 162KB
10146.jpg 160KB
10116.jpg 158KB
10081.jpg 158KB
10056 (1).jpg 157KB
10150.jpg 156KB
10931.jpg 155KB
10198.jpg 155KB
10073 (1).jpg 152KB
10104_33.jpg 147KB
10082.jpg 146KB
10066.jpg 146KB
10061.jpg 146KB
10152.jpg 141KB
10007.jpg 139KB
共 1278 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13
potato_potato
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 老飞飞搭建基础通用数据库V19数据库.rar
- jquery.js
- 机械设计多工位ACF贴胶带&预压设备sw18可编辑非常好的设计图纸100%好用.zip
- 基于Pytorch复现Point-Transformer,用于ShapeNet数据集点云分割
- 【医学影像分析】2D超声图像的分割检测(Ultrasound Nerve Segmentation - Kaggle数据集)
- 嘎嘎香的五款神仙谷歌插件
- .arch书源导入教程.mp4
- 贪心算法介绍及代码示例讲解
- CR13SP35MSI64 Crystal 水晶报表运行组件最后版本64位
- 图像分类数据集:玉米叶是否感染分类数据集(2分类,包含训练集、验证集)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0