Construcción del entorno de segmentación semántica.

Construcción del entorno de segmentación semántica. 

1. Instalación y configuración del entorno.

Volviendo a las raíces, pytorch proviene de torch, pero torch usa un lenguaje de luna de nicho, y pytorch es python. Por supuesto, pytorch se ha actualizado en muchas ideas de diseño de marcos. También tenemos la intención de utilizar el marco de Pytorch para entrenar el modelo de segmentación semántica.

Instalar pytorch

Antes de usar el marco pytorch, debe estar instalado. El proceso es relativamente simple. Mi plataforma aquí es: ubuntu18.0.4 + python3.6

Primero intente el siguiente comando de instalación:

pip3 instalar antorcha, antorchavision

pip3 instalar antorcha, antorchavision

Sin embargo, se descubrió que la velocidad de descarga era muy lenta y que era difícil de instalar con éxito. Más tarde, encontré este comando en Internet y lo instalé rápidamente:

python3 -m pip install --upgrade torchvision torchvision -i https://pypi.tuna.tsinghua.edu.cn/simple

Después de la instalación, ingrese el siguiente comando para verificar e imprimir el número de versión de la antorcha y la antorcha:

 

Suplementos posteriores:

La versión de CPU anterior está instalada, por lo que el entrenamiento del modelo será muy lento. A continuación se explica la instalación de pytorch de la versión de gpu.

Primero descargue torch-1.1.0-cp36-cp36m-linux_x86_64.whl y torchvision-0.3.0-cp36-cp36m-manylinux1_x86_64.whl desde https://download.pytorch.org/whl/cu90/torch_stable.html Paquete y luego escriba el comando:

pip3 desinstalar la antorcha

pip3 desinstalar torchvision

sudo pip3 install xxx / torch-1.1.0-cp36-cp36m-linux_x86_64.whl xxx / torchvision-0.3.0-cp36-cp36m-manylinux1_x86_64.whl

 Entrada durante la verificación: la importación de antorcha puede causar el siguiente error:

>>> import torchvisionTraceback (última llamada más reciente): 

Archivo "<stdin>", línea 1, en <module> 。。。 。。。 。。。 。。。   

de . Importar funcional como F 

Archivo "/home/xxx/.local/lib/python3.6/site-packages/torchvision/transforms/functional.py", línea 5, en <módulo> de PIL import Image, ImageOps, ImageEnhance, PILLOW_VERSION

ImportError: no se puede importar el nombre 'PILLOW_VERSION'

La solución es instalar una versión relativamente más baja de la almohada, como se muestra a continuación

 pip3 install Pillow == 6.2.2

Después de que la importación de la antorcha y la visión de la antorcha sean exitosas, finalmente use el siguiente comando para confirmar si el estado de cutor de pytorch es normal

 

 

 

 Como se muestra en la figura anterior, si el estado de Cuda es normal, el valor de impresión debe ser Verdadero. En este punto, la versión cuda de pytorch está instalada.

Instalación de otros paquetes dependientes del entorno.

pip3 instalar matplotlib pillow tensorboardX tqdm

El comando anterior es muy simple y debe descargarse e instalarse rápidamente.

Además, es posible que deba instalar los siguientes dos paquetes:

Comando de instalación de Cython:

 python3 -m pip install --upgrade Cython -i https://pypi.tuna.tsinghua.edu.cn/simple

Los comandos de instalación de pycocotools son los siguientes:

 

 pip3 instalar pycocotools

En este punto, la instalación del framework pytorch y los paquetes dependientes del entorno están básicamente completos.

Segundo, segmentación semántica.

¿Qué es la segmentación semántica?

Segmentación semántica (segmentación semántica): consiste en etiquetar cada punto de la categoría de destino en la imagen de acuerdo con la "semántica", de modo que se distingan diferentes tipos de cosas en la imagen. Se puede entender como una tarea de clasificación a nivel de píxel. El punto blanco recto es clasificar cada píxel.

En resumen, nuestro objetivo es dar una imagen de color RGB (alto x ancho x3) o una imagen en escala de grises (alto x ancho x1) y generar un mapa de segmentación, que incluye la etiqueta de categoría de cada píxel (alto x ancho x1). Los detalles se muestran a continuación:

 

  

Nota : Para mayor claridad visual, la imagen de predicción anterior es una imagen de baja resolución. En aplicaciones prácticas, la resolución de la anotación de segmentación debe ser la misma que la resolución de la imagen original.

Aquí hay cinco tipos de imágenes : Persona (persona), Monedero (bolsa), Plantas / Hierba (planta / hierba), Acera (acera), Edificio / Estructuras (edificios).

Similar a la práctica de los valores categóricos estándar, aquí también se crea una etiqueta de categoría objetivo codificada en caliente , esencialmente para crear un canal de salida para cada categoría . Como la figura anterior tiene 5 categorías, el número de canales emitidos por la red también es 5, como se muestra en la siguiente figura:

 

 

 

Como se muestra en la figura anterior, los resultados de la predicción se pueden integrar en un gráfico de segmentación al encontrar la profundidad máxima de cada píxel . Además, podemos observar fácilmente cada objetivo mediante la superposición.

El enfoque argmax también se entiende bien. Como se muestra en la figura anterior, cada canal tiene solo 0 o 1, tomando el canal de la persona como ejemplo, el rojo 1 representa el píxel de la persona, y los otros píxeles son todos 0. Lo mismo es cierto para otros canales, y no hay ningún caso en el que el mismo punto de píxel sea 1 en más de dos canales. Por lo tanto, el valor máximo del canal índice de cada píxel se encuentra a través de argmax. El resultado final es:

 

 Cuando solo una capa de canales se superpone a la imagen original, la llamamos máscara, que solo indica el área donde existe una determinada categoría.

Los resultados de alta resolución se muestran en la siguiente figura: Los diferentes colores representan diferentes categorías:

 

 

En tercer lugar, el conjunto de datos

Los algoritmos de segmentación semántica comunes pertenecen al aprendizaje supervisado, por lo que los conjuntos de datos etiquetados son esenciales.

Existen muchos conjuntos de datos públicos para la segmentación semántica. Actualmente, existen principalmente tres puntos de referencia (conjuntos de datos) en el mundo académico para la capacitación y evaluación de modelos.

El primer conjunto de datos de uso común es la serie Pascal VOC. En esta serie, VOC2012, Pascal Context y otros conjuntos de datos similares también son populares.

El segundo conjunto de datos de uso común es Microsoft COCO. COCO tiene un total de 80 categorías. Aunque hay anotaciones muy detalladas a nivel de píxel, no hay una evaluación oficial de la segmentación semántica. Este conjunto de datos se utiliza principalmente para la segmentación a nivel de instancia y la descripción de la imagen. Por lo tanto, el conjunto de datos COCO a menudo se usa como un conjunto de datos de capacitación adicional para la capacitación modelo.

El tercer conjunto de datos es Cityscapes para entornos de conducción asistida (conducción autónoma), utilizando 19 categorías comunes para la evaluación.

Hay muchos conjuntos de datos que pueden usarse para el entrenamiento de segmentación semántica,

  • Pascal Voc 2012: clasificación de objetos más común, un total de 21 categorías;
  • MS COCO: patrocinado por Microsoft, casi se ha convertido en el conjunto de datos "estándar" de la evaluación del rendimiento del algoritmo de comprensión semántica de imágenes, un total de 80 categorías;
  • Paisajes urbanos: 33 tipos de objetos etiquetados que contienen escenas de calles en 50 ciudades europeas con diferentes escenas, diferentes fondos y diferentes estaciones;
  • Contexto Pascal: Para la expansión de la competencia de reconocimiento PASCAL-VOC 2010, un total de 59 categorías;
  • KITTI: uno de los conjuntos de datos más populares para la investigación de conducción autónoma y robot móvil, un total de 11 categorías;
  • NYUDv2: conjunto de datos de 2.5 dimensiones, que contiene 1449 imágenes RGB-D interiores capturadas por el equipo Microsoft Kinect;
  • SUN-RGBD: derivado de cuatro sensores RGB-D, que contienen 10,000 imágenes RGB-D, el tamaño es el mismo que PASCAL VOC;
  • ADE20K_MIT: un nuevo conjunto de datos para la comprensión de la escena. Este conjunto de datos se puede descargar gratis y contiene 151 categorías.

 

Hay muchos conjuntos de datos. Esta serie de tutoriales no se limita a conjuntos de datos específicos. También puede usar conjuntos de datos como los juegos de Kaggle. Cómo lidiar con cada conjunto de datos, cuál es el formato del conjunto de datos y qué se usará en artículos posteriores El conjunto de datos se explicará en detalle.

Cuatro, máquina GPU

Para las tareas de segmentación semántica, aún es necesario tener una máquina con una tarjeta gráfica GPU de gama alta , de lo contrario, la convergencia del entrenamiento será lenta.

El mejor entorno de desarrollo es Linux , porque en el trabajo diario de la compañía, básicamente utiliza el servidor en la nube de Linux para el trabajo de desarrollo de modelos, es beneficioso adaptarse de antemano al sistema operativo Linux.

Para el grupo de estudiantes, si el laboratorio está investigando en la dirección del aprendizaje profundo y los recursos están completos, entonces todavía debería haber un servidor GPU. No se preocupe por el problema del servidor GPU.

Sin embargo, debido a las condiciones limitadas, el laboratorio no está equipado con un servidor GPU, y desea aprender el conocimiento relacionado con el aprendizaje profundo. Hay tres métodos:

1. Servidor en la nube gratuito Google Colab

Google Colab apenas se puede usar. Es un servidor de GPU gratuito proporcionado por Google . La potencia de cómputo de GPU proporcionada está bien, pero su problema principal es que debe estar sobre la pared y el espacio de almacenamiento es pequeño . El espacio de almacenamiento de Google Colab es Consíguelo en Google Drive. Google Drive solo proporciona 15G de espacio de almacenamiento gratuito. Si desea expandir el espacio, aún necesita gastar dinero.

Si desea utilizar el servidor en la nube gratuito Google Colab, puede hacer su propio tutorial de Baidu.

2. Servidor en la nube GPU pago de Alibaba Cloud

Alibaba Cloud proporciona recursos de servidor en la nube de GPU. Hay dos modelos de pago: suscripción mensual y pago por flujo. Hay servidores P4 e incluso servidores V100. El rendimiento es fuerte y el precio también es muy conmovedor. Las dos palabras lo describen como muy costoso y los usuarios individuales no lo recomiendan. Además de Alibaba Cloud que proporciona servicios de GPU en la nube, Tencent, Baidu y Huawei tienen los servicios correspondientes, pero todos son caros.

3. Configurar una computadora host

Puede configurar un host de escritorio usted mismo, que también es una inversión en usted mismo. Para configurar un buen host que se pueda utilizar para el aprendizaje profundo, se necesitan unos 6000 yuanes .

La capacitación del aprendizaje profundo depende del rendimiento de la tarjeta gráfica , por lo que debe configurar una mejor tarjeta N, que es la tarjeta gráfica NVIDIA. El truco de seleccionar la tarjeta gráfica es mirar el diagrama de escalera de la tarjeta gráfica:

 

 Este diagrama de escalera de gráficos incluye principalmente la clasificación de las tarjetas gráficas de uso común en el mercado , excluyendo las tarjetas gráficas con un precio de 100,000 como V100.

Cuanto mayor sea el diagrama de escalera, mayor será el rendimiento de la tarjeta gráfica. No elija la tarjeta gráfica AMD de la derecha . Aunque el rendimiento es bueno, la tarjeta A no es compatible con CUDA.

Según su propio presupuesto, elija una tarjeta gráfica. La memoria de video de la tarjeta gráfica debe ser tan grande como 8G o más . La capacitación en modelos de aprendizaje profundo consume recursos de memoria.

Compré el RTX 2060 Super de MSI a un precio de 3399 yuanes en el momento de la compra. La tarjeta gráfica no mantiene el valor, y el precio será más y más bajo con el tiempo.

De hecho, puede escribir mucho para configurar la computadora, como la elección de CPU, placa base de computadora, fuente de alimentación, memoria, disipador de calor, etc., no se expandirá aquí. Si no tiene la energía para armar una computadora de escritorio, puede comprar directamente una computadora de escritorio con la tarjeta gráfica correspondiente, pero el precio será más costoso que la computadora de escritorio que ensambló.

V. Construcción del entorno de desarrollo.

Condicional, se recomienda utilizar el sistema Ubuntu para configurar el entorno de desarrollo, Ubuntu es una de las distribuciones de Linux, adecuada para principiantes, interfaz amigable, operación simple.

Dado que la placa base de la computadora que compré no es compatible con la instalación del sistema basado en Linux, Windows se usará como entorno de desarrollo en el futuro, pero esto no afecta la explicación del principio y el código del algoritmo.

Mi configuración de escritorio:

CPU: Intel i7 9700k

Gráficos: RTX 2060 Super

Sistema: Windows 10

Después de instalar el sistema de Windows y los controladores necesarios, las herramientas que se instalarán son: CUDA, Anaconda3, cuDNN, Pytorch-gpu, Fluent Terminal (opcional).

1 CUDA

CUDA es una plataforma informática lanzada por el fabricante de tarjetas gráficas NVIDIA. Necesitamos elegir la versión CUDA compatible de acuerdo con el modelo de nuestra tarjeta gráfica. Por ejemplo, RTX 2060 Super es compatible con CUDA 10:

 

 

La instalación tonta es muy simple.

Después de la instalación, debe configurar las variables de entorno del sistema, computadora-> botón derecho del mouse-> propiedades-> configuración avanzada del sistema-> variables de entorno-> Ruta:

 

 

Agregue su propia ruta NVSMI a la variable de entorno, utilicé la dirección de instalación predeterminada:

 

  

Después de la configuración, puede usar el comando nvidia-smi en cmd para ver la tarjeta gráfica.

2 Anaconda3

Anaconda es el administrador de paquetes y el administrador de entorno de Python, que puede facilitar nuestra instalación de bibliotecas de terceros de Python.

 

 Elija la versión Python 3.7, la instalación también es muy simple, el siguiente paso es una tontería.

Después de la instalación, las variables de entorno del sistema deben agregarse de la misma manera que al instalar CUDA:

D: \ Anaconda
D: \ Anaconda \ Scripts

Cambie la ruta a la ruta de Anaconda que instaló.

Después de la configuración, la ejecución de conda -V en cmd no informa errores y hay salida de información de versión, lo que indica que la configuración fue exitosa.

3. Instalación de CuDNN y Pytorch

cuDNN es una biblioteca acelerada por GPU para redes neuronales profundas. Enfatiza el rendimiento, la facilidad de uso y la baja sobrecarga de memoria.

Después de instalar Anaconda, puede usar conda para instalar cuDNN y Pytorch.

Abra Anaconda Prompt, que es la herramienta de línea de comandos que viene con Anaconda. Primero debe usar esta herramienta para crear un entorno y usar el cmd que viene con el sistema directamente. Puede encontrar algunos problemas extraños, como CondaHTTPError. Ingrese en el mensaje de Anaconda:

conda create -n your_name jupyter notebook

El significado de esta oración es crear un entorno virtual llamado your_name, y este entorno virtual además instala una biblioteca de terceros de jupyter notebook. Puede cambiar su_nombre a su propio nombre favorito, este nombre es el nombre de su entorno virtual, puede elegirlo usted mismo, como Jack.

Luego, ingrese y para instalar:

 

 

 

Después de la instalación, puede usar el comando conda info -e para ver el entorno existente.

 

 

 

Como puede ver en la imagen de arriba, hay dos entornos, uno es base, el entorno básico incorporado y el otro es nuestro entorno recién creado llamado jack. La razón del nuevo entorno es que podemos administrar el entorno que configuramos por separado.

Después de instalar el entorno, podemos activar el entorno jack e instalar la versión cuDNN y GPU de Pytorch. Active el entorno llamado jack:

  • ·        
activar jack

 

  

Como puede ver, nuestro entorno ha cambiado de base a jack. Instale cuDNN en el entorno jack:

  • ·        
Conda instalar cudnn

Después de instalar cuDNN, instale Pytorch y abra el sitio web oficial de Pytorch:

 

 

 

De acuerdo con su propia selección de entorno, después de la selección, la página web dará automáticamente instrucciones para ejecutarse. Puede ser necesario distinguir entre la versión de Python y la versión de CUDA.

Método de visualización de la versión de Python: ingrese python directamente en la línea de comando y verá la versión de Python.

 

 

Para ver la versión de CUDA, ingrese nvidia-smi en la línea de comando:

 

  

Después de confirmar la versión, puede instalar la versión GPU de Pytorch a través de las instrucciones proporcionadas en el sitio web oficial de Pytorch.

En este punto, se ha construido el entorno básico, felicidades.

4 Terminal Terminal fluido

El entorno básico está configurado y el uso normal es suficiente.

Sin embargo, aquellos que persiguen la belleza pueden sentir que las herramientas de línea de comandos proporcionadas con Windows y las herramientas de línea de comandos proporcionadas por Anaconda son demasiado feas.

¿Existe un terminal atractivo y fácil de usar? La respuesta es sí, pero debe configurarlo usted mismo, y todavía hay algunos pozos que deben pisarse lentamente.

Por ejemplo, Fluent Terminal, es una herramienta de terminal moderna que también recomiendo. Es un emulador de terminal que es exclusivo de la plataforma Windows y utiliza tecnología UWP para crear un valor ultra alto. Primer vistazo al valor nominal:

 

 

 

Hay muchas herramientas para este tipo de embellecimiento, que deben ser exploradas por usted mismo. Dado que este artículo no es un artículo de embellecimiento específicamente para Terminal, no es necesario introducir estas herramientas de embellecimiento en demasiado espacio. Aquellos a quienes les gusta lanzar pueden usar su propio Baidu de acuerdo con sus propias necesidades.

 

 

Supongo que te gusta

Origin www.cnblogs.com/wujianming-110117/p/12683620.html
Recomendado
Clasificación