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
Last synced: 6 months ago · JSON representation ·

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
Created about 2 years ago · Last pushed 7 months ago
Metadata Files
Readme License Citation

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: DroneEngineeringEcosystem Badge 2. Vídeo explicando el código de la aplicación: DroneEngineeringEcosystem Badge

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: DroneEngineeringEcosystem Badge

Tutoriales

Introducción a la detección de objetos con redes neuronales y yolov5

Este es el video tutorial: DroneEngineeringEcosystem Badge
Este es el repositorio con el código que se usa en el video: DroneEngineeringEcosystem Badge

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

  1. 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.8

  2. Una 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 yolov5

  3. Ahora 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

  1. 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.py

  2. Una vez abierto ese fichero, debemos bajar hasta llegar a partir de la línea 71, que tiene el siguiente comentario: ```

    Setting parameters

    ```

  3. 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_selected En 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.

  4. 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_class

  5. Ya 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

  1. Ahora debemos abrir el siguiente link: Google Colab link

  2. 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.

  3. 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".

  4. A continuación, ejecutamos la primera celda de código, que clona el repositorio de GitHub e instala las dependencias.

  5. 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.

  6. 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.

  7. 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.

  8. 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

  1. 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".

  2. 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

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

.github/workflows/ci-testing.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v4 composite
  • slackapi/slack-github-action v1.24.0 composite
.github/workflows/codeql-analysis.yml actions
  • actions/checkout v4 composite
  • github/codeql-action/analyze v2 composite
  • github/codeql-action/autobuild v2 composite
  • github/codeql-action/init v2 composite
.github/workflows/docker.yml actions
  • 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
.github/workflows/greetings.yml actions
  • actions/first-interaction v1 composite
.github/workflows/links.yml actions
  • actions/checkout v4 composite
  • nick-invision/retry v2 composite
.github/workflows/stale.yml actions
  • actions/stale v8 composite
utils/docker/Dockerfile docker
  • pytorch/pytorch 2.0.0-cuda11.7-cudnn8-runtime build
utils/google_app_engine/Dockerfile docker
  • gcr.io/google-appengine/python latest build
new-requirements/with-cuda/requirements.txt pypi
  • 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
new-requirements/without-cuda/requirements.txt pypi
  • 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
requirements.txt pypi
  • 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
utils/google_app_engine/additional_requirements.txt pypi
  • Flask ==2.3.2
  • gunicorn ==19.10.0
  • pip ==23.3
  • werkzeug >=3.0.1