项目地址: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 : 训练自己的数据集【左侧有码】相关推荐

  1. Yolov4训练自己的数据集

    Yolov4训练自己的数据集 代码运行环境Ubuntu18.04+python3.6+显卡1080Ti+CUDA10.0+cudnn7.5.1+OpenCV3.4.6+Cmake3.12.2,详细环境 ...

  2. 一文多图搞定制作自己的VOC数据集+使用yolov4训练自己的数据集+封装video测试脚本(基于ubuntu)

    一文多图搞定制作自己的VOC数据集+使用yolov4训练自己的数据集+封装video测试脚本(基于ubuntu) 制作VOC数据集 标注自己的数据集 整理数据集路径格式 训练数据集 环境 在Linux ...

  3. 干货|Pytorch弹性训练极简实现( 附源码)

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨颜挺帅@知乎(已授权) 来源丨https://zhuanlan ...

  4. yolov4训练自己的数据集实现安全帽佩戴检测

    昨儿立下来的flag,今天还是要含泪完成的,抓紧时间赶呀!!! 本次用yolov4来实现人佩戴安全帽检测,若未佩戴安全帽则将人脸框出来,若佩戴安全帽,则将安全帽以及人脸框出来,多说无益,直接看效果吧! ...

  5. pytorch——AlexNet——训练花分类数据集

    宝藏博主:霹雳吧啦Wz_太阳花的小绿豆_CSDN博客-深度学习,Tensorflow,软件安装领域博主 目录 数据集下载 训练集与测试集划分 "split_data.py" Ale ...

  6. detectron2训练自己的数据集_YOLO(v3)PyTorch版 训练自己的数据集

    Yolo v3比Frcnn好调试多了--就是数据集准备比较麻烦-- 但是好Debug,linux和win10差别不大-- 代码链接(cpu版本): https://github.com/eriklin ...

  7. YoloV4训练自己的数据集(二)

    本文主要介绍使用GPU测试网络,请先看前文然后再看本文.上文中我没有使用Opencv以及GPU,因此测试时间较长,本文介绍使用Opencv以及GPU. 1.安装OpenCV 首先去Opencv官网下载 ...

  8. pyTorch入门(五)——训练自己的数据集

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为1749字,预计阅读5分钟 前言 前面四篇将Minist数据集的训练及OpenCV的推理都介绍完了,在实际应用项目中,往往需要用 ...

  9. 视频教程-Windows版YOLOv4目标检测实战:训练自己的数据集-计算机视觉

    Windows版YOLOv4目标检测实战:训练自己的数据集 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多 ...

最新文章

  1. 百度地图android wear,Android SDK | 百度地图API SDK
  2. 关于网络投票的反思2018-11-11
  3. 【第二周】结对编程(宫丽君和林莉):四则运算
  4. Wpf之MVVM线程问题
  5. vue echarts 地图往下穿透到县
  6. win10锁定计算机命令,win10怎么锁定磁盘 锁住win10计算机磁盘的操作步骤
  7. matlab粒子群运动模拟伪代码,基本粒子群优化算法(PSO)的matlab实现
  8. 5分绩点转4分_泪目!老詹儿子凌晨5点起身训练,科比女儿4点,魔术师叹息退出群聊...
  9. 移动硬盘损坏怎么恢复?看完再也不怕丢失数据
  10. 【自动驾驶】如何利用深度学习搭建一个最简单的无人驾驶系统
  11. 【51单片机实例】智能小车(一)--------小车的前进、后退和停止
  12. Mysterious Bacteria(唯一分解定理)
  13. Python 解决warining的方法FutureWarning: warnings.warn(CV_WARNING, FutureWarning)
  14. BiometricPrompt 之二 - 启动流程
  15. MySQL数据库期末考试试题及参考答案(04)
  16. vue中使用three.js导入外部3D模型
  17. 数据挖掘考试(大纲)
  18. Android吉他调音器,GuitarTuna
  19. 苹果IOS与谷歌 android系统的UI设计原则
  20. php的四种值输出方式

热门文章

  1. MySQL数据库11——子查询语句
  2. LeetCode·718.最长重复子数组·动态规划
  3. ActiveMQ的简单使用
  4. 《如何阅读一本书》做一名“棒球赛中的捕手”
  5. PHP 开发与代码审计(总结)
  6. 集创北方IPO被终止:曾拟募资60亿 小米华为vivo是股东
  7. Android GPRS上网过程中数据图标的变化过程
  8. WPS:将彻底关闭广告
  9. ubuntu16.04 创建用户,赋予权限
  10. 安卓中COLOR的值分析