Comprender la visi贸n computarizada

1

驴Por qu茅 aprender computer vision?

2

驴Qu茅 es la visi贸n computarizada?

3

Tipos de visi贸n computarizada

4

Introducci贸n a object detection: clasificaci贸n + localizaci贸n

5

Aprende a identificar problemas

Dimensionamiento de proyecto de visi贸n computarizada

6

C贸mo definir los tiempos de tu proyecto

7

C贸mo costear tu proyecto

8

C贸mo identificar los roles necesarios en el proyecto

9

Producto m铆nimo viable en computer vision

Obtenci贸n y procesamiento de los datos

10

Obtenci贸n de datos para tu proyecto

11

Limpieza de la base de datos

12

Distribuci贸n de datos en entrenamiento y testeo

13

Etiquetado de los datos de test

14

Etiquetado de los datos de train

15

Transforma tu base de datos a TFRecord

16

Transformar CSV a TFRecord

Entrena, testea y optimiza tus modelos

17

Librer铆as a importar durante fase de entrenamiento

18

Fase de entrenamiento del modelo

19

Balanceo de im谩genes y data augmentation

20

Entrena, evalua y optimiza con TensorBoard

21

Validaci贸n de modelo en un entorno de ejecuci贸n

22

Re-entrenamiento del modelo para obtener mejores resultados

23

Seguimiento de centroides con OpenCV

24

Configuraci贸n de los centroides con OpenCV

25

Algoritmo de direcci贸n y conteo con OpenCV

26

Crea un ciclo de entrenamiento de tu modelo: MLOps

Producto con visi贸n computarizada en producci贸n

27

Prepara tu entorno en Google Cloud Platform

28

Carga y preprocesamiento de modelos

29

Postprocesamiento de modelos

30

Despliega y consume tu modelo en producci贸n

31

Bonus: aprende a apagar las m谩quinas de GCP para evitar sobrecostos

Siguientes pasos en inteligencia artificial

32

Siguientes pasos en inteligencia artificial

A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Transformar CSV a TFRecord

16/32
Recursos

Object detection API:

import os
%cd /content
!git clone --quiet https://github.com/tensorflow/models.git
%cd /content/models/
!git checkout 58d19c67e1d30d905dd5c6e5092348658fed80af
!apt-get update && apt-get install -y -qq protobuf-compiler python-pil python-lxml python-tk
!pip install -q Cython contextlib2 pillow lxml matplotlib
!pip install -q pycocotools
%cd /content/models/research
!protoc object_detection/protos/*.proto --python_out=.
os.environ['PYTHONPATH'] += ':/content/models/research/:/content/models/research/slim/'
!python object_detection/builders/model_builder_test.py

Aportes 5

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Proceso de instalaci贸n de la librer铆a object detection:

import os
%cd /content
!git clone --quiet https://github.com/tensorflow/models.git
%cd /content/models/
!git checkout 58d19c67e1d30d905dd5c6e5092348658fed80af
!apt-get update && apt-get install -y -qq protobuf-compiler python-pil python-lxml python-tk
!pip install -q Cython contextlib2 pillow lxml matplotlib
!pip install -q pycocotools
%cd /content/models/research
!protoc object_detection/protos/*.proto --python_out=.
os.environ['PYTHONPATH'] += ':/content/models/research/:/content/models/research/slim/'
!python object_detection/builders/model_builder_test.py

El c贸digo usado para crear los TFRecords est谩 basado en TensorFlow 1.x, esta versi贸n de TensorFlow no deber铆a ser usada para nuevos proyectos, aqu铆 les prepar茅 una implementaci贸n con TensorFlow 2.x si tienen comentarios y/o correcciones, son bienvenidos:

def class_text_to_int(row_label):
    if row_label == MOTORCYCLE_LABEL:
        return 1
    elif row_label == CAR_LABEL:
        return 2
    else: return None


def split(df, group):
    """ Create a namedtuple with the filename and all data related to cars 
    and/or motorcycles found on the picture"""
    data = namedtuple('data', ['filename', 'object'])
    gb = df.groupby(group)  # group DataFrame by filename
    return [data(filename, gb.get_group(x)) for filename, x in zip(gb.groups.keys(), gb.groups)]


def create_tf_example(group, path):
    """ Create TFRecord files"""
    image  = tf.keras.utils.load_img(os.path.join(DATASET_PATH, group.filename))
    width, height = image.size
    image_format = image.format.encode('utf8')
    image = tf.io.encode_jpeg(tf.keras.utils.img_to_array(image))

    filename = group.filename.encode('utf8')
    
    # check if the image format is matching with your images.
    xmins = []
    xmaxs = []
    ymins = []
    ymaxs = []
    classes_text = []
    classes = []

    for index, row in group.object.iterrows():
        xmins.append(row['xmin'] / width)
        xmaxs.append(row['xmax'] / width)
        ymins.append(row['ymin'] / height)
        ymaxs.append(row['ymax'] / height)
        classes_text.append(row['classname'].encode('utf8'))
        classes.append(class_text_to_int(row['classname']))

    tf_example = tf.train.Example(features=tf.train.Features(feature={
        'image/height': dataset_util.int64_feature(height),
        'image/width': dataset_util.int64_feature(width),
        'image/filename': dataset_util.bytes_feature(filename),
        'image/source_id': dataset_util.bytes_feature(filename),
        'image/encoded': dataset_util.bytes_feature(image.numpy()),
        'image/format': dataset_util.bytes_feature(image_format),
        'image/object/bbox/xmin': dataset_util.float_list_feature(xmins),
        'image/object/bbox/xmax': dataset_util.float_list_feature(xmaxs),
        'image/object/bbox/ymin': dataset_util.float_list_feature(ymins),
        'image/object/bbox/ymax': dataset_util.float_list_feature(ymaxs),
        'image/object/class/text': dataset_util.bytes_list_feature(classes_text),
        'image/object/class/label': dataset_util.int64_list_feature(classes),
    }))
    return tf_example

En el minuto 8:40 donde se explica la variable path, se usa la funci贸n os.path.join() la cu谩l se usa para concanetar cadenas en formato ruta del sistema, por lo que si le mando, por ejemplo: 鈥渉ola鈥, 鈥渕undo鈥 tendr谩s diferentes salidas de acuerdo al SO que uses, si usas windows tendr谩s: 鈥渉ola\mundo鈥, si usas linux o mac: 鈥渉ola/mundo鈥, sabiendo esto, sabes que no tiene sentido mandarse solo un par谩metro como se hace en el video, por lo que deber铆a ser elimida.

Ejecutar esta linea para instalar la libreria object detection:

!pip install tensorflow-object-detection-api

esto resuelve el problema marcado en amarillo que aparece al copiar y pegar el contenido de 鈥淐onverting from *.csv to *.record鈥 en el enlace que comparte el profe

Mejorar铆a mucha la experiencia si se trabajar谩 con Drive. Muchas veces no me sube el archivo zip donde estaban las fotos, no s茅 que pasaba pero muchas veces ni me cargaba. As铆 que voy a ver como me va cargando la informaci贸n en drive