<jupyter_start><jupyter_text>Detección de elementos En este ejemplo vamos a usa el modelo [YOLO](https://arxiv.org/pdf/1612.08242.pdf), gracias al cual podremos detectar los elementos que aparecen dentro de una fotgrafia o video.La identificación que obtendremos con YOLO consite en una etiqueta indicando que es lo que se ha detectado y las posiciones en la que se enuentra este objeto.La implementación que usaresmos será la proporcionado por la bibliotece [darkflow](https://github.com/thtrieu/darkflow).  PASO 1: definición y carga del modelosEn este paso cargaremos el modelo de YOLO, así como los pesos del entrenamiento de este para YOLOv2 608x608 que podemos obtener [aquí](https://pjreddie.com/darknet/yolov2/). El fichero de pesos descargados debemos colocarlo dentro de un carpeta llamada `bin` en la carpeta en la que hemso guardado la biblioteca *darkflow*.<jupyter_code>from darkflow.net.build import TFNet

#Vamos a la carpeta donde se encuentra darkflow-master
%cd '/Users/Mario/Downloads/darkflow-master/'

options = {
    'model': 'cfg/yolo.cfg',
    'load': 'bin/yolo.weights',
    'threshold': 0.3,
    'gpu': 1.0
}

tfnet = TFNet(options)

#Se vuelve al directorio de ejecución
%cd '-'<jupyter_output>/Users/Mario/Downloads/darkflow-master
Parsing ./cfg/yolo.cfg
Parsing cfg/yolo.cfg
Loading bin/yolo.weights ...
Successfully identified 203934260 bytes
Finished in 1.49076604843s
Model has a coco model name, loading coco labels.

Building net ...
Source | Train? | Layer description                | Output size
-------+--------+----------------------------------+---------------
WARNING:tensorflow:From /Users/Mario/anaconda/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
       |        | input                            | (?, 608, 608, 3)
 Load  |  Yep!  | conv 3x3p1_1  +bnorm  leaky      | (?, 608, 608, 32)
 Load  |  Yep!  | maxp 2x2p0_2                     | (?, 304, 304, 32)
 Load  |  Yep!  | conv 3x3p1_1  +bnorm  leaky      | (?, 304, 304, 64)
 Load  |  Yep!  | maxp 2x2p0_2  [...]<jupyter_text>PASO 2: Carga de la imagen que queremos procesar<jupyter_code>import cv2

img = cv2.imread('../datasets/test_4.png', cv2.IMREAD_COLOR)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)<jupyter_output><empty_output><jupyter_text>PASO 3: Pasamos la imagen por el modelo<jupyter_code>result = tfnet.return_predict(img)<jupyter_output><empty_output><jupyter_text>PASO 4: Procesmiento de los resultadosUna vez se tienen los resultados del procesamiento, es posible pintar el recuadro que indica cada objeto, así como la etiqueta asignada por el modelo<jupyter_code>from PIL import Image, ImageDraw, ImageFont


imgagen = Image.fromarray(img, 'RGB')
draw = ImageDraw.Draw(imgagen)
fnt = ImageFont.truetype('/Library/Fonts/Arial Bold.ttf', 90)

for elemetno in result:
    tl = (elemetno['topleft']['x'], elemetno['topleft']['y'])
    br = (elemetno['bottomright']['x'], elemetno['bottomright']['y'])
    label = elemetno['label']
    draw.rectangle((tl, br), outline="red")
    draw.text(tl, label, font=fnt )
imgagen.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12492382693479585, 'fraction_numerical': 0.032602071907373555, 'mean_word_length': 3.8493353028064994, 'pattern_counts': {'":': 0, '<': 16, '<?xml version=': 0, '>': 16, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 3, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '385724', 'license': 'Unlicense', 'n_tokens_mistral': 1222, 'n_tokens_neox': 1138, 'n_words': 321, 'path': 'keras_tf_pytorch/Notebooks/.ipynb_checkpoints/Deteccion_elementos-checkpoint.ipynb', 'repo_name': 'andresdelarosa1887/Public-Projects', 'size': '3282'}