(Pytorch) YOLOV4 : 训练自己的数据集【左侧有码】
项目地址:https://github.com/argusswift/YOLOv4-pytorch
这份代码实现的逻辑非常清楚,主要一些数据集处理的代码需要相应的改动:
这里的数据集label格式:
train_annotation:
image_name1 x1,y1,x2,y2,class_id x1,y1,x2,y2,class_id x1,y1,x2,y2,class_id
image_name2 x1,y1,x2,y2,class_id x1,y1,x2,y2,class_id x1,y1,x2,y2,class_id x1,y1,x2,y2,class_id
1,yolov4_config.py
改动内容:
(1)路径
DATA_PATH = ""
PROJECT_PATH = ""
DETECTION_PATH=""MODEL_TYPE = {"TYPE": "YOLOv4"
}
(2)训练参数
TRAIN = {"DATA_TYPE": "Customer", # DATA_TYPE: VOC ,COCO or Customer"TRAIN_IMG_SIZE": 608,"AUGMENT": True,"BATCH_SIZE": 16,"MULTI_SCALE_TRAIN": False,"IOU_THRESHOLD_LOSS": 0.5,"YOLO_EPOCHS": 50,"Mobilenet_YOLO_EPOCHS": 120,"NUMBER_WORKERS": 0,"MOMENTUM": 0.9,"WEIGHT_DECAY": 0.0005,"LR_INIT": 1e-4,"LR_END": 1e-6,"WARMUP_EPOCHS": 2, # or None
}
(3)VAL 参数
VAL = {"TEST_IMG_SIZE": 608, #同train"BATCH_SIZE": 1,"NUMBER_WORKERS": 0,"CONF_THRESH": 0.005,"NMS_THRESH": 0.45,"MULTI_SCALE_VAL": False, #-----"FLIP_VAL": False, #------ 因为数据集里有信号灯,所以关闭翻转"Visual": True,
}
(4)Customer_DATA 目标列表
Customer_DATA = {"NUM": **, # your dataset number"CLASSES": [** ], # your dataset class
}
2,/utils/datasets.py
(1)设 img_path
(2)如果训练中报resize的错,注意检查训练数据集,可能是由于:
- 空行
- 只有图片名字没有box
- x2-x1 or y2-y1 的box宽/高为负值。
如果是公开数据集可能不会出这种错,如果是自己做的数据集,标注过程可能会出现这种。
(3)index 越界
这个问题是因为index越界,是datasets.py中
这个位置出现xind,或者yind的越界,比如网络输入是608大小,到第一级anchor层的stride是8,这一层的特征图大小就是608/8=76。
所以xind或者yind的取值范围应该在[0-75],报错是因为这里xind或yind取到了76,做一些越界判断处理即可,例如设定xind/yind上限为75。
3, /eval/evaluator.py + voc_eval.py
由于自己的label格式和文件夹并不是按照voc的格式,所以这里的evaluator.py和voc_eval.py都需要进行相应的修改。
evaluator.py: 都按照自己实际的修改
(1)self.val_data_path
(2)img_inds_file
(3)img_path
(4)annopath 和 imagesetfile (存放的是图像名字列表)配置val数据集的label路径和图像路径
voc_eval.py
(1)parse_gt 函数,因为我没有用voc的xml格式,所以在解析label的时候自己重写了这个函数
相应的,下面调用的时候:
(2)下面都是针对数据集label不是voc的xml格式带来的不同需要修改的地方
这样修改完,基本就可以训练跑起来了:
训练命令:
CUDA_VISIBLE_DEVICES=0 nohup python -u train.py --weight_path weight/yolov4.weights --gpu_id 0
CUDA_VISIBLE_DEVICES=0 python3 video_test.py --weight_path ./weight/best.pt --gpu_id 0 --video_path video.mp4 --output_dir .
(Pytorch) YOLOV4 : 训练自己的数据集【左侧有码】相关推荐
- Yolov4训练自己的数据集
Yolov4训练自己的数据集 代码运行环境Ubuntu18.04+python3.6+显卡1080Ti+CUDA10.0+cudnn7.5.1+OpenCV3.4.6+Cmake3.12.2,详细环境 ...
- 一文多图搞定制作自己的VOC数据集+使用yolov4训练自己的数据集+封装video测试脚本(基于ubuntu)
一文多图搞定制作自己的VOC数据集+使用yolov4训练自己的数据集+封装video测试脚本(基于ubuntu) 制作VOC数据集 标注自己的数据集 整理数据集路径格式 训练数据集 环境 在Linux ...
- 干货|Pytorch弹性训练极简实现( 附源码)
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨颜挺帅@知乎(已授权) 来源丨https://zhuanlan ...
- yolov4训练自己的数据集实现安全帽佩戴检测
昨儿立下来的flag,今天还是要含泪完成的,抓紧时间赶呀!!! 本次用yolov4来实现人佩戴安全帽检测,若未佩戴安全帽则将人脸框出来,若佩戴安全帽,则将安全帽以及人脸框出来,多说无益,直接看效果吧! ...
- pytorch——AlexNet——训练花分类数据集
宝藏博主:霹雳吧啦Wz_太阳花的小绿豆_CSDN博客-深度学习,Tensorflow,软件安装领域博主 目录 数据集下载 训练集与测试集划分 "split_data.py" Ale ...
- detectron2训练自己的数据集_YOLO(v3)PyTorch版 训练自己的数据集
Yolo v3比Frcnn好调试多了--就是数据集准备比较麻烦-- 但是好Debug,linux和win10差别不大-- 代码链接(cpu版本): https://github.com/eriklin ...
- YoloV4训练自己的数据集(二)
本文主要介绍使用GPU测试网络,请先看前文然后再看本文.上文中我没有使用Opencv以及GPU,因此测试时间较长,本文介绍使用Opencv以及GPU. 1.安装OpenCV 首先去Opencv官网下载 ...
- pyTorch入门(五)——训练自己的数据集
学更好的别人, 做更好的自己. --<微卡智享> 本文长度为1749字,预计阅读5分钟 前言 前面四篇将Minist数据集的训练及OpenCV的推理都介绍完了,在实际应用项目中,往往需要用 ...
- 视频教程-Windows版YOLOv4目标检测实战:训练自己的数据集-计算机视觉
Windows版YOLOv4目标检测实战:训练自己的数据集 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多 ...
最新文章
- 百度地图android wear,Android SDK | 百度地图API SDK
- 关于网络投票的反思2018-11-11
- 【第二周】结对编程(宫丽君和林莉):四则运算
- Wpf之MVVM线程问题
- vue echarts 地图往下穿透到县
- win10锁定计算机命令,win10怎么锁定磁盘 锁住win10计算机磁盘的操作步骤
- matlab粒子群运动模拟伪代码,基本粒子群优化算法(PSO)的matlab实现
- 5分绩点转4分_泪目!老詹儿子凌晨5点起身训练,科比女儿4点,魔术师叹息退出群聊...
- 移动硬盘损坏怎么恢复?看完再也不怕丢失数据
- 【自动驾驶】如何利用深度学习搭建一个最简单的无人驾驶系统
- 【51单片机实例】智能小车(一)--------小车的前进、后退和停止
- Mysterious Bacteria(唯一分解定理)
- Python 解决warining的方法FutureWarning: warnings.warn(CV_WARNING, FutureWarning)
- BiometricPrompt 之二 - 启动流程
- MySQL数据库期末考试试题及参考答案(04)
- vue中使用three.js导入外部3D模型
- 数据挖掘考试(大纲)
- Android吉他调音器,GuitarTuna
- 苹果IOS与谷歌 android系统的UI设计原则
- php的四种值输出方式