Instalación
Introducción
Introducción
Este módulo muestra cómo detectar objetos en imágenes utilizando la red de aprendizaje profundo You Only Look Once versión 8 (YOLOv8).
El contenido de visión por computador se divide en cinco lecciones:
- Instalación: En esta lección instalarás todas las herramientas y librerías necesarias para trabajar con visión por computador en MATLAB.
- Entrenamiento de modelos mediante aprendizaje por transferencia: Esta lección cubre los conceptos básicos del entrenamiento de un modelo YOLO y explica cómo el aprendizaje por transferencia puede mejorar el rendimiento y reducir el tiempo de entrenamiento.
- Postprocesamiento: Esta lección presenta técnicas de postprocesamiento que mejoran el rendimiento del modelo después del entrenamiento, incluyendo el filtrado y el refinamiento de las detecciones.
- Evaluación: Esta lección se centra en la evaluación de modelos de detección de objetos utilizando métricas estándar y técnicas de visualización. Cubre el cálculo de estas métricas y proporciona pautas para su correcta interpretación.
- Experimentación: Esta lección final proporciona una exploración más profunda del entrenamiento de modelos. Introduce hiperparámetros clave, muestra la aplicación de técnicas de aumento de datos y explica cómo diseñar experimentos para evaluar diferentes configuraciones de entrenamiento.
Toolboxes requeridos
Para ejecutar este proyecto o lección, se requieren los siguientes toolboxes:
- Computer Vision Toolbox™
- Deep Learning Toolbox™
- Parallel Computing Toolbox™
Comprobar la instalación de los toolboxes en MATLAB
Puedes utilizar el código siguiente para comprobar automáticamente si todos los toolboxes requeridos están instalados:
% Lista de toolboxes requeridos
requiredToolboxes = [
"Computer Vision Toolbox"
"Deep Learning Toolbox"
"Parallel Computing Toolbox"
];
% Obtener los toolboxes instalados y convertir los nombres a un array de strings
toolboxTable = matlab.addons.installedAddons;
installedNames = string(toolboxTable.Name);
% Comprobar si faltan toolboxes
missing = ~ismember(requiredToolboxes, installedNames);
% Informe
if any(missing)
missingList = requiredToolboxes(missing);
error("Faltan toolboxes requeridos:\n%s\n\nPor favor, instálalos mediante Home > Add-Ons > Get Add-Ons.", ...
strjoin(missingList, newline));
else
disp("✅ Todos los toolboxes requeridos están instalados.");
end
✅ All required toolboxes are installed.
Cómo instalar los toolboxes que faltan
Si falta algún toolbox:
- Ve a la pestaña Home en MATLAB.
- Haz clic en Add-Ons > Get Add-Ons.
- Busca el toolbox que falta por su nombre.
- Haz clic en Install.
Instrucciones de configuración
Añadir la ruta del módulo de ayuda
Añade la ruta al módulo de ayuda para que MATLAB pueda acceder a los scripts de esta carpeta:
addpath('help-module');
Instalar Python y las librerías requeridas
Utiliza el siguiente comando para instalar Python y las librerías necesarias. Esto puede tardar más de 5 minutos:
yolo.installUltralytics();
Después de ejecutar este código, debería aparecer una carpeta win64 en caso de que estés usando Windows; en caso contrario, glnxa64.
Descargar el dataset
Para descargar el dataset:
(No está actualizado, es otro dataset, no lo descargues)
%disp("descargar datos")
download data
%yolo.helper.downloadMultiClassData()
Downloading multiclass object detection dataset...
Comprobar que YOLO funciona
Cargar el detector de objetos YOLOv8 y ejecutar la inferencia:
% Cargar el modelo YOLO v8
det = yolov8ObjectDetector2('yolov8s');
Pretrained yolov8s network already exists.
% Leer la imagen de prueba.
I = imread(fullfile('datasets/fruits_3_4998/example','orange.jpg'));
% Cargar la red pequeña YOLO v8.
det = yolov8ObjectDetector2('yolov8s');
Pretrained yolov8s network already exists.
% Realizar la detección usando el modelo preentrenado.
[bboxes, scores, labels] = detect(det, I);
% Visualizar los resultados de detección.
annotations = string(labels) + ': ' + string(scores);
Iout = insertObjectAnnotation(I, 'rectangle', bboxes, annotations);
figure, imshow(Iout);

Configuración de YOLO
Definir el entorno de Python
if (ispc)
pyenv(Version="win64/python/python.exe", ExecutionMode = "OutOfProcess")
else
pyenv(Version="glnxa64/python/bin/python3", ExecutionMode = "OutOfProcess")
end
ans =
PythonEnvironment with properties:
Version: "3.11"
Executable: "C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\from-code-to-robot\computer_vision\win64\python\python.exe"
Library: "C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\from-code-to-robot\computer_vision\win64\python\python311.dll"
Home: "C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\from-code-to-robot\computer_vision\win64\python"
Status: Loaded
ExecutionMode: OutOfProcess
ProcessID: "30028"
ProcessName: "MATLABPyHost"
if isunix
py.sys.setdlopenflags(int32(bitor(int64(py.os.RTLD_LAZY),int64(py.os.RTLD_DEEPBIND))));
end
Configurar los ajustes globales de YOLO
% setYoloSettings Define los ajustes globales de YOLO mediante el wrapper de Python.
%
% setYoloSettings(pythonObject, option, value) define la opción especificada
% de YOLO con el valor indicado usando el wrapper de Python.
py.trainYOLOv8Wrapper.setYoloSettings(py.str('tensorboard'), true);
settings_version 0.0.4
datasets_dir C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\Lessons\from-code-to-robot\computer_vision\datasets
weights_dir C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\Lessons\from-code-to-robot\computer_vision\weights
runs_dir C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\Lessons\from-code-to-robot\computer_vision\runs
uuid ec83097be249f049dc01533308f726e37a20a9a11e43afb8810c32587f8ec051
sync True
api_key
openai_api_key
clearml True
comet True
dvc True
hub True
mlflow True
neptune True
raytune True
tensorboard True
wandb True
True
runsDir = fullfile(pwd, 'runs'); % Une el directorio actual con la carpeta 'runs'
weightsDir = fullfile(pwd, 'weights'); % Une el directorio actual con la carpeta 'runs'
datasets_dir = fullfile(pwd, 'datasets');
py.trainYOLOv8Wrapper.setYoloSettings(py.str("runs_dir"), py.str(runsDir));
settings_version 0.0.4
datasets_dir C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\Lessons\from-code-to-robot\computer_vision\datasets
weights_dir C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\Lessons\from-code-to-robot\computer_vision\weights
runs_dir C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\Lessons\from-code-to-robot\computer_vision\runs
uuid ec83097be249f049dc01533308f726e37a20a9a11e43afb8810c32587f8ec051
sync True
api_key
openai_api_key
clearml True
comet True
dvc True
hub True
mlflow True
neptune True
raytune True
tensorboard True
wandb True
True
py.trainYOLOv8Wrapper.setYoloSettings(py.str("weights_dir"), py.str(weightsDir));
settings_version 0.0.4
datasets_dir C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\Lessons\from-code-to-robot\computer_vision\datasets
weights_dir C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\from-code-to-robot\computer_vision\weights
runs_dir C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\from-code-to-robot\computer_vision\runs
uuid ec83097be249f049dc01533308f726e37a20a9a11e43afb8810c32587f8ec051
sync True
api_key
openai_api_key
clearml True
comet True
dvc True
hub True
mlflow True
neptune True
raytune True
tensorboard True
wandb True
True
py.trainYOLOv8Wrapper.setYoloSettings(py.str("datasets_dir"), py.str(datasets_dir));
settings_version 0.0.4
datasets_dir C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\Lessons\from-code-to-robot\computer_vision\datasets
weights_dir C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\from-code-to-robot\computer_vision\weights
runs_dir C:\Users\Noel Nathan\Desktop\Universidad\8tQuadrimestre\tfg\from-code-to-robot\computer_vision\runs
uuid ec83097be249f049dc01533308f726e37a20a9a11e43afb8810c32587f8ec051
sync True
api_key
openai_api_key
clearml True
comet True
dvc True
hub True
mlflow True
neptune True
raytune True
tensorboard True
wandb True
True