Instal·lació
Introducció
Introducció
Aquest mòdul mostra com detectar objectes en imatges utilitzant la xarxa d’aprenentatge profund You Only Look Once versió 8 (YOLOv8).
El contingut de visió per computador es divideix en cinc lliçons:
- Instal·lació: En aquesta lliçó, instal·laràs totes les eines i biblioteques necessàries per treballar amb visió per computador a MATLAB.
- Entrenament de models utilitzant transfer learning: Aquesta lliçó cobreix els conceptes bàsics de l’entrenament d’un model YOLO i explica com el transfer learning pot millorar el rendiment i reduir el temps d’entrenament.
- Postprocessament: Aquesta lliçó presenta tècniques de postprocessament que milloren el rendiment del model després de l’entrenament, incloent-hi el filtratge i el refinament de les deteccions.
- Avaluació: Aquesta lliçó se centra en l’avaluació de models de detecció d’objectes utilitzant mètriques estàndard i tècniques de visualització. Cobreix el càlcul d’aquestes mètriques i proporciona pautes per interpretar-les correctament.
- Experimentació: Aquesta lliçó final proporciona una exploració més profunda de l’entrenament de models. Introdueix hiperparàmetres clau, mostra l’aplicació de tècniques d’augmentació de dades i explica com dissenyar experiments per avaluar diferents configuracions d’entrenament.
Toolboxes necessàries
Per executar aquest projecte o lliçó, es necessiten les toolboxes següents:
- Computer Vision Toolbox™
- Deep Learning Toolbox™
- Parallel Computing Toolbox™
Comprovar la instal·lació de toolboxes a MATLAB
Pots utilitzar el codi següent per comprovar automàticament si totes les toolboxes necessàries estan instal·lades:
% Llista de toolboxes necessàries
requiredToolboxes = [
"Computer Vision Toolbox"
"Deep Learning Toolbox"
"Parallel Computing Toolbox"
];
% Obtenir les toolboxes instal·lades i convertir els noms a un array de strings
toolboxTable = matlab.addons.installedAddons;
installedNames = string(toolboxTable.Name);
% Comprovar si falten toolboxes
missing = ~ismember(requiredToolboxes, installedNames);
% Informe
if any(missing)
missingList = requiredToolboxes(missing);
error("Missing required toolboxes:\n%s\n\nPlease install them via Home > Add-Ons > Get Add-Ons.", ...
strjoin(missingList, newline));
else
disp("✅ All required toolboxes are installed.");
end
✅ All required toolboxes are installed.
Com instal·lar les toolboxes que falten
Si falta alguna toolbox:
- Ves a la pestanya Home de MATLAB.
- Fes clic a Add-Ons > Get Add-Ons.
- Cerca la toolbox que falta pel seu nom.
- Fes clic a Install.
Instruccions de configuració
Afegir la ruta del mòdul d’ajuda
Afegeix la ruta al mòdul d’ajuda perquè MATLAB pugui accedir als scripts d’aquesta carpeta:
addpath('help-module');
Instal·lar Python i les biblioteques necessàries
Utilitza la comanda següent per instal·lar Python i les biblioteques necessàries. Això pot trigar més de 5 minuts:
yolo.installUltralytics();
Després d’executar aquest codi, hauria d’aparèixer win64 en cas que estiguis utilitzant Windows; si no, glnxa64.
Descarregar el dataset
Per descarregar el dataset:
(No està actualitzat, és un altre dataset, no el descarreguis)
%disp("download data")
download data
%yolo.helper.downloadMultiClassData()
Downloading multiclass object detection dataset...
Comprovar que YOLO funciona
Carrega el detector d’objectes YOLOv8 i executa la inferència:
% Carregar el model YOLO v8
det = yolov8ObjectDetector2('yolov8s');
Pretrained yolov8s network already exists.
% Llegir la imatge de prova.
I = imread(fullfile('datasets/fruits_3_4998/example','orange.jpg'));
% Carregar la xarxa YOLO v8 petita.
det = yolov8ObjectDetector2('yolov8s');
Pretrained yolov8s network already exists.
% Fer la detecció utilitzant el model preentrenat.
[bboxes, scores, labels] = detect(det, I);
% Visualitzar els resultats de la detecció.
annotations = string(labels) + ': ' + string(scores);
Iout = insertObjectAnnotation(I, 'rectangle', bboxes, annotations);
figure, imshow(Iout);

Configuració de YOLO
Establir l’entorn 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 els paràmetres globals de YOLO
% setYoloSettings Estableix els paràmetres globals de YOLO mitjançant el wrapper de Python.
%
% setYoloSettings(pythonObject, option, value) estableix l’opció especificada
% de YOLO al valor indicat utilitzant 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'); % Uneix el directori actual amb la carpeta 'runs'
weightsDir = fullfile(pwd, 'weights'); % Uneix el directori actual amb 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\Lessons\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