环境 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 --举例,不一定要有,这个图片库可以在网上下载
'''
#