Artigo Diretório
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.
③ Arquivo de peso de conversão
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
Depois que a execução for concluída
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)
efeito de execução
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
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
打开文件夹(JPEGImagess)->设置保存文件夹(annotations) 设置自动保存(view ->auto Saving)->标注框(Create RectBox)并命名 快捷键A保存xml->快捷键D下一张
③Gerar índice Crie um novo arquivo **. Py ** (o nome pode ser nomeado)
na pasta VOC2007 e o
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.txt
arquivos em ImageSets / Main
说明:
{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)
运行该程序,得到下面几个文件,将文件的前缀2007去掉
2.修改配置文件
首先要修改一下 model_data 文件夹中的coco_classes.txt和voc_classes.txt,将里面的对象改成自己要训练的对象名称
3.执行训练
直接将model_data文件夹中原版的yolo.h5复制,改名为yolo_weights.h5,将其作为预训练权重
生成yolo_weights.h5文件之后,在keras-yolo3-master工程文件夹中找到train. py,根据需要,可以更改里面的迭代次数epochs 等参数。如果显存小的话,可以改小batch_size。
运行train.py
这个训练过程会花费时间比较久。
训练完成
遇到问题
1.AttributeError: ‘str’ object has no attribute 'decode
解决方法:
卸载原来的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)