Transferencia de Conocimiento en TensorFlow para Clasificación de Imágenes
Clase 20 de 21 • Curso de TensorFlow.js
Contenido del curso
Clase 20 de 21 • Curso de TensorFlow.js
Contenido del curso
Sergio Correa Lopez
Omar Larasa
Javier Fuentes Mora
Alejandro Santamaria
rusbel bermúdez rivera
Katherine Hernandez
José Luis Marrugo Madrid
Enmanuel Castillo
Luis Lira
Alejandro Santamaria
Alejandro Santamaria
Alejandro Santamaria
José Luis Marrugo Madrid
Jose Luis Higuera Caraveo
Tatiana Andrea Sanchez Castaño
Alejandro Santamaria
Alejandro Santamaria
Alejandro Santamaria
Jose Armando Lopez Rodriguez
Isay Castañeda
Kengya Moncada
Kengya Moncada
Hay un pequeño error en el codigo linea 32:
donde dice:
document.getElementById('console2:' + classes[result2.label]);
deberia decir:
document.getElementById('console2').innerHTML = "Console2 prediction: " + classes[result2.label];
Hola, tengo una pregunta: Al aplicar el KNN para agregar ejemplos a cada etiqueta podemos decir que el modelo esta aprendiendo, podemos guadar o descargar el modelo ( el knn classifier ) para volver a usarlo ya con sus previos datos asi como en las sesiones anteriores ?
x 2 tengo esta pregunta tambien
Acabo de subir al repo un ejemplo de cómo se haría, en este caso estoy almacenando los datos con los que se ha entrenado el clasificador en el localStorage pero podrías guardarlos en la locación de tu preferencia dependiendo de tus necesidades. El knnClassifier no es una red neuronal, por eso no tiene los mismos métodos que vimos en el curso, como funciona es que almacena vectores que representan los puntos que están etiquetados de cierta forma (ej. el vector v1[.....] , v2[.....] , v3[.....] están asociados a la etiqueta 'gato' , los vectores v4[...], v5[...], v6[...] están asociados a la etiqueta 'dinosaurio' , la pregunta a la que puede responder ese modelo es: a qué grupo de etiquetas está más cercano este nuevo vector (el que viene de la cámara), y así es como puede regresarte los datos del entrenamiento que hiciste. Pruébalo y me dices si te funcionó.
Aquí esta el repo: git@gitlab.com:alex112/transferencia-de-conocimiento-tensorflowjs.git
Aquí está el demo: https://alex112.gitlab.io/transferencia-de-conocimiento-tensorflowjs/
En mi caso muy particular, obtenia un error del tipo Uncaught TypeError: Cannot read property ‘value’ of undefined
Lo solucione con la documentación de https-server, básicamente Chrome no me dejaba activar la cámara, basta con utilizar https y claro revisar los permisos de tu equipo y antivirus (en mi caso por default tengo webcam y micrófono bajo 3 metros de concreto virtual)
https://www.npmjs.com/package/http-server
Básicamente crea un certificado y un archivo cert.pem
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
Iniciar el server
npx http-server -S -C cert.pem
Gracias me daba el mismo error. Y con esto pude solucionarlo
Así como pegamos el knn al final, también podríamos pegar cualquier otro modelo?
Muchas gracias, me gustó mucho esta clase!
Dónde puedo encontrar el repo de todo el código de este video?
Hola! En la sección de enlace se encuentra el enlace con el link al repositorio en Gitlab https://gitlab.com/alex112/transferencia-de-conocimiento-tensorflowjs
Este código debería actualizarse conforme las versiones de las librerías van cambiando
y mantener una vigilancia sobre las librerías más importantes
no olvidar porfavor, que si no el código falla
Si alguien tiene dudas de esta clase: La red que teníamos hacía unas predicciones precisas, pero no exactas. Lo que hicimos fue traducir sus predicciones a lo que necesitábamos. Lo que ella pensaba que era un barco, le dijimos que era un dinosaurio, lo que ella pensaba que era un océano, le dijimos que era un reloj, y así sucesivamente. Al final, cuando a la red le daban ganas de decir que era un barco, se acordaba de nuestras enseñanzas, y decía: DINOSAURIO!!!
Tu idea es erronea.
La red neuronal no hace la seguunda predicción, la hace el modelo de KNN.
La red le pasa el resultado de su predicción y el modelo KNN lo asocia con las etiquetas que se le dieron manualmente.
Lo interesante sería si Alex se quitará de la cámara, la red neuronal seguiría clasificando la imagen como un librero, y el KNN la clasificaría como Alex.
Buen día. Me gustaría entender la utilidad de la transferencia de conocimiento en el ejercicio de esta clase. Si no se hubiera hecho la transferencia de conocimiento igual el clasificador KNN que construimos seguiría arrojando los mismos resultados. ¿Cuál sería una forma de aprovechar la clasificación que obtenemos antes con mobilenet? Gracias.
La transferencia en este caso te permite hacer un entrenamiento rápido de un modelo que permite reconocer y clasificar objetos dentro de tu área de interés, mobilenet te proporciona una clasificación genérica y tomó grandes cantidades de datos y recursos para entrenarse, usando la transferencia puedes ahorrarte todo ese trabajo y tiempo . El clasificador KNN solo te dice que cosas están mas cerca de otras, por si solo no podría decirte que imágenes están más cerca de otras ya que necesitas proporcionarle los vectores que representan esas imágenes y de ahí que usemos mobilenet para proporcionar esos datos iniciales y adaptarlos al reconocimiento específico en el que estamos trabajando.
¿Cuáles fueron sus proyectos favoritos?
también me gustó la versión básica del xor
Hola, una ayuda, ¿como puedo utilizar la camara de mi celular para capturar vídeo para la predicción? En mi caso estaba planeando hacer un pequeño proyecto response , sin embargo me encuentro con el problema de que el mismo código no funciona desde un navegador de celular.
Hola, tengo un fragmento de código que te puede ayudar
const video = document.getElementById("video"); const constraints = { audio:false, video:{ width:640, height:480 } } async function initVideo(){ try{ const streamVideo = await navigator.mediaDevices.getUserMedia(constraints) handleSucces(streamVideo) } catch(e){ alert(e) } } // on succes function handleSucces(streamVideo){ window.stream = streamVideo; video.srcObject = streamVideo; } initVideo()
Con este pequeño pedazo de código puedes encender la cámara de tu navegador, es necesario que le des permiso al navegador de lo contrario no podrás utilizar la cámara, también es necesario que agregues una etiqueta de video en HTML y hacer referencia al elemento. Tengo un poco de experiencia con modelos en tensorflowJS si tienes dudas en el camino no dudes en preguntar
Hola!! Mi Classifier me arroja este error he intentado corregirlo, aun sin exito
Documentación classifier: