Use o conjunto de dados VOC para treinar seu próprio modelo YOLOv3-python, tensorflow, keras

Configuração do ambiente

1. Escolha ambiental

python 3.6
tenserflow 1.4.0
keras 2.2.4

2.python3.6 download e configuração
① link de download
https://www.filehorse.com/download-python-64/35070/

instalação processo de instalação é relativamente simples, não descrito aqui pagar mais.
③Configurar variáveis ​​de ambiente
Adicione o caminho para a variável de ambiente PATH de acordo com a localização de sua instalação . Abaixo está o meu caminho de instalação

F: \ PythonLocation
F: \ PythonLocation`Scripts`
descrição:
PythonLocation é o nome do caminho de instalação que obtive por mim mesmo, e precisa corresponder ao seu próprio caminho

3. Instale o módulo correspondente
win + R e digite cmd, execute o seguinte comando

pip install --upgrade pip #更新pip
pip install tensorflow==1.4.0 #安装 tensorflow
pip install --upgrade numpy #numpy是一个基础的数组计算包,有时候版本较老会报错 
pip install keras==2.2.4 #yolo train.py文件里面要用到keras这个高层神经网络API
pip install pillow #安装 图片处理模块PIL(pillow)
pip install matplotlib #安装 2D绘图库matplotlib
pip install opencv-python #安装 opencv视觉库

Uso de modelos oficiais

1. Baixe o
modelo oficial①Download do arquivo de peso yolov3.weights
Link para download: https://pjreddie.com/media/files/yolov3.weights

说明:
Coloque o arquivo baixado no arquivo keras-yolo3


Download do código keras-yolo3 Link para download no Github: https://github.com/qqwweee/keras-yolo3
Link de compartilhamento de disco da rede Baidu: https://pan.baidu.com/s/1KwiR4itdofL0DmhaJtbGJA
Código de extração: pfy2

说明:
É recomendável usar o link de compartilhamento de disco da rede Baidu para fazer o download. O conteúdo baixado pelo Github pode ter algum conteúdo modificado, o que causará alguns erros nas operações subsequentes. O arquivo de peso yolov3.weights já está incluído no compartilhamento de disco da rede Baidu e o download do arquivo de peso pode ser ignorado sem adicioná-lo.

Insira a descrição da imagem aqui
③ Arquivo de peso de conversão

python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

Insira a descrição da imagem aqui
Depois que a execução for concluída
Insira a descrição da imagem aqui
recognition Reconhecimento de imagem

python yolo_video.py --image

Solicitação para inserir o caminho da imagem (a localização da imagem está no diretório keras-yolo3-master e no mesmo diretório do arquivo de peso)
Insira a descrição da imagem aqui
efeito de execução
Insira a descrição da imagem aqui

Faça um conjunto de dados VOC

O nome completo de VOC é Visual Object Classes, que vem do Desafio PASCAL Visual Object Classes (VOC). Este desafio começou de 2005 a 2012. Todos os anos, o organizador fornecerá algumas amostras de imagens para os desafiadores identificarem e classificarem.
Site oficial do PASCAL VOC: http://host.robots.ox.ac.uk/pascal/VOC/ 1. Descrição do catálogo do formato VOC

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Como obter o formato do conjunto de dados VOC

① Baixe o conjunto de dados oficial do VOC, exclua o conteúdo dentro e mantenha apenas cada pasta
②Crie um conjunto de pastas manualmente de acordo com este formato

Esta pasta é colocada diretamente no arquivo de projeto keras-yolo3-master.
2. Prepare amostras e tags XML
① Baixe LabelImg
LabelImg é uma ferramenta de calibração de imagem visual. Faster R-CNN, YOLO, SSD e outros conjuntos de dados necessários para detecção de alvo, todos precisam usar esta ferramenta para calibrar o alvo na imagem. O arquivo XML gerado segue o formato PASCAL VOC.
Link para download:
https://github.com/tzutalin/labelImg/releases

Ele pode ser instalado a partir do código-fonte ou você pode baixar diretamente a versão de instalação gratuita exe


Anotação de imagem Executar método de uso Labelmg
Insira a descrição da imagem aqui

打开文件夹(JPEGImagess)->设置保存文件夹(annotations) 设置自动保存(view ->auto Saving)->标注框(Create RectBox)并命名 快捷键A保存xml->快捷键D下一张

Insira a descrição da imagem aqui
③Gerar índice Crie um novo arquivo **. Py ** (o nome pode ser nomeado)
na pasta VOC2007 e o
Insira a descrição da imagem aqui
código é o seguinte

import os
import random
 
trainval_percent = 0.1
train_percent = 0.9
xmlfilepath = 'Annotations'
txtsavepath = '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)
 
ftrainval = open('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('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:
            ftest.write(name)
        else:
            fval.write(name)
    else:
        ftrain.write(name)
 
ftrainval.close()
ftrain.close()
fval.close()
ftest.close()

Depois de executar o código, gere test.txt,train.txt,trainval.txt,val.txtarquivos em ImageSets / Main
Insira a descrição da imagem aqui

说明:
{class} _train.txt Salve todos os índices do conjunto de treinamento da
classe {class} _val.txt Salve todos os índices do conjunto de validação da
classe {class} _trainval.txt Salve todos os índices do conjunto de validação de treinamento da classe

Treinamento de modelo YOLO

1. Gerar índice de treinamento
No arquivo de projeto keras-yolo3-master , modifique o arquivo voc_annotation.py

O principal é mudar o conteúdo das aulas internas para o objeto a ser treinado (para ser consistente com a nota anterior)

Insira a descrição da imagem aqui
运行该程序,得到下面几个文件,将文件的前缀2007去掉
Insira a descrição da imagem aqui
2.修改配置文件
首先要修改一下 model_data 文件夹中的coco_classes.txtvoc_classes.txt,将里面的对象改成自己要训练的对象名称
3.执行训练
直接将model_data文件夹中原版的yolo.h5复制,改名为yolo_weights.h5,将其作为预训练权重
Insira a descrição da imagem aqui
生成yolo_weights.h5文件之后,在keras-yolo3-master工程文件夹中找到train. py,根据需要,可以更改里面的迭代次数epochs 等参数。如果显存小的话,可以改小batch_size。
Insira a descrição da imagem aqui
运行train.py
Insira a descrição da imagem aqui

这个训练过程会花费时间比较久。

训练完成Insira a descrição da imagem aqui

遇到问题

1.AttributeError: ‘str’ object has no attribute 'decode
Insira a descrição da imagem aqui
解决方法:
卸载原来的h5py模块,安装2.10版本

pip install h5py==2.10 -i https://pypi.tuna.tsinghua.edu.cn/simple/

参考资料

1. A versão keras yolov3 mostra o objeto str sem decodificação de atributo
2. [Keras + TensorFlow + Yolo3] Este artigo domina a rotulagem, o treinamento e o reconhecimento de imagens (tf2 preenchendo orifícios)
3. [YOLO] Use o conjunto de dados VOC para treinar seu próprio modelo YOLOv3 (Keras / TensorFlow)

Acho que você gosta

Origin blog.csdn.net/qq_43279579/article/details/114654516
Recomendado
Clasificación