Use Mask-RCNN para entrenar su propio conjunto de datos. Basta leer este artículo. A partir de hacer un conjunto de datos, le enseñaré cómo jugar Mask-RCNN paso a paso (tutorial de nivel de niñera)

1. Instalar labelme 

Los algoritmos basados ​​en redes neuronales, como los algoritmos de aprendizaje profundo, están todos basados ​​en datos, y la calidad de los datos afectará la calidad de su modelo final. Al usar Mask-RCNN, lo primero que debe hacer es etiquetar el conjunto de datos. Aquí we default Ha configurado el entorno anaconda. Si no lo ha configurado, puede consultar los blogs de otras personas . Cree un entorno virtual en el entorno conda que se ha configurado. Ingrese el siguiente comando en la terminal para instalar la herramienta de etiquetado labelme :

pip install labelme

pip install pyqt5

pip install pillow==4.0.0

2. Conjunto de datos anotados

El siguiente paso es comenzar a etiquetar los datos, ingresando el siguiente código en la terminal se abrirá automáticamente la herramienta de etiquetado:

labelme

Luego seleccione el segundo elemento para abrir la carpeta, como se muestra en la siguiente figura:

8879cc39540048369cca55e90b316781.png

Seleccione la carpeta donde se encuentran las imágenes de datos y haga clic con el botón derecho para etiquetar las imágenes una por una. Y complete la información de la etiqueta. Después de marcar, haga clic en D para cambiar a la siguiente, y aparecerá una interfaz de guardar aquí, simplemente guárdela directamente en la carpeta donde se encuentra nuestra imagen original. Después de marcar todas las imágenes y obtener todos los siguientes archivos json, cierre la terminal.

7c48b9f175724c0ead1958161f07282a.png

 3. Procesamiento por lotes de archivos Json

El .json actual contiene la información que marcamos, pero aún no es un formato de datos que el código pueda leer directamente. Para diferentes códigos de aprendizaje profundo, el formato de almacenamiento de datos debe determinarse de acuerdo con el método de escritura del código. La siguiente es la máscara anterior: tome rcnn como ejemplo para modificar los datos al formato que necesitamos. Cree un nuevo archivo .txt en la carpeta donde se guardó el archivo .json e ingrese el siguiente contenido:

@echo off
for %%i in (*.json) do labelme_json_to_dataset "%%i"
pause

Después de guardar, cambie la extensión del archivo a .bat, cámbielo a un script que cambie el formato de almacenamiento del archivo y haga doble clic para ejecutar después de guardar. Espere un momento después de ejecutar, obtendrá la siguiente carpeta.

59d8b6b0d1374804b28906d87df601f2.png

Cree una carpeta como se muestra a continuación:

2442036c00ca464a97551b185c534adf.png

 

 

 

 

La carpeta labelme_json almacena la carpeta obtenida en el paso anterior.

La carpeta json almacena los archivos .json marcados.

La carpeta pic almacena las imágenes originales.

Las cosas almacenadas en las tres carpetas anteriores se pueden copiar y pegar directamente. Aquí hay un pequeño truco. En la clasificación de archivos en la computadora, puede elegir ordenar por tipo de archivo, lo que puede facilitar nuestro copiado y pegado.

cv2_mask almacena el archivo de máscara con el sufijo .png generado en la carpeta obtenida en el paso anterior, el contenido aproximado es el siguiente:

4632b27dfead40b4a44b58450908ef6f.png

 

Es problemático copiar archivos .png en carpetas uno por uno y cambiarles el nombre. Aquí escribimos un script de Python copy.py para operaciones por lotes:

import os 
import shutil

for dir_name in os.listdir('./labelme_json'):
    pic_name = dir_name[:-5] + '.png'
    from_dir = './labelme_json/'+dir_name+'./label.png'
    to_dir = './cv2_mask/'+pic_name
    shutil.copyfile(from_dir, to_dir)
        
    print (from_dir)
    print (to_dir)

Guarde el archivo file.py anterior en el siguiente directorio y ejecútelo:

e3bbc2f388a84dfcb23f1d2a07dc2698.png

 

En este punto, nuestro conjunto de datos está completo. 

 

4. Descarga el código fuente de Mask-RCNN

Descargue el código modificado (si desea modificar el código, puede agregar el grupo qq: 817442229 o agregar directamente el qq del blogger: 2425113371 para obtenerlo gratis), y cambie el nombre del conjunto de datos que hicimos a mydata y colóquelo en este carpeta. Úselo directamente, o puede descargar el código de la versión oficial, pero la versión oficial requiere una comprensión profunda del código antes de que pueda usarse. El enlace de github del código fuente de la versión oficial se adjunta a continuación. Los principiantes sugieren obtener el código fuente directamente de mí: https://github.com/matterport /Mask_RCNN/releases/tag/v2.0

5. Construcción del entorno

Aquellos que se dedican al aprendizaje profundo deben estar familiarizados con la herramienta conda Aquí asumimos que ha instalado conda, una herramienta para administrar entornos virtuales. Cree un nuevo entorno virtual directamente debajo de la base. Este código fuente se ha desarrollado durante mucho tiempo. Si la versión de python es demasiado alta, causará muchos problemas en el futuro. Es mejor usar python2 para construir el entorno, pero Uso la versión de python3 para compilarlo aquí. Puede seguirme directamente. Está bien usar python3. Después de configurar el entorno, debe modificar el código fuente (más sobre esto más adelante):

conda create -n MaskRCNN python=3.6

Después de la creación, use el siguiente comando para activar el entorno:

source activate MaskRCNN

Aquí debería estar bajo el sistema ubuntu:

conda activate MaskRCNN

A continuación, instale tensorflow en este entorno. Tenga en cuenta que tensorflow no puede ser demasiado alto o demasiado bajo aquí. Estoy usando la versión 1.5.0. No especifique la versión. Si no especifica la versión, la versión más alta se descargará de forma predeterminada. , y habrá pregunta:

pip install tensorflow==1.5.0

También puede descargar la versión gpu aquí. La versión gpu se ejecutará mucho más rápido que la cpu, pero la versión gpu de tensorflow tiene una relación correspondiente con cuda y cudnn. Si desea usar la versión gpu, es posible que deba reinstalar cuda y cariño:

pip install tensorflow-gpu==1.5.0

La versión de cuda correspondiente aquí es 9.0, verifique la versión de pytorch correspondiente en el sitio web oficial de pytorch y luego use pytorch para ayudarnos a instalar cuda y cudnn:

conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=9.0 -c pytorch

Puede utilizar el siguiente código para comprobar si la instalación se ha realizado correctamente:

import torch
print(torch.cuda.is_available())
print(torch.backends.cudnn.is_available())
print(torch.cuda_version)
print(torch.backends.cudnn.version())

Si el resultado de la ejecución muestra dos verdaderos, significa que la configuración es exitosa. Las últimas dos líneas pueden informar un error debido a razones de versión, pero no importa, simplemente ignórelo y luego continúe.

A continuación, instale keras.Tenga en cuenta que la versión de keras debe corresponder a tensorflow:

pip install keras==2.1.6

Si la descarga es demasiado lenta, considere cambiar la fuente. Después del código anterior, cambie la fuente con -i. Por ejemplo, puede hacer lo mismo al instalar otros paquetes, lo cual es muy útil:

pip install keras==2.1.6 -i https://pypi.tuna.tsinghua.edu.cn/simple

Después de la instalación, abra la carpeta de código con pycharm, haga clic en el terminal a continuación, donde puede usar el siguiente código para instalar todos los paquetes requeridos en requirements.txt:

pip install -r requirements.txt

Si no hay ningún problema después de la descarga y el código se puede ejecutar, significa que el entorno y la configuración están completos. Pero hay una alta probabilidad de que falle, porque el blogger fallará... Si este método falla, debes instalar los paquetes en requirements.txt uno por uno:

pip install numpy
pip install scipy
pip install Pillow
pip install cython
pip install matplotlib
pip install scikit-image
pip install opencv-python
pip install h5py
pip install imgaug
pip install IPython[all]

Ejecute el código anterior línea por línea. Se recomienda ejecutar el código de prueba después de instalar cada paquete para comprobar si tensorflow aún puede funcionar normalmente, ya que algunas versiones de paquetes que no coinciden pueden afectar a tensorflow. El siguiente es el código de prueba:

import tensorflow as tf
import keras
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()

Si el código anterior informa un error cuando el paquete en requirements.txt no está instalado, es probable que la versión de tensorflow y numpy no correspondan para causar un problema. La versión numpy que estoy usando es 1.16.0, que es la versión mínima que ejecuta todos los paquetes y es compatible con tensorflow 1.5.0:

pip install numpy==1.16.0

Si se cambia la versión numpy y aún se informa el error, puede ser un problema con el formato de codificación de python 3. Simplemente agregue todo .decode('utf8') en topology.py como se muestra en la siguiente figura:

02a4b87ec396462b9811b73a6dd07452.png

Al instalar opencv-python, existe una alta probabilidad de que se informe un error, porque la descarga predeterminada es la versión más alta y la versión más alta de cv no es compatible con tensorflow==1.5.0. Yo uso:

pip install opencv-python==4.3.0.38

Después de instalar los paquetes anteriores, puede haber advertencias al ejecutar el código:

9945aba1219445bcb9c4c70bf8fd6281.png

 El motivo de esta advertencia es que la versión de scikit-image no es compatible, solo use el siguiente comando para reinstalar:

pip install -U scikit-image==0.16.2

En cuanto a otras advertencias, son irrelevantes y pueden ignorarse, pero el informe de error rojo parece muy incómodo, puede agregar el siguiente contenido al frente del código para bloquearlo:

# 版本不兼容报错,直接忽略
import warnings
warnings.filterwarnings("ignore")

6. Modificar el código fuente descargado

1. Modifique la línea 57 de train_test.py y cámbiela al número de categorías +1.

539fd28fdaf64d57bbab43aaf766cd18.png

2. Modifique la línea 121 de train_test.py, comente las originales y reescriba tantas líneas como categorías haya, el segundo parámetro de cada línea es el número de serie y el tercer parámetro es el nombre de la categoría.

f1a86160ee9041cb8593addd9dcfd96e.png

 3. Modifique las líneas 178 ~ 182 de train_test.py a su propia ruta. La ruta relativa se usa aquí. Si su conjunto de datos se coloca de la manera que dije antes, no necesita cambiarlo aquí.

e0a17ccf10774f58b450de1464c20bdb.png

 4. Modifique DETECTION_MIN_CONFIDENCE en config.py y reduzca este valor para obtener más resultados de predicción.

698d6403452c4ce4bdb0271f5a42140f.png

5. Modifique la línea 61~62 de train_test.py para especificar el tamaño de la imagen.

536e940a95554597914c173d3bb4b8a0.png

 6. Modifique las líneas 160~163 de train_test.py.

404025274657452e85b2ffecc68d7e4f.png

No es necesario modificar el resto de los parámetros. Después de completar, ejecute el archivo train_test para comenzar el entrenamiento.

Siete, código de prueba

Ejecutando el código de prueba Para instalar pycocotools, ejecute:

pip install pycocotools

Si ocurre el siguiente error:

a1a4fecc07f9471f867aa5efbccc87f2.png

 Significa que falta Microsoft Visual C++ 14.0, simplemente vaya a la siguiente dirección para instalarlo:

https://my.visualstudio.com/Downloads?q=build%20tools

Busque herramientas de compilación y descargue herramientas de compilación en formato DVD:

6ae1d524e57b49609a63a90ad279e77f.pngInstálelo después de que se complete la descarga. Pero este método ocupará mucha memoria, un método más directo, se ejecuta en la terminal:

conda install libpython m2w64-toolchain -c msys2

Para contenido específico, consulte:

https://blog.csdn.net/qzzzxiaosheng/article/details/125119006

Supongo que te gusta

Origin blog.csdn.net/ekekex/article/details/130171832
Recomendado
Clasificación