Detecci贸n de objetos con ImageAI en Python

    Introducci贸n

    La detecci贸n de objetos es una tecnolog铆a que pertenece al dominio m谩s amplio de Visi贸n por computador. Se trata de identificar y rastrear objetos presentes en im谩genes y videos. La detecci贸n de objetos tiene m煤ltiples aplicaciones como detecci贸n de rostros, detecci贸n de veh铆culos, conteo de peatones, autos aut贸nomos, sistemas de seguridad, etc.

    Los dos objetivos principales de la detecci贸n de objetos incluyen:

    • Identificar todos los objetos presentes en una imagen.
    • Filtra el objeto de atenci贸n

    En este art铆culo, ver谩 c贸mo realizar la detecci贸n de objetos en Python con la ayuda del ImageAI biblioteca.

    Aprendizaje profundo para la detecci贸n de objetos

    Las t茅cnicas de aprendizaje profundo han demostrado ser de vanguardia para varios problemas de detecci贸n de objetos. A continuaci贸n, se enumeran algunos de los enfoques de aprendizaje profundo m谩s utilizados para la detecci贸n de objetos:

    En el resto de este art铆culo, veremos qu茅 es exactamente ImageAI y c贸mo usarlo para realizar la detecci贸n de objetos.

    ImageAI

    ImageAI es una biblioteca de Python creada para permitir a los desarrolladores crear aplicaciones y sistemas con capacidades aut贸nomas de aprendizaje profundo y visi贸n por computadora utilizando unas pocas l铆neas de c贸digo directo. ImageAI contiene una implementaci贸n de Python de casi todos los algoritmos de aprendizaje profundo de 煤ltima generaci贸n como RetinaNet, YOLOv3y TinyYOLOv3.

    ImageAI utiliza varias API que funcionan sin conexi贸n: tiene API de detecci贸n de objetos, detecci贸n de video y seguimiento de objetos a las que se puede llamar sin acceso a Internet. ImageAI hace uso de un modelo previamente entrenado y se puede personalizar f谩cilmente.

    los ObjectDetection La clase de la biblioteca ImageAI contiene funciones para realizar la detecci贸n de objetos en cualquier imagen o conjunto de im谩genes, utilizando modelos previamente entrenados. Con ImageAI, puede detectar y reconocer 80 tipos diferentes de objetos cotidianos comunes.

    Configurar su entorno

    En esta parte del tutorial, trabajaremos en la instalaci贸n de ImageAI.

    Para usar ImageAI necesitas instalar algunas dependencias. El primer paso es tener Python instalado en su computadora. Descargue e instale Python 3 desde sitio web oficial de Python.

    Una vez que tenga Python instalado en su computadora, instale las siguientes dependencias usando pip:

    TensorFlow

    $ pip install tensorflow
    

    OpenCV

    $ pip install opencv-python
    

    Keras

    $ pip install keras
    

    ImageAI

    $ pip install imageAI
    

    Ahora descarga el TinyYOLOv3 archivo de modelo que contiene el modelo de clasificaci贸n que se utilizar谩 para la detecci贸n de objetos.

    Realizaci贸n de la detecci贸n de objetos con ImageAI

    Ahora veamos c贸mo usar realmente la biblioteca ImageAI. Explicar茅 paso a paso c贸mo puedes construir tu primer modelo de detecci贸n de objetos con ImageAI.

    Paso 1

    Nuestra primera tarea aqu铆 es crear las carpetas necesarias. Para este tutorial necesitamos las siguientes carpetas:

    • Detecci贸n de objetos: carpeta ra铆z
    • modelos: almacena el modelo previamente entrenado
    • entrada: almacena el archivo de imagen en el que queremos realizar la detecci贸n de objetos
    • salida: almacena archivo de imagen con objetos detectados

    Una vez que haya creado sus carpetas, su Object detection La carpeta debe tener las siguientes subcarpetas:

    鈹溾攢鈹 input
    鈹溾攢鈹 models
    鈹斺攢鈹 output
    
    3 directories, 0 files
    
    Paso 2

    Abra su editor de texto preferido para escribir c贸digo Python y cree un nuevo archivo detector.py.

    Paso 3

    Importar ObjectDetection clase de la biblioteca ImageAI.

    from imageai.Detection import ObjectDetection
    
    Etapa 4

    Ahora que ha importado la biblioteca imageAI y el ObjectDetection clase, lo siguiente es crear una instancia de la clase ObjectDetection, como se muestra aqu铆:

    detector = ObjectDetection()
    
    Paso 5

    Especifiquemos la ruta de nuestra imagen de entrada, imagen de salida y modelo.

    model_path = "./models/yolo-tiny.h5"
    input_path = "./input/test45.jpg"
    output_path = "./output/newimage.jpg"
    
    Paso 6

    Despu茅s de instanciar el ObjectDetection class ahora podemos llamar a varias funciones de la clase. La clase contiene las siguientes funciones para llamar modelos previamente entrenados: setModelTypeAsRetinaNet(), setModelTypeAsYOLOv3()y setModelTypeAsTinyYOLOv3().

    Para el prop贸sito de este tutorial, usar茅 el pre-entrenado TinyYOLOv3 modelo, y por lo tanto usaremos el setModelTypeAsTinyYOLOv3() funci贸n para cargar nuestro modelo.

    detector.setModelTypeAsTinyYOLOv3()
    
    Paso 7

    A continuaci贸n, vamos a llamar a la funci贸n setModelPath(). Esta funci贸n acepta una cadena que contiene la ruta al modelo entrenado previamente:

    detector.setModelPath(model_path)
    
    Paso 8

    Este paso llama a la funci贸n loadModel() desde el detector ejemplo. Carga el modelo desde la ruta especificada anteriormente usando el setModelPath() m茅todo de clase.

    detector.loadModel()
    
    Paso 9

    Para detectar objetos en la imagen, necesitamos llamar al detectObjectsFromImage funci贸n usando el detector objeto que creamos en la secci贸n anterior.

    Esta funci贸n requiere dos argumentos: input_image y output_image_path. input_image es la ruta donde se ubica la imagen que estamos detectando, mientras que output_image_path El par谩metro es la ruta para almacenar la imagen con los objetos detectados. Esta funci贸n devuelve un diccionario que contiene los nombres y las probabilidades porcentuales de todos los objetos detectados en la imagen.

    detection = detector.detectObjectsFromImage(input_image=input_path, output_image_path=output_path)
    
    Paso 10

    Se puede acceder a los elementos del diccionario recorriendo cada elemento del diccionario.

    for eachItem in detection:
        print(eachItem["name"] , " : ", eachItem["percentage_probability"])
    
    C贸digo completo para la detecci贸n de objetos

    Aqu铆 est谩 el c贸digo completo para la detecci贸n de im谩genes:

    from imageai.Detection import ObjectDetection
    
    detector = ObjectDetection()
    
    model_path = "./models/yolo-tiny.h5"
    input_path = "./input/test45.jpg"
    output_path = "./output/newimage.jpg"
    
    detector.setModelTypeAsTinyYOLOv3()
    detector.setModelPath(model_path)
    detector.loadModel()
    detection = detector.detectObjectsFromImage(input_image=input_path, output_image_path=output_path)
    
    for eachItem in detection:
        print(eachItem["name"] , " : ", eachItem["percentage_probability"])
    

    En la salida, puede ver el nombre de cada objeto detectado junto con su porcentaje de probabilidad como se muestra a continuaci贸n:
    Salida

    car  :  54.72719073295593
    car  :  58.94589424133301
    car  :  62.59384751319885
    car  :  74.07448291778564
    car  :  91.10507369041443
    car  :  97.26507663726807
    car  :  97.55765795707703
    person  :  53.6459743976593
    person  :  56.59831762313843
    person  :  72.28181958198547
    

    Imagen original:

    La imagen original, es decir, “test45”, se ve铆a as铆:

    Imagen con detecci贸n de objetos:

    Despu茅s de la detecci贸n del objeto, la imagen resultante se ve as铆:

    Puede ver que ImageAI ha identificado con 茅xito autom贸viles y personas en la imagen.

    Conclusi贸n

    La detecci贸n de objetos es una de las tareas de visi贸n por computadora m谩s comunes. Este art铆culo explica c贸mo realizar la detecci贸n de objetos en Python utilizando la biblioteca ImageAI con la ayuda de un ejemplo.

    Referencias

    .

    Etiquetas:

    Deja una respuesta

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