首先下载YOLOFastestv2:https://github.com/dog-qiuqiu/FastestDet

我是训练的行人目标检测。
yolofastestv2需要数据集格式如下图所示:

.
├── category.names        # .names category label file
├── train                 # train dataset
│   ├── 000001.jpg
│   ├── 000001.txt
│   ├── 000002.jpg
│   ├── 000002.txt
│   ├── 000003.jpg
│   └── 000003.txt
├── train.txt              # train dataset path .txt file
├── val                    # val dataset
│   ├── 000043.jpg
│   ├── 000043.txt
│   ├── 000057.jpg
│   ├── 000057.txt
│   ├── 000070.jpg
│   └── 000070.txt
└── val.txt                # val dataset path .txt file

一般我们的数据集是voc样式的数据集即文件夹中只有这两个文件:

train和val文件夹内的0001.txt为yolo数据集的格式,其内容如下:

0 0.344192634561 0.611 0.416430594901 0.262
1 0.509915014164 0.51 0.974504249292 0.972

首先我们将xml转成这个格式的,在Annotations和JPEGImages的同级路径下创建一个py文件:

# 作者:李富贵
# 公众号:猛男技术控
# 输入:xml的文件夹路径
# 输出:在txt路径下创建对应的txt文件
import xml.etree.ElementTree as ET
import osdef convert(size, box):dw = 1. / (size[0])dh = 1. / (size[1])x = (box[0] + box[1]) / 2.0 - 1y = (box[2] + box[3]) / 2.0 - 1w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn x, y, w, hdef convert_annotation(xml_file, txt_path, filename):in_file = open('{}/{}.xml'.format(xml_file, filename), encoding='UTF-8')out_file = open('{}/{}.txt'.format(txt_path, filename), 'w')tree = ET.parse(in_file)root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)for obj in root.iter('object'):# difficult = obj.find('difficult').text# difficult = obj.find('Difficult').textif obj.find('difficult'):difficult = obj.find('difficult').textelse:difficult = 0cls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text))b1, b2, b3, b4 = b# 标注越界修正if b2 > w:b2 = wif b4 > h:b4 = hb = (b1, b2, b3, b4)bb = convert((w, h), b)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')# 改成自己的类别
classes = ["person"]
# 改成自己xml文件夹和要保存的txt文件夹的路径
xml_path = 'Annotations'
txt_path = 'txt'
if not os.path.exists(txt_path):os.makedirs(txt_path)xml_files = os.listdir(xml_path)
for xml_file in xml_files:print(xml_path + '/' + xml_file)convert_annotation(xml_path, txt_path, xml_file[:-4])

然后得到一个txt文件,里面就是存放所有已转换的txt

第二步就是将文件分成train和test

import os
import shutil
import randomall_txt = os.listdir('txt')
random.shuffle(all_txt)trainf = all_txt[:1316]
vlaf = all_txt[1317:]i = 1
for trainimg in trainf:try:shutil.copy(os.path.join('JPEGImages',trainimg[:-3]+'png'),'train')shutil.copy(os.path.join('txt', trainimg), 'train')print(i)i += 1except:print('no such file ',os.path.join('JPEGImages',trainimg[:-3]+'jpg'))
j = 1for valimg in vlaf:try:shutil.copy(os.path.join('JPEGImages',valimg[:-3]+'png'),'v')shutil.copy(os.path.join('txt', valimg), 'v')print(j)j += 1except:print('no such file ',os.path.join('JPEGImages',valimg))

注意自己创建号train和val文件夹,修改train和val文件的个数。
这样就生成了下面这样的文件

├── train
│   ├── 000001.jpg
│   ├── 000001.txt
│   ├── 000002.jpg
│   ├── 000002.txt
│   ├── 000003.jpg
│   └── 000003.txt
└── val├── 000043.jpg├── 000043.txt├── 000057.jpg├── 000057.txt├── 000070.jpg└── 000070.txt

然后将所有文件读入txt中:

import ostraintxt = open('train.txt','a')
val = open('val.txt','a')
for img in os.listdir('train'):if "png" in img:traintxt.write(os.path.join('INRIAPerson-823/train',img)+'\n')print(img)else:print(img,'error')
for img in os.listdir('val'):if "png" in img:valtxt.write(os.path.join('INRIAPerson-823/val',img)+'\n')print(img)else:print(img,'error')
valtxt.close()
traintxt.close()

先跑下这个:

python3 genanchors.py --traintxt ./train.txt

会得到anchors数据

然后修改data下的.data文件
anchors替换成上面的,train,val,names对应的路径,自己修改

然后就是训练了:

python3 train.py --data data/coco.data

下不了的关注我公众号:猛男技术控,回复yolofastest 可以提供代码、数据、以及我训练的权重。

YOLOFastestv2 训练自己的数据集---辛酸仨小时相关推荐

  1. 手把手教你使用YOLOV5训练自己的数据集并用TensorRT加速

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 前言 本文主要介绍目标检测YOLOV5算法来训练自己的数据集,并且使用TensorRT来对训练好的模型 ...

  2. mask rcnn训练自己的数据集

    原文首发于微信公众号「3D视觉工坊」--mask rcnn训练自己的数据集 前言 最近迷上了mask rcnn,也是由于自己工作需要吧,特意研究了其源代码,并基于自己的数据进行训练~ 本博客参考:ht ...

  3. Fast RCNN 训练自己的数据集(3训练和检测)

    Fast RCNN 训练自己的数据集(3训练和检测) 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ https ...

  4. YunYang1994/tensorflow-yolov3 训练自己的数据集

    文章目录 前言 训练流程 1.准备好`图片`和`train.txt`.`test.txt` 2.修改相关路径 i) 修改`class.names`文件以及`__C.YOLO.CLASSES`参数路径 ...

  5. alexeyab darknet 编译_【目标检测实战】Darknet—yolov3模型训练(VOC数据集)

    原文发表在:语雀文档 0.前言 本文为Darknet框架下,利用官方VOC数据集的yolov3模型训练,训练环境为:Ubuntu18.04下的GPU训练,cuda版本10.0:cudnn版本7.6.5 ...

  6. 深度学习实战(七)——目标检测API训练自己的数据集(R-FCN数据集制作+训练+测试)

    TensorFlow提供的网络结构的预训练权重:https://cloud.tencent.com/developer/article/1006123 将voc数据集转换成.tfrecord格式供te ...

  7. 初学入门YOLOv5手势识别之制作并训练自己的数据集

    随着短视频vlog时代的到来,自动驾驶技术.人脸识别门禁系统.智慧视频监控.AI机器人等贴近人们日常生活的视频信息量的暴增,视频目标检测的研究具有无比的现实研究意义与未来行业潜力.视频是由一系列具有时 ...

  8. yolov5训练自己的数据集,OpenCV DNN推理

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为4238字,预计阅读9分钟 前言 上一篇<OpenCV--自学笔记>搭建好了yolov5的环境,作为目标检测在应用中 ...

  9. Windows下使用Darknet训练自己的数据集(模型:yolov4-tiny、数据集:垃圾分类)

    本文章主要介绍如何使用Darknet在windows下训练自己的数据集,其中模型使用的是yolov4-tiny,数据集使用的是自己垃圾分类数据集(需要的自取:在我上传的资源中有) PS:这是我的第一篇 ...

最新文章

  1. 嵌入式开发笔记-存储控制器
  2. Eclipse使用Maven时出现:Index downloads are disabled, search results may be incomplete.问题解决...
  3. git rebase用法_Git:Clone别人的代码之后push到自己码云上失败的解决办法
  4. dp之多重背包poj2392
  5. 大数据-Hadoop 3.3.1安装详解
  6. mysql 8 多线程_mysql8 参考手册--通用线程状态
  7. 拯救行动第二季 - 答题赢游戏机活动已经开放!
  8. Linux 网络基础篇
  9. The RSpec Book笔记《二》Describing Features描述功能
  10. win10启动项_win10系统开机启动项的设置教程
  11. 创新或许就是青睐偏执狂
  12. 清空回收站如何找回?
  13. JavaSE语言基础
  14. Qt 给QWidget添加工具栏
  15. 《BI工程师必读》数据可视化篇 #02
  16. 暑假出游 |近视配镜首选变色镜片
  17. 软件交付方式有哪些_如何交付有意义的软件
  18. LAMP系统构建论文
  19. git的使用(开发常用到的)
  20. 山东大学单片机原理与应用实验 3.7LCD 1602显示实验

热门文章

  1. Android屏幕适配(包括折叠手机)
  2. 【Paddle打比赛】手写字体OCR识别竞赛baseline
  3. Gitolite 教程
  4. git gitolite 搭建git服务器
  5. 实际地址转换成经纬度
  6. python语言程序的特点_Python语言概述及其运行机制详解
  7. python3.6.6官网下载_Python3.6.6
  8. int(11)到底占几个字节,亲测保证可靠
  9. 马斯克身价缩水1100亿美元 特斯拉却单季在华营收51亿美元
  10. 计算机一级b考试试题及答案,全国计算机等级一级B考试试题及答案(真题) .doc