Directorio de artículos de serie
Tutorial de YOLO V5
- Directorio de artículos de serie
- 1. Dependencia del entorno de instalación
- 2. Descarga el modelo previamente entrenado
- En tercer lugar, descargue el conjunto de datos etiquetado
- Cuarto, entrenar el conjunto de datos coco128 descargado
- Cinco, entrena tu propio conjunto de datos
- Conexión de referencia
1. Dependencia del entorno de instalación
1.1 Proyecto de clonación
git clone https://github.com/ultralytics/yolov5 # clone repo
1.2 Instalar las dependencias del entorno necesarias
Se python>=3.7
:dan los PyTorch>=1.5
,, La instalación depende:
cd yolov5
pip install -U -r requirements.txt
requirements.txt
2. Descarga el modelo previamente entrenado
2.1 Ejecutar el script para descargar el modelo previamente entrenado
/yolov5/weights/download_weights.sh
Descargar definición de script modelo previamente entrenado
2.2 Modelo de preentrenamiento de descarga directa, y luego guardado en /yolov5/weights
el directorio puede
Descargue directamente en el controlador de Google https://drive.google.com/drive/folders/1Drs_Aiu7xx6S-ix95f9kNsA6ueKRpN2J
En tercer lugar, descargue el conjunto de datos etiquetado
3.1 Ejecutar descarga de script
python3 -c "
from yolov5.utils.google_utils import gdrive_download;
gdrive_download('1n_oKgR81BJtqk75b00eAjdv03qVCQn2f','coco128.zip')
" # download dataset
Se ejecuta el código anterior, se descargará: coco128.zip
el conjunto de datos, los datos son parte de los datos de COCO train2017, tomando solo el conjunto de datos 128 imagen marcada con coco, coco128.zip
después de descargar el extracto en /yolov5
el directorio se puede descomprimir coco128
la estructura de archivos de la siguiente manera:
coco128
|-- LICENSE
|-- README.txt # 相关说明
|-- annotations # 空目录
|-- images # 128 张 jpg 图片
|-- labels # 128 张标注的 txt 文件
3.2 Si la descarga es lenta, también puede descargar coco128.zip directamente a través del enlace URL
Descargue directamente en el controlador de Google
https://drive.google.com/uc?export=download&id=1n_oKgR81BJtqk75b00eAjdv03qVCQn2f
Nota: El utils/google_utils.py
script sirve para descargar el modelo previamente entrenado y el conjunto de datos de entrenamiento anotado.
Cuarto, entrenar el conjunto de datos coco128 descargado
4.1 Cree el archivo de configuración Dataset.yaml del conjunto de datos de entrenamiento
Descargue el bien anterior coco128.zip
después de los pequeños conjuntos de datos, estos conjuntos de datos se pueden usar para entrenamiento y validación models/yolov5l.yaml
.
coco128.yaml
Definido en:
- Ruta de la imagen de entrenamiento (o lista de
.txt
archivos de imágenes de entrenamiento ) - La misma imagen que el conjunto de validación
- Número de categorías objetivo
- Lista de nombres de clases
4.2 Crear etiquetas (etiquetas)
Aplicando una derivación de etiquetas de formato darknet, cada etiqueta tiene un *.txt
archivo de imagen (imagen si no hay ningún objeto no es un *.txt
archivo requerido ), *.txt
el formato de archivo es el siguiente:
- Un objeto por línea
- Cada línea es:
class x_center y_center width height
formato - El marco debe coordinar el formato
归一化格式的 xywh(从0到1)
, si el bloque en píxeles, entoncesx_center
ywidth
dividido por el ancho de la imagen, seráy_center
yheight
dividiendo la altura de la imagen - La categoría comienza en el índice 0
Imagen de ejemplo y etiqueta:
dataset/images/train2017/000000109622.jpg # image
dataset/labels/train2017/000000109622.txt # label
Por ejemplo: archivo de etiqueta 000000000009.txt, lo que significa que hay 8 objetivos marcados en la imagen 000000000009.jpg:
45 0.479492 0.688771 0.955609 0.5955
45 0.736516 0.247188 0.498875 0.476417
50 0.637063 0.732938 0.494125 0.510583
45 0.339438 0.418896 0.678875 0.7815
49 0.646836 0.132552 0.118047 0.096937
49 0.773148 0.129802 0.090734 0.097229
49 0.668297 0.226906 0.131281 0.146896
49 0.642859 0.079219 0.148063 0.148062
4.3 Estructura de archivos de organización
Organice sus imágenes y etiquetas de conjunto de entrenamiento y conjunto de validación de acuerdo con la figura siguiente.
Nota: El /coco128
directorio debe y yolov5
directorios al mismo nivel, garantizando al mismo tiempo coco128/labels
y coco128/images
dos directorios al mismo nivel!
4.4 Elige un modelo para entrenar
El archivo de configuración del conjunto de datos personalizados se modificó anteriormente y los datos se organizaron. Ahora puede seleccionar un modelo para entrenar.
Del ./models
perfil de directorio seleccionado un modelo, aquí elegimos yolov5s.yaml
, es el modelo más pequeño y rápido. La comparación entre otros modelos se describe a continuación. Después de seleccionar el modelo, si no está utilizando coco
un conjunto de datos para el entrenamiento, sino conjuntos de datos personalizados, esta vez solo necesita modificar *.yaml
el archivo de configuración en la nc: 80
lista de categorías de datos y parámetros.
yolov5s.yaml
Definido principalmente en el archivo de configuración:
- Parámetros: categoría, etc.
- ancla
- Red troncal YOLOv5
- Cabeza YOLOv5
4.5 Iniciar entrenamiento
4.5.1 Comandos de entrenamiento
Ejecute el siguiente comando para entrenar coco128.ymal
, entrenar 5 epochs
. Hay dos métodos de entrenamiento, los siguientes parámetros:
--cfg yolov5s.yaml --weights ''
: Entrenamiento desde cero--cfg yolov5s.yaml --weights yolov5s.pt
: Iniciar el entrenamiento desde la carga del modelo previamente entrenado
YOLOv5 en coco128
el 5 epochs
comando de entrenamiento :
python train.py --img 640 --batch 16 --epochs 5 --data ./data/coco128.yaml --cfg ./models/yolov5s.yaml --weights ''
4.5.2 Errores comunes en el entrenamiento 1
1. Ejecute el error del comando de entrenamiento: RuntimeError: Model replicas must have an equal number of parameters.
se muestra el error, la copia del modelo debe tener los mismos parámetros
2. Solución:
Esto puede deberse a la versión incorrecta del problema que Pytorch causó en mi torch
versión 15.0, la versión reducida 1.4.0
a ( Referencia ):
pip install torch==1.4.0+cu100 torchvision==0.5.0+cu100 -f https://download.pytorch.org/whl/torch_stable.html
4.5.3 Errores comunes en el entrenamiento 2
1. Se informa de un error al ejecutar el comando de entrenamiento:ModuleNotFoundError: No module named 'yaml'
2. Solución:
Esto se debe a un yaml
error de paquete de biblioteca no instalado , aunque la importación es: import yaml
pero el nombre no está instalado yaml
, lo siguiente está instalado correctamente yaml
:
pip install PyYAML
4.5.4 Errores habituales en el entrenamiento 3
1. Se informa de un error al ejecutar el comando de entrenamiento:AttributeError: 'DistributedDataParallel' object has no attribute 'model'
2. Solución de error:
esto se debe al --device
valor predeterminado ''
. En este momento, el entrenamiento con múltiples GPU se usará de forma predeterminada . Sin embargo, el problema anterior ocurrirá durante el entrenamiento con múltiples GPU. Esto puede ser un error ( referencia ). GPU , cambie el comando de entrenamiento a lo siguiente:
python train.py --img 640 --batch 16 --epochs 5 --data ./data/coco128.yaml --cfg ./models/yolov5s.yaml --weights '' --device 0
4.6 Usar tensorboard para visualizar resultados
En el yolov5
directorio, use:
tensorboard --logdir=runs
4.7 Prueba
Más parámetros opcionales para probar:
--weights
: Ruta del modelo de preentrenamiento, valor predeterminadoweights/yolov5s.pt
--data
: El archivo de configuración del conjunto de datos, el valor predeterminado esdata/coco.yaml
--batch-size
: Valores predeterminados32
--img-size
: Tamaño de inferencia (píxeles), predeterminado640
--conf-thres
: Umbral de confianza objetivo, predeterminado0.001
--iou-thres
: Umbral IOU de NMS, predeterminado0.65
--save-json
: Guarda el resultado deljson
archivo compatible con cocoapi--task
: Predeterminadoval
, otros valores opcionales:val, test, study
--device
:cuda
Dispositivo, por ejemplo :,0 或 0,1,2,3 或 cpu
predeterminado''
--half
:FP16
Razonamiento de semiprecisión--single-cls
: Trátelo como una sola categoría,布尔值
--augment
: Inferencia mejorada, booleano--verbose
: Categoría de visualizaciónmAP
, booleano
Ejemplos de comandos de prueba:
python test.py --weights yolov5s.pt --data ./data/coco.yaml --img 640
Cinco, entrena tu propio conjunto de datos
Hay dos formas de preparar datos:
- Una es especificar directamente la ruta del conjunto de entrenamiento y las imágenes del conjunto de prueba.
(本文使用的这种方法)
- El otro es un archivo txt que ofrece imágenes de los conjuntos de entrenamiento y prueba.
5.1 Prepare el conjunto de datos
yolov5
Los conjuntos de datos de etiquetas se guardan como txt
archivos de formato YOLO , en:
- Cómo etiquetar el conjunto de datos
- ¿Cuál es el formato de los datos VOC y los datos YOLO?
- Cómo convertir datos en formato VOC a datos en formato YOLO
- Y el proceso de cálculo de conversión mutua entre formato VOC y formato YOLO
Por favor 参考
: este blog , ¡no los repitas aquí! ! !
Una vez etiquetado el conjunto de datos, se almacena en el siguiente formato de directorio:
hat_hair_beard
├── images
│ ├── train2017 # 训练集图片,这里我只列举几张示例
│ │ ├── 000050.jpg
│ │ ├── 000051.jpg
│ │ └── 000052.jpg
│ └── val2017 # 验证集图片
│ ├── 001800.jpg
│ ├── 001801.jpg
│ └── 001802.jpg
└── labels
├── train2017 # 训练集的标签文件
│ ├── 000050.txt
│ ├── 000051.txt
│ └── 000052.txt
└── val2017 # 验证集的标签文件
├── 001800.txt
├── 001801.txt
└── 001802.txt
- had_hair_beard: el directorio para almacenar datos, que se encuentra en
yolov5目录下
- imágenes: las imágenes se almacenan en el directorio, incluidas las imágenes del conjunto de entrenamiento y del conjunto de validación
- etiquetas: el archivo de etiquetas se almacena en el directorio, que contiene los archivos de etiquetas correspondientes al conjunto de entrenamiento y las imágenes del conjunto de validación
Organice de acuerdo con la estructura anterior 数据的目录结构
y luego podrá modificar algunos archivos relacionados con la capacitación.
5.2 Modificar archivos de configuración de modelo y datos
5.2.1 Modificar archivo de configuración de datos
El archivo de configuración original: ./data/coco128.yaml
Copiamos el archivo (estos son mis hábitos personales, no se puede cambiar, directamente coco128.yaml
en el archivo modificado)
luego hat_hair_beard.yaml
necesita modificar el 3
lugar Contenido:
1. La ruta del conjunto de formación y las imágenes del conjunto de validación
train: /home/shl/shl/yolov5/hat_hair_beard/images/train2017
val: /home/shl/shl/yolov5/hat_hair_beard/images/val2017
Nota: 最好用绝对路径,我在使用相对路径的时候报错,说路径存在
2. Modificar el número de categorías nc
nc=7 # 我数据集一共分7个类别
3. Modifique la lista de categorías y modifique la categoría a su propia categoría.
names: ['hard_hat', 'other', 'regular', 'long_hair', 'braid', 'bald', 'beard']
5.2.2 Modificar el archivo de configuración del modelo
Arriba 数据的准备
y 配置文件的修改
después de que todo esté listo, puedes开始训练了!!!
5.3 Entrene su propio conjunto de datos
5.3.1 Utilizar el yolovs.pt
modelo de preentrenamiento para el entrenamiento
Comando de entrenamiento:
python train.py --img 640 --batch 16 --epochs 300
--data ./data/hat_hair_beard.yaml \
--cfg ./models/hat_hair_beard_yolov5s.yaml \
--weights ./weights/yolov5s.pt
--device 1
Después del entrenamiento, se generarán dos modelos previamente entrenados:
best.pt
: Guarda los mejores modelos en el mediolast.pt
: El último modelo guardado después del entrenamiento
注意:
Al utilizar el --device
conjunto de parámetros 多GPU进行训练
, se puede dar: RuntimeError: Model replicas must have an equal number of parameters.
En particular, el siguiente error, se dará el comando:
--device 1
: Especificar una sola GPU no informará un error--device 1,2,3
: Cuando más de dos GPU reciben
unaissues
solución oficial : latorch
versión de la actualizacióntorch1.4
y mitorch 为 1.5 版本