Notas de aprendizaje automático: creación de detección de objetos personalizados con Detecto

1. Introducción a Detecto

        Detecto es un paquete de Python que le permite crear modelos de detección de objetos y visión por computadora completamente funcionales en solo 5 líneas de código. La inferencia en imágenes fijas y videos, la transferencia de aprendizaje en conjuntos de datos personalizados y la serialización de modelos en archivos son solo algunas de las capacidades de Detecto. Detecto también se basa en PyTorch, lo que permite una fácil transferencia de modelos entre las dos bibliotecas.

        El poder de Detecto es su simplicidad y facilidad de uso. Crear y ejecutar un Faster R-CNN ResNet-50 FPN preentrenado desde Model Zoo de PyTorch requiere 4 líneas de código:

from detecto.core import Model
from detecto.visualize import detect_video

model = Model()  # Initialize a pre-trained model
detect_video(model, 'input_video.mp4', 'output.avi')  # Run inference on a video

        Puedes instalarlo usando el comando pip

pip install detecto

2. Cree un modelo de detección de objetos personalizado

1. Conjunto de datos

        Usamos un conjunto de datos de perros aquí, la dirección de descarga del conjunto de datos. Este conjunto de datos ha sido etiquetado por los desarrolladores de Detecto, solo necesitamos importarlo a nuestro entorno. El conjunto de datos contiene 300 imágenes etiquetadas de golden retrievers y chihuahuas.

Enlace: https://pan.baidu.com/s/1oVXgh093jGnZ1_auQO3mSA 
Código de extracción: htsp

        Hay tres carpetas en el conjunto de datos: images, train_labels y val_labels, que contienen archivos de imágenes, etiquetas de conjuntos de entrenamiento y etiquetas de conjuntos de validación, respectivamente.

2. Preprocesamiento de datos

(1) Convertir etiquetas y visualizar imágenes

from detecto import utils
import matplotlib.pyplot as plt
import matplotlib.image as img
from torchvision import transforms
from detecto import core
from detecto import visualize

utils.xml_to_csv('train_labels', 'train.csv')
utils.xml_to_csv('val_labels', 'val.csv')

image = img.imread('images/n02085620_8611.jpg')
plt.imshow(image)
plt.show()

 (2) Transformación y visualización de imágenes.

transform_img = transforms.Compose([
    transforms.ToPILImage(),
    transforms.Resize(800),
    transforms.RandomHorizontalFlip(0.5),
    transforms.ToTensor(),
    utils.normalize_transform(),
])

dataset = core.Dataset('train.csv', 'images/', transform=transform_img)

image, information = dataset[50]
visualize.show_labeled_image(image, information['boxes'], information['labels'])

3. Entrena el modelo y haz predicciones

        Aquí se utiliza el modelo Faster-RCNN-resnet50. core.DataLoader descarga el modelo resnet50 de forma predeterminada y actualmente hay dos opciones, mobilenet_v3 y mobilenet_v3_320.

dataloader = core.DataLoader(dataset)
validation_data = core.Dataset('val.csv', 'images/')
categories = ['Chihuahua', 'golden_retriever']
classifier = core.Model(categories)
history = classifier.fit(dataloader, validation_data, epochs = 20, verbose = True)
plt.plot(history)


images = []
for i in range(0,36,3):
  image,_ = validation_data[i]
  images.append(image)

visualize.plot_prediction_grid(classifier, images, dim=(4, 3), figsize=(16, 12))

        salida de entrenamiento 

          Los resultados previstos son los siguientes 

 4. Resumen

        La biblioteca de Detecto sigue siendo muy cómoda de usar, pero todavía hay algunos problemas como la compatibilidad de versiones. Al ejecutarse, encontrará muchas versiones, dll y otros problemas. Si está interesado, puede echar un vistazo a su github.

https://github.com/alankbi/detecto icono-predeterminado.png?t=M3C8https://github.com/alankbi/detecto

Supongo que te gusta

Origin blog.csdn.net/bashendixie5/article/details/124282791
Recomendado
Clasificación