[Producción de conjuntos de datos] Tutorial de producción y procesamiento de conjuntos de datos en formato VOC2007 (entrada estándar del modelo Faster-RCNN)

ilustrar

Este caso es un tutorial para crear un conjunto de datos VOC2007 para la detección de objetivos. Este procesamiento del conjunto de datos se puede utilizar para la entrada estándar de modelos de detección de objetivos en Faster-RCNN, YOLOv3 y otras redes.

  • Estructura del conjunto de datos VOC2007
#VOC2007数据集结构如下:
VOC2007
	|-Annotations#里面存放的是每一张图片对应的标注结果,为XML文件,
				 #标注完成后JPEGImages每张图片在此都有一一对应的xml文件
	|-ImageSets#存放的是每一种类型对应的图像数据,为txt文件
		|-Layout#存放的是具有人体部位的数据(如人的head、hand、feet等等)
		|-Main#存放的是图像物体识别的数据
		|-Segmentation#存放的是可用于分割的数据
	|-JPEGImages#存放的是原图片
	|-SegmentationClass#按类别进行图像分割,同一类别的物体会被标注为相同颜色
	|-SegmentationObject#按对象进行图像分割,即使是同一类别的物体会被标注为不同的颜色。

Este conjunto de datos se puede utilizar para la detección de objetivos y la segmentación de imágenes. Este caso experimental es para explicar la entrada del conjunto de datos estándar para la detección de objetivos de Faster-RCNN, YOLOv3 y otros modelos. La segmentación no se menciona, por lo que no se incluyen todos los conjuntos de datos anteriores. Sólo se analiza uno de ellos: La producción de la parte de detección de objetivos del conjunto de datos.

  • La estructura del conjunto de datos VOC2007 utilizado en este experimento es la siguiente:
#VOC2007数据集结构如下:
VOC2007
	|-Annotations#里面存放的是每一张图片对应的标注结果,为XML文件,
				 #标注完成后JPEGImages每张图片在此都有一一对应的xml文件
	|-ImageSets#存放的是每一种类型对应的图像数据,为txt文件
		|-Main#存放的是图像物体识别的数据
	|-JPEGImages#存放的是原图片

1. Herramientas de instalación

  • Entorno de instalación

Esta anotación de datos utiliza la herramienta labelImg. La instalé con pip en la terminal pycharm. Hay muchos métodos de instalación, por lo que no los enumeraré uno por uno. También necesita instalar la biblioteca lxml y pytq. Los pasos de instalación son como sigue:

etiqueta de instalación de Python pip3Img

instalación de pip lxml

instalación de pip en pytq

  • Ejecutando captura de pantalla:
    Insertar descripción de la imagen aquí
  • Ingrese al entorno
    e ingrese a la herramienta de etiquetado, solo necesita ingresar LabelImg en la terminal pycharm, y la herramienta LabelImg aparecerá y se abrirá automáticamente, de la siguiente manera:

EtiquetaImg

  • Ejecutando captura de pantalla:
    Insertar descripción de la imagen aquí

2. Preparación del conjunto de datos

Cree estas tres carpetas en la carpeta VOC2007:

Insertar descripción de la imagen aquí

  • La carpeta Anotaciones almacena archivos de etiquetas en formato xml. Cada archivo xml corresponde a una imagen en la carpeta JPEGImages.
  • Carpeta JPEGImages : esta carpeta almacena imágenes de conjuntos de datos (imágenes originales), incluidas imágenes de entrenamiento y prueba. Coloque los datos de la imagen original en esta carpeta.

Insertar descripción de la imagen aquí

  • Carpeta ImageSets Hay tres archivos almacenados en esta carpeta, a saber, Diseño, Principal y Segmentación. Aquí solo usamos el archivo principal que almacena datos de imagen.

Cree la carpeta principal en ImageSets y cree los siguientes 4 archivos de texto en esta carpeta:

  • test.txt : conjunto de prueba
  • train.txt : conjunto de entrenamiento
  • val.txt : conjunto de validación
  • trainval.txt : conjuntos de entrenamiento y validación
    Insertar descripción de la imagen aquí

Cambiar el nombre de los datos

  • Código de procesamiento:
"""文件重命名为000000、000001、000002...nnnnn"""
import os
path = r"C:\Users\xxx\Desktop\VOC2007\JPEGImages"#JPEGImages文件夹所在路径
filelist = os.listdir(path) #该文件夹下所有的文件(包括文件夹)
count=0
for file in filelist:
    print(file)
for file in filelist:   #遍历所有文件
    Olddir=os.path.join(path,file)   #原来的文件路径
    if os.path.isdir(Olddir):   #如果是文件夹则跳过
        continue
    filename=os.path.splitext(file)[0]   #文件名
    filetype='.jpg'   #文件扩展名
    Newdir=os.path.join(path,str(count).zfill(6)+filetype)  #用字符串函数zfill 以0补全所需位数
    os.rename(Olddir,Newdir)#重命名
    count+=1
  • Ejecutando captura de pantalla:
    Insertar descripción de la imagen aquí
  • Visualización del resultado del procesamiento:
    Insertar descripción de la imagen aquí

4. Anotación de datos

  • Agregar conjunto de datos etiquetados

Después de instalar la herramienta, ingrese LabelImge para abrir la herramienta de etiquetado y luego agregue la carpeta de datos que necesita ser etiquetada. La imagen de datos original se coloca en la carpeta de JPEGImages. La operación es la siguiente:
Insertar descripción de la imagen aquí

  • Seleccione el método de etiquetado.
    Seleccione Crear rectBox para etiquetado rectangular, o seleccione la tecla de acceso directo w para etiquetado rápido:

Insertar descripción de la imagen aquí

  • Etiquetado y configuración de etiquetas
    Utilice un marco para marcar el objetivo. Una vez completado el etiquetado, aparecerá el cuadro de valor de la etiqueta. Introduzca la etiqueta que se agregará y haga clic en Aceptar:
    Insertar descripción de la imagen aquí
  • Guarde los resultados de la anotación.
    La forma predeterminada de guardar los resultados de la anotación es seleccionar la carpeta para guardar cada vez. Utilice la tecla de acceso directo para seleccionar la carpeta para guardar predeterminada. Utilice la tecla de acceso directo Ctrl+ r para seleccionar la carpeta para guardar predeterminada como Anotación:

Insertar descripción de la imagen aquí
Si solo hay un valor de etiqueta marcado, puede establecer el valor de etiqueta predeterminado en la esquina superior derecha de la herramienta de anotación, como se muestra a continuación:

Insertar descripción de la imagen aquí
Después de configurar la primera anotación, el siguiente paso es la anotación rápida. Teclas de acceso directo:
tecla w para seleccionar la anotación, tecla Ctrl+s para guardar, tecla d para cambiar a la siguiente imagen hasta que se complete la anotación.

  • Visualización de los resultados de la anotación
    Después de la anotación, los resultados de la anotación se guardan en el archivo de anotación en VOC2007. El contenido se muestra de la siguiente manera:

Insertar descripción de la imagen aquí

5. Procesamiento de datos

  • Realizar procesamiento de datos en la carpeta xml del resultado de la anotación
import os
import random

trainval_percent = 0.9#验证集和训练集占的百分比
train_percent = 0.7#训练集占的百分比
xmlfilepath = r'C:\Users\xxx\Desktop\VOC2007\Annotations'#Annotation文件夹所在位置
txtsavepath = r'C:\Users\xxx\Desktop\VOC2007\ImageSets\Main'#ImageSets文件下的Main文件夹所在位置
total_xml = os.listdir(xmlfilepath)

num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)
#Main文件夹下所对应的四个txt文件夹路径
ftrainval = open(r'C:\Users\xxx\Desktop\VOC2007\ImageSets\Main\trainval.txt', 'w')
ftest = open(r'C:\Users\xxx\Desktop\VOC2007\ImageSets\Main\test.txt', 'w')
ftrain = open(r'C:\Users\xxx\Desktop\VOC2007\ImageSets\Main\train.txt', 'w')
fval = open(r'C:\Users\xxx\Desktop\VOC2007\ImageSets\Main\val.txt', 'w')

for i in list:
    name = total_xml[i][:-4] + '\n'
    if i in trainval:
        ftrainval.write(name)
        if i in train:
            ftrain.write(name)
        else:
            fval.write(name)
    else:
        ftest.write(name)

ftrainval.close()
ftrain.close()
fval.close()
ftest.close()
  • Ejecutando captura de pantalla:
    Insertar descripción de la imagen aquí
    Ahora abra la carpeta VOC2007/ImagesSets/Main, que contiene los siguientes cuatro archivos:

Insertar descripción de la imagen aquí
Abra los cuatro archivos, cuyo contenido es el siguiente:
Insertar descripción de la imagen aquí
En este punto, el conjunto de datos en formato VOC2007 está completo.

Supongo que te gusta

Origin blog.csdn.net/weixin_45736855/article/details/130358362
Recomendado
Clasificación