objectrecognitionwithnn
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (1.9%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: dronsEETAC
- License: agpl-3.0
- Language: Python
- Default Branch: main
- Size: 14 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 15
- Releases: 0
Metadata Files
README.md
Notas previas
Este repositorio se trata de un fork del repositorio original de YOLOv5, pero se le ha añadido una carpetra llamada DEEaddition que es donde están todas las cosas que se han hecho para el DEE. Dentro de la carpeta DEEaddition estan tanto los ficheros para descargar conjuntos de datos y para realizar la detección, como el fichero de la apliación de carácter demostrativo que se ha desarrollado.
En el siguiente apartado se define un Tutorial que explica como crear el entrono de trabajo, como descargar los conjuntos de datos, como realizar el entrenamiento y como realizar la detección.
En cuanto a la aplicación de carácter demostrativo, se han hecho dos vídeos, uno donde se hace una demo de como funciona la aplicación y otro explicando el código. Los vídeos son los siguientes:
1. Vídeo demo del funcionamiento de la aplicación:
2. Vídeo explicando el código de la aplicación:
Para poner en funcionamiento la aplicación se requiere poner también en marcha un CameraService adaptado, que permite tomar imagenes de la webcam del portátil pero tambien de la picamera de una Raspberry Pi, e incluso reconocer objetos en el propio servicio de cámara. El repositorio con este servicio de cámara adaptado es este:
Tutoriales
Introducción a la detección de objetos con redes neuronales y yolov5
Este es el video tutorial:
Este es el repositorio con el código que se usa en el video:
Para empezar
Lo más fácil para empezar a experimentar con reconocimiento de objetos es probar el código del script llamado detectarObjetos.py que puede encontrarse en este repositorio. El programa usa una red neuronal preentrenada capaz de reconocer hasta 80 objetos diferentes. El programa establece qué objetos quiere reconocer (BANANA, PIZZA, DONUT, etc.) y usa la red neuronal para reconcer esos objetos en el stream de vídeo que captura de la cámara del ordenador en el que se ejecuta. Puede encontrarse más información sobre esa red preentrenada aqui:
https://docs.ultralytics.com/es/datasets/detect/coco/#applications
Crear entorno, clonar repositorio y instalar requerimientos
Crear un entorno virtual con Python 3.8. Con el gestor de paquetes Conda de Anaconda, el entorno virtual se crearía con la siguiente línea en el Anaconda Prompt:
bash conda create -n yolov5 python=3.8Una vez creado el entorno virtual, se tiene que activar. Con Conda se haría de la siguiente manera también en el Anaconda Prompt:
bash conda activate yolov5Ahora clonamos el repositorio de GitHub y instalamos los requerimientos dentro del entorno virtual. Con Conda se haría de la siguiente manera también en el Anaconda Prompt (tarda unos minutos en instalar todo):
bash git clone https://github.com/underwaterIker/yolov5 cd yolov5 pip install -r requirements.txt
Descargar conjunto de datos
Ahora que ya hemos clonado el repositorio e instalado los requerimientos, podemos abrir el proyecto con un editor de texto como PyCharm, y debemos abrir el fichero que está dentro de la carpeta “DEE_addition” que se llama:
main_dataset.pyUna vez abierto ese fichero, debemos bajar hasta llegar a partir de la línea 71, que tiene el siguiente comentario: ```
Setting parameters
```
A partir de la línea 71, tenemos los parámetros que podemos configurar para descargar el dataset. El que nos interesa es el de la línea 72, con el nombre de variable:
objects_selectedEn esta variable deberemos poner los objetos que queramos detectar. Los objetos disponibles para poder poner en esta lista se pueden encontrar en la página web de Open Images V7, que están en inglés. Si, por ejemplo escogiéramos "Bottle" y "Apple", la variable debería quedar de la siguiente forma en el código:objects_selected = ["Bottle", "Apple"]Es importante escribir los objetos tal y como se muestra arriba: en inglés y con la primera letra en mayúsculas.El otro parámetro es el que define cuantas imágenes se quieren descargar por cada objeto seleccionado, y tiene el nombre de variable:
images_per_classYa le podemos dar a ejecutar el fichero main_dataset.py, asegurándonos que hemos configurado el editor de texto para que use como Interpreter el entorno virtual que hemos creado al principio. Este va a tardar unos minutos en completarse, y como resultado nos va a descargar el dataset dentro de la carpeta "datasets", que a su vez se encuentra dentro de la carpeta "DEE_addition". De las tres carpetas que nos ha descargado, nos interesa la carpeta zip con el nombre:
YOLOv5Dataset.zip
Entrenamiento
Ahora debemos abrir el siguiente link: Google Colab link
Lo primero de todo que debemos hacer es darle a "Archivo" y darle a "Guardar una copia en Drive", de esta manera podremos editar el documento y se van a guardar los cambios en nuestro Drive.
Lo siguiente que debemos hacer es asegurarnos que tenemos seleccionada la "T4 GPU" como entorno de ejecución. Para ello debemos ir a la pestaña "Entorno de ejecución" y darle a "Cambiar tipo de entorno de ejecución", y ahí podremos seleccionar la "T4 GPU" y darle a "Guardar".
A continuación, ejecutamos la primera celda de código, que clona el repositorio de GitHub e instala las dependencias.
Una vez hecho esto, debemos copiar la carpeta zip que se ha mencionado en el punto 8 "YOLOv5Dataset.zip" a fuera de la carpeta "yolov5", es decir, arrastrarla al lado de la carpeta "yolov5" para que no se meta dentro de esa carpeta.
Cuando la carpeta zip ya haya acabado de subirse, deberemos ejecutar la segunda celda de código, que es la que descomprime la carpeta que acabamos de subir.
Una vez tenemos la carpeta descomprimida, podemos ejecutar la tercera celda de código, que es la que realiza el entrenamiento. En ella están los parámetros configurables del entrenamiento, pero se pueden dejar por defecto.
Una vez finalice el entrenamiento, debemos ir a la carpeta "yolov5", abrir la carpeta "runs", abrir la carpeta "train", y dentro de esta carpeta abrir la última carpeta que se llamará "exp" seguido de un número, pues debemos abrir la que tenga el número más grande, que será la que pertenece al último entrenamiento realizado (si solo hay una carpeta llamada "exp" sin número, es esa carpeta en la que debemos entrar). Dentro de esta carpeta abrimos la carpeta "weights" y descargamos el archivo "best.pt", que es el archivo con los pesos y sesgos que ha dado como resultado el entrenamiento.
Detección
Una vez descargado el archivo "best.pt", tenemos que volver a nuestro proyecto de "yolov5" y poner el archivo dentro de la carpeta "weights", que se encuentra dentro de la carpeta "DEE_addition". Deberemos asegurarnos de que nuestro archivo "best.pt" sea el único presente en esa carpeta, es decir, si hay otro archivo "best.pt" en la carpeta deberemos borrarlo y sustituirlo por nuestro archivo "best.pt".
Cuando tengamos el archivo "best.pt" dentro de la carpeta "weights" (que está dentro de la carpeta "DEEaddition"), deberemos abrir el fichero maindetection.py, que se encuentra también dentro de la carpeta "DEE_addition" y ejecutarlo. Este programa abrirá una ventana mostrando vídeo en directo desde nuestra webcam y detectando los objetos que hayamos especificado en el entrenamiento. Para cerrar la ventana o parar la detección, pulsar la tecla "q" o darle al botón de parar ejecución de nuestro editor de texto, ya que si solo cerramos la ventana ésta se volverá a abrir y la ejecución no parará.
Owner
- Login: dronsEETAC
- Kind: user
- Repositories: 40
- Profile: https://github.com/dronsEETAC
Citation (CITATION.cff)
cff-version: 1.2.0
preferred-citation:
type: software
message: If you use YOLOv5, please cite it as below.
authors:
- family-names: Jocher
given-names: Glenn
orcid: "https://orcid.org/0000-0001-5950-6979"
title: "YOLOv5 by Ultralytics"
version: 7.0
doi: 10.5281/zenodo.3908559
date-released: 2020-5-29
license: AGPL-3.0
url: "https://github.com/ultralytics/yolov5"
GitHub Events
Total
- Push event: 1
Last Year
- Push event: 1
Dependencies
- actions/checkout v4 composite
- actions/setup-python v4 composite
- slackapi/slack-github-action v1.24.0 composite
- actions/checkout v4 composite
- github/codeql-action/analyze v2 composite
- github/codeql-action/autobuild v2 composite
- github/codeql-action/init v2 composite
- actions/checkout v4 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- docker/setup-qemu-action v3 composite
- actions/first-interaction v1 composite
- actions/checkout v4 composite
- nick-invision/retry v2 composite
- actions/stale v8 composite
- pytorch/pytorch 2.0.0-cuda11.7-cudnn8-runtime build
- gcr.io/google-appengine/python latest build
- Brotli ==1.1.0
- Deprecated ==1.2.14
- GitPython ==3.1.40
- Hypercorn ==0.15.0
- Jinja2 ==3.1.2
- MarkupSafe ==2.1.3
- Pillow ==10.1.0
- PyWavelets ==1.4.1
- PyYAML ==6.0.1
- aiofiles ==23.2.1
- anyio ==4.1.0
- argcomplete ==3.2.1
- attrs ==23.1.0
- backports.zoneinfo ==0.2.1
- beautifulsoup4 ==4.12.2
- boto3 ==1.33.13
- botocore ==1.33.13
- cachetools ==5.3.2
- certifi ==2022.12.7
- charset-normalizer ==2.1.1
- colorama ==0.4.6
- contourpy ==1.1.1
- cycler ==0.12.1
- dacite ==1.7.0
- dill ==0.3.7
- dnspython ==2.4.2
- exceptiongroup ==1.2.0
- fiftyone ==0.23.1
- fiftyone-brain ==0.14.1
- fiftyone-db ==1.0
- filelock ==3.9.0
- fonttools ==4.46.0
- fsspec ==2023.4.0
- ftfy ==6.1.3
- future ==0.18.3
- gitdb ==4.0.11
- glob2 ==0.7
- graphql-core ==3.2.3
- h11 ==0.14.0
- h2 ==4.1.0
- hpack ==4.0.0
- httpcore ==1.0.2
- httpx ==0.25.2
- humanize ==4.9.0
- hyperframe ==6.0.1
- idna ==3.4
- imageio ==2.33.1
- importlib-resources ==6.1.1
- inflate64 ==1.0.0
- jmespath ==1.0.1
- joblib ==1.3.2
- jsonlines ==4.0.0
- kaleido ==0.2.1
- kiwisolver ==1.4.5
- lazy_loader ==0.3
- matplotlib ==3.7.4
- mongoengine ==0.24.2
- motor ==3.3.2
- mpmath ==1.3.0
- multivolumefile ==0.2.3
- networkx ==3.0
- numpy ==1.24.1
- opencv-python ==4.8.1.78
- opencv-python-headless ==4.8.1.78
- packaging ==23.2
- paho-mqtt ==1.6.1
- pandas ==2.0.3
- plotly ==5.18.0
- pprintpp ==0.4.0
- priority ==2.0.0
- psutil ==5.9.6
- py-cpuinfo ==9.0.0
- py7zr ==0.20.8
- pybcj ==1.0.2
- pycryptodomex ==3.19.0
- pymongo ==4.6.1
- pyparsing ==3.1.1
- pyppmd ==1.1.0
- python-dateutil ==2.8.2
- pytz ==2023.3.post1
- pyzstd ==0.15.9
- rarfile ==4.1
- regex ==2023.10.3
- requests ==2.28.1
- retrying ==1.3.4
- s3transfer ==0.8.2
- scikit-image ==0.21.0
- scikit-learn ==1.3.2
- scipy ==1.10.1
- seaborn ==0.13.0
- six ==1.16.0
- smmap ==5.0.1
- sniffio ==1.3.0
- sortedcontainers ==2.4.0
- soupsieve ==2.5
- sse-starlette ==0.10.3
- sseclient-py ==1.8.0
- starlette ==0.33.0
- strawberry-graphql ==0.138.1
- sympy ==1.12
- tabulate ==0.9.0
- taskgroup ==0.0.0a4
- tenacity ==8.2.3
- texttable ==1.7.0
- thop ==0.1.1.post2209072238
- threadpoolctl ==3.2.0
- tifffile ==2023.7.10
- tomli ==2.0.1
- torch ==2.1.1
- torchaudio ==2.1.1
- torchvision ==0.16.1
- tqdm ==4.66.1
- typing_extensions ==4.4.0
- tzdata ==2023.3
- tzlocal ==5.2
- ultralytics ==8.0.227
- universal-analytics-python3 ==1.1.1
- urllib3 ==1.26.13
- voxel51-eta ==0.12.0
- wcwidth ==0.2.12
- wrapt ==1.16.0
- wsproto ==1.2.0
- xmltodict ==0.13.0
- zipp ==3.17.0
- Brotli ==1.1.0
- Deprecated ==1.2.14
- GitPython ==3.1.40
- Hypercorn ==0.16.0
- Jinja2 ==3.1.2
- MarkupSafe ==2.1.3
- PyWavelets ==1.4.1
- PyYAML ==6.0.1
- aiofiles ==23.2.1
- anyio ==4.2.0
- argcomplete ==3.2.1
- attrs ==23.2.0
- backports.zoneinfo ==0.2.1
- beautifulsoup4 ==4.12.2
- boto3 ==1.34.11
- botocore ==1.34.11
- cachetools ==5.3.2
- certifi ==2023.11.17
- charset-normalizer ==3.3.2
- colorama ==0.4.6
- contourpy ==1.1.1
- cycler ==0.12.1
- dacite ==1.7.0
- dill ==0.3.7
- dnspython ==2.4.2
- exceptiongroup ==1.2.0
- fiftyone ==0.23.2
- fiftyone-brain ==0.14.2
- fiftyone-db ==1.1
- filelock ==3.13.1
- fonttools ==4.47.0
- fsspec ==2023.12.2
- ftfy ==6.1.3
- future ==0.18.3
- gitdb ==4.0.11
- glob2 ==0.7
- graphql-core ==3.2.3
- h11 ==0.14.0
- h2 ==4.1.0
- hpack ==4.0.0
- httpcore ==1.0.2
- httpx ==0.26.0
- humanize ==4.9.0
- hyperframe ==6.0.1
- idna ==3.6
- imageio ==2.33.1
- importlib-resources ==6.1.1
- inflate64 ==1.0.0
- jmespath ==1.0.1
- joblib ==1.3.2
- jsonlines ==4.0.0
- kaleido ==0.2.1
- kiwisolver ==1.4.5
- lazy_loader ==0.3
- matplotlib ==3.7.4
- mongoengine ==0.24.2
- motor ==3.3.2
- mpmath ==1.3.0
- multivolumefile ==0.2.3
- networkx ==3.1
- numpy ==1.24.4
- opencv-python ==4.9.0.80
- opencv-python-headless ==4.9.0.80
- packaging ==23.2
- paho-mqtt ==1.6.1
- pandas ==2.0.3
- pillow ==10.2.0
- plotly ==5.18.0
- pprintpp ==0.4.0
- priority ==2.0.0
- psutil ==5.9.7
- py-cpuinfo ==9.0.0
- py7zr ==0.20.8
- pybcj ==1.0.2
- pycryptodomex ==3.19.1
- pymongo ==4.6.1
- pyparsing ==3.1.1
- pyppmd ==1.1.0
- python-dateutil ==2.8.2
- pytz ==2023.3.post1
- pyzstd ==0.15.9
- rarfile ==4.1
- regex ==2023.12.25
- requests ==2.31.0
- retrying ==1.3.4
- s3transfer ==0.10.0
- scikit-image ==0.21.0
- scikit-learn ==1.3.2
- scipy ==1.10.1
- seaborn ==0.13.1
- six ==1.16.0
- smmap ==5.0.1
- sniffio ==1.3.0
- sortedcontainers ==2.4.0
- soupsieve ==2.5
- sse-starlette ==0.10.3
- sseclient-py ==1.8.0
- starlette ==0.34.0
- strawberry-graphql ==0.138.1
- sympy ==1.12
- tabulate ==0.9.0
- taskgroup ==0.0.0a4
- tenacity ==8.2.3
- texttable ==1.7.0
- thop ==0.1.1.post2209072238
- threadpoolctl ==3.2.0
- tifffile ==2023.7.10
- tomli ==2.0.1
- torch ==2.1.2
- torchvision ==0.16.2
- tqdm ==4.66.1
- typing_extensions ==4.9.0
- tzdata ==2023.4
- tzlocal ==5.2
- ultralytics ==8.0.232
- universal-analytics-python3 ==1.1.1
- urllib3 ==1.26.18
- voxel51-eta ==0.12.2
- wcwidth ==0.2.12
- wrapt ==1.16.0
- wsproto ==1.2.0
- xmltodict ==0.13.0
- zipp ==3.17.0
- Brotli ==1.1.0
- Deprecated ==1.2.14
- GitPython ==3.1.40
- Hypercorn ==0.16.0
- Jinja2 ==3.1.2
- MarkupSafe ==2.1.3
- PyWavelets ==1.4.1
- PyYAML ==6.0.1
- aiofiles ==23.2.1
- anyio ==4.2.0
- argcomplete ==3.2.1
- attrs ==23.2.0
- backports.zoneinfo ==0.2.1
- beautifulsoup4 ==4.12.2
- boto3 ==1.34.11
- botocore ==1.34.11
- cachetools ==5.3.2
- certifi ==2023.11.17
- charset-normalizer ==3.3.2
- colorama ==0.4.6
- contourpy ==1.1.1
- cycler ==0.12.1
- dacite ==1.7.0
- dill ==0.3.7
- dnspython ==2.4.2
- exceptiongroup ==1.2.0
- fiftyone ==0.23.2
- fiftyone-brain ==0.14.2
- fiftyone-db ==1.1
- filelock ==3.13.1
- fonttools ==4.47.0
- fsspec ==2023.12.2
- ftfy ==6.1.3
- future ==0.18.3
- gitdb ==4.0.11
- glob2 ==0.7
- graphql-core ==3.2.3
- h11 ==0.14.0
- h2 ==4.1.0
- hpack ==4.0.0
- httpcore ==1.0.2
- httpx ==0.26.0
- humanize ==4.9.0
- hyperframe ==6.0.1
- idna ==3.6
- imageio ==2.33.1
- importlib-resources ==6.1.1
- inflate64 ==1.0.0
- jmespath ==1.0.1
- joblib ==1.3.2
- jsonlines ==4.0.0
- kaleido ==0.2.1
- kiwisolver ==1.4.5
- lazy_loader ==0.3
- matplotlib ==3.7.4
- mongoengine ==0.24.2
- motor ==3.3.2
- mpmath ==1.3.0
- multivolumefile ==0.2.3
- networkx ==3.1
- numpy ==1.24.4
- opencv-python ==4.9.0.80
- opencv-python-headless ==4.9.0.80
- packaging ==23.2
- paho-mqtt ==1.6.1
- pandas ==2.0.3
- pillow ==10.2.0
- plotly ==5.18.0
- pprintpp ==0.4.0
- priority ==2.0.0
- psutil ==5.9.7
- py-cpuinfo ==9.0.0
- py7zr ==0.20.8
- pybcj ==1.0.2
- pycryptodomex ==3.19.1
- pymongo ==4.6.1
- pyparsing ==3.1.1
- pyppmd ==1.1.0
- python-dateutil ==2.8.2
- pytz ==2023.3.post1
- pyzstd ==0.15.9
- rarfile ==4.1
- regex ==2023.12.25
- requests ==2.31.0
- retrying ==1.3.4
- s3transfer ==0.10.0
- scikit-image ==0.21.0
- scikit-learn ==1.3.2
- scipy ==1.10.1
- seaborn ==0.13.1
- six ==1.16.0
- smmap ==5.0.1
- sniffio ==1.3.0
- sortedcontainers ==2.4.0
- soupsieve ==2.5
- sse-starlette ==0.10.3
- sseclient-py ==1.8.0
- starlette ==0.34.0
- strawberry-graphql ==0.138.1
- sympy ==1.12
- tabulate ==0.9.0
- taskgroup ==0.0.0a4
- tenacity ==8.2.3
- texttable ==1.7.0
- thop ==0.1.1.post2209072238
- threadpoolctl ==3.2.0
- tifffile ==2023.7.10
- tomli ==2.0.1
- torch ==2.1.2
- torchvision ==0.16.2
- tqdm ==4.66.1
- typing_extensions ==4.9.0
- tzdata ==2023.4
- tzlocal ==5.2
- ultralytics ==8.0.232
- universal-analytics-python3 ==1.1.1
- urllib3 ==1.26.18
- voxel51-eta ==0.12.2
- wcwidth ==0.2.12
- wrapt ==1.16.0
- wsproto ==1.2.0
- xmltodict ==0.13.0
- zipp ==3.17.0
- Flask ==2.3.2
- gunicorn ==19.10.0
- pip ==23.3
- werkzeug >=3.0.1