Progreso enero 2023 - RoboticsURJC/tfg-dcampoamor GitHub Wiki
Índice
SEMANA 6 (2/01/2023-8/01/2023)
SEMANA 7 (9/01/2023-15/01/2023)
SEMANA 8 (16/01/2023-22/01/2023)
SEMANA 9 (23/01/2023-29/01/2023)
Semana 6 (2/01/2023-8/01/2023)
-
Lecturas realizadas
Tomato Harvesting Arm Robot Manipulator; a Pilot Project
Vision systems for harvesting robots: Produce detection and localization
-
Búsqueda de información sobre Tensorflow y Pytorch
En esta semana se buscó información sobre estas dos bibliotecas de código abierto. Para ello se visitaron las páginas oficiales tanto de TensorFlow como de PyTorch. También se vieron una serie de vídeos entre los que se explicaba ¿Qué es TensorFlow?¿Cómo funciona?, las principales diferencias entre estas dos bibliotecas PyTorch o TensorFlow, ¿Cuál es la ideal para ti?, o los conceptos básicos sobre cómo poder crear Tu primera red neuronal en PyThon Y TensorFlow y cómo crear una Red neuronal desde cero con Pytorch.
Semana 7 (9/01/2023-15/01/2023)
-
Búsqueda de información sobre YOLO (You Only Look Once)
Dada la finalidad del proyecto, se requería que la detección de objetos se diera en tiempo real, por lo que se buscó información sobre YOLO, un sistema de código abierto que permitía esto a partir de una red neuronal convolucional para detectar objetos en imágenes.
-
Lecturas realizadas
-
Detección de objetos con YOLO y Pytorch
Después de realizar la lectura You Only Look Once: Unified, Real-Time Object Detection y de ver el vídeo de la convención en el que se explican las mejoras implementadas en la detección de objetos debido a YOLO, intenté replicar con la webcam del ordenador portátil un programa en Python usando OpenCV (Open Source Computer Vision Library) en Pytorch, en el cual, partiendo del feed de la propia webcam, se descompone ese vídeo en imágenes o cuadros, alimentando a nuestra red neuronal (en este caso YOLO v3), que recibe esta detección y se procesa con OpenCV, que dibuja las cajas alrededor de los objetos que detecta en vivo.
Para ello, primero realicé la instalación de OpenCV, instalé Anaconda para poder crear un ambiente pytorch_environment y así evitar problemas con las versiones de los paquetes. Utilizando de guía el vídeo Detección de objetos con YOLO v3 y Pytorch, clonamos el repositorio con el código visto en el vídeo en nuestro directorio y seguimos los pasos que se muestran en el archivo README.md.
Una vez seguidos todos los pasos, se probó a ejecutar el detector de objetos en vídeo con varios objetos como se puede ver en el vídeo Prueba de deteccion de objetos en video pytorch.
Y más tarde se probó a utilizar varias frutas simultáneamente para ver si las diferenciaba correctamente y detectaba todas las que se encontraban dentro del marco de la cámara.
Semana 8 (16/01/2023-22/01/2023)
-
Detección de objetos con YOLO y TensorFlow
Para poder comprobar las diferencias en un ejemplo práctico a la hora de detectar objetos entre PyTorch y TensorFlow, se procedió a intentar llevar a cabo la misma prueba de detección que en la semana 7.
Se utilizó el vídeo TensorFlow Object Detection | Realtime Object Detection with TensorFlow como guía, sin embargo, a pesar de habilitar un entorno nuevo en Anaconda para esta prueba, surgieron varios problemas de dependencias entre versiones, a pesar de intentar instalar varias versiones de TensorFlow.
Por ello, mientras buscaba la solución a estos problemas, se decidió utilizar el vídeo Real-time YOLOv3 Object Detection for webcam and video using TensorFlow para intentar poder llevar el ejemplo a cabo.
Semana 9 (23/01/2023-29/01/2023)
-
Detección de objetos con YOLO y TensorFlow
Se intentó replicar el ejemplo mediante el vídeo Real-time YOLOv3 Object Detection for webcam and video using TensorFlow, sin embargo, en la instalación del archivo requirements.txt del repositorio de GitHub utilizado, surgieron de nuevo problemas con las compatibilidades tanto de TensorFlow como de Open CV.
Este error se pudo resolver desinstalando e instalando TensorFlow de nuevo. Sin embargo, siguieron apareciendo errores de compatibilidades de la versión de Open CV requerida por el programa y la versión instalada.