Detección de bordes holísticamente anidada con OpenCV y aprendizaje profundo

La detección de bordes anidada holísticamente (HED) es un modelo de aprendizaje profundo que utiliza redes neuronales totalmente convolucionales y redes supervisadas en profundidad para realizar predicciones de imagen a imagen. HED desarrolla automáticamente ricas representaciones jerárquicas (dirigidas por una supervisión profunda en las respuestas laterales) que son fundamentales para resolver la ambigüedad en la detección de bordes y límites de objetos.

Arquitectura modelo

El modelo es VGGNet con pocas modificaciones-

  1. La capa de salida lateral está conectada a la última capa convolucional de cada etapa, respectivamente conv1_2, conv2_2, conv3_3, conv4_3, conv5_3. El tamaño del campo receptivo de cada una de estas capas convolucionales es idéntico al de la capa de salida lateral correspondiente.
  2. Se elimina la última etapa de VGGNet, incluida la quinta capa de agrupación y todas las capas completamente conectadas.

La arquitectura final de la red HED tiene 5 etapas, con pasos 1, 2, 4, 8 y 16, respectivamente, y con diferentes tamaños de campo receptivo, todos anidados en VGGNet. 

¿Por qué HED?

El detector de bordes anidado holísticamente (HED) propuesto aborda dos problemas críticos: 

  1. Entrenamiento y predicción holísticos de imágenes, inspirados en redes neuronales totalmente convolucionales para la clasificación de imagen a imagen (el sistema toma una imagen como entrada y produce directamente la imagen del mapa de bordes como salida)
  2.  Aprendizaje de características multiescala anidado, inspirado en redes de supervisión profunda que realiza una supervisión de capa profunda para «guiar» los primeros resultados de clasificación.

Pasos a implementar

  • Importe todas las bibliotecas necesarias.
  • Lee la imagen.

img = cv2.imread(“ruta”)

  • Crear la gota

blob = cv2.dnn.blobFromImage(img, scalefactor=1.0, size=(W, H),swapRB=False, crop=False)

  • Cargue el modelo Caffe preentrenado
    • Este marco se basa en las implementaciones disponibles públicamente de FCN y DSN y se implementa utilizando la biblioteca Caffe disponible públicamente. A partir de una inicialización con el modelo de red VGG-16 preentrenado, se ajusta toda la red en nuestro sistema HED.
    • Este modelo de Caffe está codificado en dos archivos
      1. Un archivo prototxt : un archivo Caffe JSON de texto que incluye la definición del modelo (implementación) (es decir, capas, entrada esperada, …..)
      2. El modelo Caffe pre-entrenado : Pesos de redes neuronales.

net = cv2.dnn.readNetFromCaffe(“ruta al archivo prototxt”, “ruta al archivo de pesos del modelo”)

  • Pase la mancha de la imagen al modelo y encuentre la salida.

net.setInput(blob)

hed = net.adelante()

  • Formatee los datos en el formato correcto para mostrar (si es necesario)

hed = cv2.resize(hed[0, 0], (An, Al))

hed = (255 * hed).astype(“uint8”)

  •  Mostrar la salida 

cv2.imshow(“HED”, hed)

 

Ejemplo 1

Aporte :

Python3

import cv2
img = cv2.imread("input.webp")
(H, W) = img.shape[:2]
blob = cv2.dnn.blobFromImage(img, scalefactor=1.0, size=(W, H),
    swapRB=False, crop=False)
net = cv2.dnn.readNetFromCaffe("deploy.prototxt", "hed_pretrained_bsds.caffemodel")
net.setInput(blob)
hed = net.forward()
hed = cv2.resize(hed[0, 0], (W, H))
hed = (255 * hed).astype("uint8")
cv2.imshow("Input", img)
cv2.imshow("HED", hed)
cv2.waitKey(0)

Producción:

Producción

Ejemplo 2.

Aporte

Python3

import cv2
img = cv2.imread("pexels-ylanite-koppens-2343170(1).jpg")
(H, W) = img.shape[:2]
blob = cv2.dnn.blobFromImage(img, scalefactor=1.0, size=(W, H),
    swapRB=False, crop=False)
net = cv2.dnn.readNetFromCaffe("deploy.prototxt", "hed_pretrained_bsds.caffemodel")
net.setInput(blob)
hed = net.forward()
hed = cv2.resize(hed[0, 0], (W, H))
hed = (255 * hed).astype("uint8")
cv2.imshow("Input", img)
cv2.imshow("HED", hed)
cv2.waitKey(0)

Producción

Producción

Publicación traducida automáticamente

Artículo escrito por bhavyajain4641 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *