3. ¿Qué se puede hacer con Visión por
Computadora?
● Medir: saber la distancia que hay entre dos pixeles en la imagen o
entre la cámara y el objeto.
o Visión estereoscópica: basado en dos cámaras. Simula la visión humana.
o Triangulación: utiliza una cámara y un emisor de luz. El mayor ejemplo es
el Kinect de Microsoft.
● Segmentar: conocer el límite físico de un objeto.
● Clasificar: darle un nombre a un objeto.
4. ¿Cómo se clasifica un objeto en una imagen?
Por medio de dos pasos: la extracción de las características y el
entrenamiento de un clasificador.
● Búsqueda de características:
o Valor del pixel
o Filtros:
§ Pasa altas, bajas, bandas.
§ Convoluciones.
o Extracción de características:
§ Histogram of Oriented Gradients.
§ Scale-invariant feature transform.
§ Haralick texture features.
8. Aprendizaje profundo
La obtención de características también es por medio de un proceso
iterativo de aprendizaje.
Extractor de
características
entrenable
Extractor de
características
entrenable
Extractor de
características
entrenable
Clasificador
9. Extractor de características entrenable
Contornos Texturas Objetos
*Ejemplo de una red neuronal convolucional entrenada con Imagenet
13. Tratar texto como imagen (Zhang y LeCun,
2015)
El texto es transformado en una imagen binaria.
Dimensiones: (alfabeto x longitud máxima)
Juniperus =
15. ¿Cómo ha sido probado?
1. DBpedia
a. 14 clases.
b. 560,000 documentos para entrenar.
c. 70,000 para probar.
d. 98.40% de exactitud en el conjunto de prueba.
2. Amazon Review Sentiment Analysis
a. 5 clases (subjetividad en comentarios de productos)
b. 3,600,000 comentarios para entrenar.
c. 400,000 comentarios para probar.
d. 59.57% de exactitud en el conjunto de prueba.
3. SogouCA en Chino
17. ¿Qué es Tensorflow?
• Biblioteca de software libre para hacer computación numérica por
medio de grafos.
• Los nodos representan las operaciones matemáticas; las conexiones,
los datos.
• Fue originalmente desarrollado por ingenieros del proyecto Google
Brain.
• Estadísticas de su repositorio en Github
(https://github.com/tensorflow/tensorflow):
• +30k estrellas.
• +12k Forks.
• +300 contribuidores.
19. Implementación usando tflearn
net = tflearn.input_data([None, 7, 1014, 1])
net = tf.pad(net, ((0, 0), (0, 0), (1, 1), (0, 0)))
net = tflearn.layers.conv_2d(net, 64, [7, 3], scope='conv1', padding='valid')
for i in range(4):
net = tflearn.layers.conv_2d(net, 64, [1, 3], scope='conv_64_{0}'.format(i), padding='SAME', activation='relu')
net = tflearn.layers.normalization.batch_normalization(net)
net = tflearn.layers.conv.max_pool_2d(net, [1, 3], strides=2)
for i in range(4):
net = tflearn.layers.conv_2d(net, 128, [1, 3], scope='conv_128_{0}'.format(i), padding='SAME', activation='relu')
net = tflearn.layers.normalization.batch_normalization(net)
net = tflearn.layers.conv.max_pool_2d(net, [1, 3], strides=2)
for i in range(4):
net = tflearn.layers.conv_2d(net, 256, [1, 3], scope='conv_256_{0}'.format(i), padding='SAME', activation='relu')
net = tflearn.layers.normalization.batch_normalization(net)
net = tflearn.layers.conv.max_pool_2d(net, [1, 3], strides=2)
for i in range(4):
net = tflearn.layers.conv_2d(net, 512, [1, 3], scope='conv_512_{0}'.format(i), padding='SAME', activation='relu')
net = tflearn.layers.normalization.batch_normalization(net)
net = tflearn.layers.conv.max_pool_2d(net, [1, 8], strides=16)
net = tflearn.layers.core.flatten(net)
20. Implementación usando tflearn
for i in range(2):
net = tflearn.layers.core.fully_connected(net, 2048, activation='relu')
net = tflearn.layers.core.fully_connected(net, 9, activation='softmax')
sgd = tflearn.SGD(learning_rate=0.005)
accuracy = tflearn.metrics.Accuracy()
net = tflearn.regression(net, optimizer=sgd, metric=accuracy, loss='categorical_crossentropy', to_one_hot=True, n_classes=9)
model = tflearn.DNN(net, checkpoint_path='message_tickets', tensorboard_verbose=2)
model.fit(X_train, y_train, n_epoch=100, validation_set=(X_test, y_test), batch_size=128, snapshot_step=100, run_id='message_tickets',
show_metric=True)
Training Step: 1769 | total loss: 1.11202
| SGD | epoch: 030 | loss: 1.11202 - acc: 0.6327 -- iter: 3712/7611