(六)yolov3(c++版)+win训练数据之将数据集转换为darknet支持的数据格式

环境 win10 + python3.x + pycharm

这里先了解一下整体的文件夹都有哪些,其作用是什么

VocAnaotationLabel.py           --本文件与VOCdevkit同级
VOCdevkit                       --总的图片库,放的位置没有具体要求,本人放在 DarknetProject文件夹下
    VOC2020                     --要训练的图片库
        Annotations             --存放图片的信息文件.xml(与JPEGImages下图片要一一对应)
            000001.xml
            000xxx.xml
        ImageSets
            Layout
            Main                --将所有图片分到下面的集合,保留名称就可以,不用后缀
                test.txt        --测试集
                    000021
                    000xxx
                train.txt       --训练集
                    000024
                    000xxx
                trainval.txt    --训练验证集
                    000026
                    000xxx
                val.txt         --验证集
                    000028
                    000xxx
            Segmentation
        JPEGImages              --存放图片文件.jpg(与Annotations下图片信息xml要一一对应)
            000001.jpg
            000xxx.jpg
        labels                  --本文件自动创建
            000001.txt       --把xml和jpg的信息用txt保存下来
                1 0.498 0.5226666666666666 0.5640000000000001 0.9199999999999999
                                --1                     :该图片的类别编号,对应classes[]
                                --0.498                 :归一化后的中心点x坐标r
                                --0.5226666666666666    :归一化后的中心点y坐标
                                --0.5640000000000001    :归一化后的目标框宽度w
                                --0.9199999999999999    :归一化后的目标框高度h
            000xxx.txt
        SegmentationClass
        SegmentationObject
    VOC2012                     --举例,不一定要有,这个图片库可以在网上下载
    VOC2007                     --举例,不一定要有,这个图片库可以在网上下载		

1.在Yolov3Train下建立VocAnaotationLabel.py,并修改如下部分

在这里插入图片描述

2.运行VocAnaotationLabel.py,在TrainSets里生成几个txt文件,这里主要用到的是train.txt 和 year_test.txt

在这里插入图片描述

3.txt里存放的就是图片的路径,因为这是训练时程序去读取的目录,所以这个一定要对,其实前期做了这么多工作就是为了得到这个。

在这里插入图片描述

4.同时也会产生一个labels的文件夹,里面包括了每张图片的信息

在这里插入图片描述
在这里插入图片描述
其中:分别对应
1 0.525 0.5133333333333334 0.88 0.9733333333333334
–1 :该图片的类别编号,对应classes[]
–0.525 :归一化后的中心点x坐标r
– 0.5133333333333334 :归一化后的中心点y坐标
–0.88 :归一化后的目标框宽度w
–0.9733333333333334 :归一化后的目标框高度h

归一化具体的每一个值的计算方式是这样的:假设一个标注的boundingbox的左下角和右上角坐标分别为(x1,y1)(x2,y2),图像的宽和高分别为w,h
归一化的中心点x坐标计算公式:((x2+x1) / 2.0)/ w
归一化的中心点y坐标计算公式:((y2+y1) / 2.0)/ h
归一化的目标框宽度的计算公式: (x2-x1) / w
归一化的目标框高度计算公式:((y2-y1)/ h

5.附录代码

# -*- coding: utf-8 -*-
# @Author  : xionghao.chen
# @File    : VocAnaotationLabel.py
# @date    : 2020.03.13
# @Software: PyCharm
#
import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join

'''
VocAnaotationLabel.py           --本文件与VOCdevkit同级
VOCdevkit                       --总的图片库,放的位置没有具体要求,本人放在 DarknetProject文件夹下
    VOC2020                     --要训练的图片库
        Annotations             --存放图片的信息文件.xml(与JPEGImages下图片要一一对应)
            000001.xml
            000xxx.xml
        ImageSets

            Layout
            Main                --将所有图片分到下面的集合,保留名称就可以,不用后缀
                test.txt        --测试集
                    000021
                    000xxx
                train.txt       --训练集
                    000024
                    000xxx
                trainval.txt    --训练验证集
                    000026
                    000xxx
                val.txt         --验证集
                    000028
                    000xxx
            Segmentation
        JPEGImages              --存放图片文件.jpg(与Annotations下图片信息xml要一一对应)
            000001.jpg
            000xxx.jpg
        labels                  --本文件自动创建
            000001.txt       --把xml和jpg的信息用txt保存下来
                1 0.498 0.5226666666666666 0.5640000000000001 0.9199999999999999
                                --1                     :该图片的类别编号,对应classes[]
                                --0.498                 :归一化后的中心点x坐标r
                                --0.5226666666666666    :归一化后的中心点y坐标
                                --0.5640000000000001    :归一化后的目标框宽度w
                                --0.9199999999999999    :归一化后的目标框高度h
            000xxx.txt
        SegmentationClass
        SegmentationObject
    VOC2012                     --举例,不一定要有,这个图片库可以在网上下载
    VOC2007                     --举例,不一定要有,这个图片库可以在网上下载
'''

#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值