izaskunmz commited on
Commit
5458e00
·
verified ·
1 Parent(s): 6381e52

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +120 -12
README.md CHANGED
@@ -31,7 +31,7 @@ El modelo forma parte de un pipeline más amplio donde los videos son procesados
31
  ---
32
 
33
  ### 📊 Datasets Utilizados
34
- Para entrenar el modelo, se han combinado varios datasets descargados desde **COCO8** y **Roboflow Universe**:
35
 
36
  - **COCO8** - versión reducida de COCO para pruebas rápidas.
37
  - **License Plate Recognition** - para mejorar la detección de matrículas.
@@ -168,16 +168,6 @@ Primeramente descarga el dataset de **COCO8** para que genere la estructura cor
168
 
169
  ---
170
 
171
- ### 📊 **Resultados y Gráficos**
172
- 🛑 **Pendiente de añadir métricas y gráficos tras finalizar el entrenamiento.**
173
-
174
- Se incluirán gráficos como:
175
- - Matriz de confusión
176
- - Curva de precisión-recall
177
- - Loss function por época
178
-
179
- ---
180
-
181
  ### 💻 **Uso del Modelo en Videos**
182
  Para aplicar el modelo a un video y detectar objetos:
183
 
@@ -192,4 +182,122 @@ results = model.predict("ruta/video.mp4", save=True, conf=0.5)
192
 
193
  # Guardar el video con las detecciones
194
  print("✅ Procesamiento completado. Video guardado.")
195
- ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  ---
32
 
33
  ### 📊 Datasets Utilizados
34
+ Para entrenar el modelo, se ha utilizado el dataset de **COCO8**, pero tambien es posible añadir otros datasets como **License Plate Recognition** o **Shahbagh Traffic Dataset**:
35
 
36
  - **COCO8** - versión reducida de COCO para pruebas rápidas.
37
  - **License Plate Recognition** - para mejorar la detección de matrículas.
 
168
 
169
  ---
170
 
 
 
 
 
 
 
 
 
 
 
171
  ### 💻 **Uso del Modelo en Videos**
172
  Para aplicar el modelo a un video y detectar objetos:
173
 
 
182
 
183
  # Guardar el video con las detecciones
184
  print("✅ Procesamiento completado. Video guardado.")
185
+ ```
186
+
187
+ ---
188
+
189
+ ### 📂 Estructura del Proyecto YOLOv8
190
+
191
+ ```bash
192
+ .
193
+ ├── .venv/ # Entorno
194
+ ├── datasets/ # Carpeta de datasets
195
+ │ ├── coco8/ # Dataset COCO8
196
+ │ ├── yolov8s.pt # Pesos preentrenados de YOLOv8s
197
+ ├── datasets-download/ # Descargas de datasets
198
+ ├── processed-video/ # Vídeos procesados
199
+ │ ├── ny-traffic-processed.mp4 # Vídeo de tráfico procesado
200
+ ├── raw-video/ # Vídeos sin procesar
201
+ │ ├── ny-traffic.mp4 # Vídeo de tráfico original
202
+ ├── runs/ # Resultados de entrenamiento y validación
203
+ │ ├── detect/ # Carpeta de detección de objetos
204
+ │ │ ├── train_coco8 # Entrenamiento con COCO8
205
+ │ │ ├── train_yolov8n # Entrenamiento con YOLOv8n
206
+ │ ├── val/ # Resultados de validación
207
+ ├── .gitattributes # Configuración de atributos de Git
208
+ ├── .gitignore # Ignorar archivos innecesarios en Git
209
+ ├── predict.py # Script para realizar predicciones a los vídeos
210
+ ├── requirements.txt # Dependencias del proyecto
211
+ ├── train_yolov8n.py # Script para entrenar YOLOv8n
212
+ ├── train_yolov8s.py # Script para entrenar YOLOv8s
213
+ ├── validate.py # Script para validar el modelo
214
+ ├── yolov8n.pt # Pesos del modelo YOLOv8n
215
+ ```
216
+
217
+ ---
218
+
219
+ ### 📊 **Resultados y Gráficos**
220
+
221
+ #### Comparación General de Resultados entre YOLOv8n y YOLOv8s
222
+
223
+ | **Métrica** | **YOLOv8n** | **YOLOv8s** | **Diferencia (YOLOv8s - YOLOv8n)** |
224
+ |--------------------|------------|------------|----------------------------------|
225
+ | **Precisión (B)** | 0.748 | 0.821 | +0.073 |
226
+ | **Recall (B)** | 0.561 | 0.920 | +0.359 |
227
+ | **mAP@50 (B)** | 0.645 | 0.944 | +0.299 |
228
+ | **mAP@50-95 (B)** | 0.431 | 0.726 | +0.295 |
229
+ | **Fitness** | 0.453 | 0.747 | +0.294 |
230
+
231
+ #### 📌 Análisis:
232
+ - **Precisión**: YOLOv8s tiene mejor precisión (**+7.3%**), lo que significa que el modelo comete menos falsos positivos.
233
+ - **Recall**: YOLOv8s tiene un recall significativamente mayor (**+35.9%**), indicando que detecta más objetos correctamente.
234
+ - **mAP@50**: YOLOv8s supera a YOLOv8n en un **30%**, lo que sugiere que el modelo más grande tiene una mejor capacidad para detectar objetos con alta confianza.
235
+ - **mAP@50-95**: También mejora en un **29.5%**, lo que significa que tiene un rendimiento más consistente en diferentes umbrales de IoU.
236
+ - **Fitness**: YOLOv8s tiene una mejora notable (**+29.4%**), lo que indica un mejor balance entre precisión y recall.
237
+
238
+ ---
239
+
240
+ #### Comparación de Velocidad
241
+
242
+ | **Parámetro** | **YOLOv8n** | **YOLOv8s** | **Diferencia** |
243
+ |---------------------|------------|------------|----------------|
244
+ | **Preprocesamiento** | 1.92 ms | 1.68 ms | -0.24 ms |
245
+ | **Inferencia** | 55.05 ms | 128.99 ms | +73.94 ms |
246
+ | **Postprocesamiento** | 1.22 ms | 0.91 ms | -0.31 ms |
247
+
248
+ #### 📌 Análisis:
249
+ - **Preprocesamiento**: Similar en ambos modelos.
250
+ - **Inferencia**: **YOLOv8s es mucho más lento** en inferencia (**+74 ms**), lo cual es esperable ya que es un modelo más grande.
251
+ - **Postprocesamiento**: Ligeramente más rápido en **YOLOv8s**, pero la diferencia no es significativa.
252
+
253
+ ---
254
+ ### 🔍 YOLOv8n vs YOLOv8s
255
+
256
+ #### Comparación de Métricas
257
+
258
+ ![image/png](https://cdn-uploads.huggingface.co/production/uploads/66f1268bcaf696884799cb97/-TvkHPXa8E4AbB9h_sesd.png)
259
+
260
+ #### 📌 Análisis:
261
+ - YOLOv8s supera en todas las métricas a YOLOv8n.
262
+ - La mayor diferencia se observa en **Recall (+35.9%)** y **mAP@50-95 (+29.5%)**, indicando una mejor detección a diferentes umbrales de IoU.
263
+ - Aunque YOLOv8s tiene mejor rendimiento, su velocidad de inferencia es más lenta.
264
+
265
+ ---
266
+
267
+ #### Evolución de la Función de Pérdida por Época
268
+
269
+ ![image/png](https://cdn-uploads.huggingface.co/production/uploads/66f1268bcaf696884799cb97/w8fqST_MaK-jjS8xeRzTd.png)
270
+
271
+ #### 📌 Análisis:
272
+ - Ambos modelos muestran una disminución de la pérdida a lo largo del entrenamiento.
273
+ - **YOLOv8s** comienza con una pérdida mayor pero converge bien, sugiriendo que aprende mejor con más iteraciones.
274
+ - **YOLOv8n** tiene una convergencia más rápida pero con menor precisión general.
275
+
276
+ ---
277
+
278
+ #### Curva de Precisión-Recall
279
+
280
+ ![image/png](https://cdn-uploads.huggingface.co/production/uploads/66f1268bcaf696884799cb97/kgiCT9F4pKS43h0Ym8OrK.png)
281
+
282
+ #### 📌 Análisis:
283
+ - **YOLOv8s** mantiene una precisión más alta en todos los valores de recall, lo que significa menos falsos positivos en comparación con YOLOv8n.
284
+ - **YOLOv8n** muestra más fluctuaciones en la curva, indicando menor estabilidad en la detección de objetos.
285
+
286
+ ---
287
+
288
+ #### Matriz de Confusión
289
+
290
+ ![image/png](https://cdn-uploads.huggingface.co/production/uploads/66f1268bcaf696884799cb97/6EG6ybWD9ZqdNoabfruPf.png)
291
+
292
+ #### 📌 Análisis:
293
+ - Ambas matrices muestran que algunos objetos están siendo confundidos entre sí.
294
+ - **YOLOv8s** presenta menos errores de clasificación en comparación con YOLOv8n.
295
+ - La normalización de la matriz confirma que YOLOv8s tiene una mejor distribución de predicciones.
296
+
297
+ ---
298
+
299
+ #### Ejemplo de Detección
300
+
301
+ ![image/jpeg](https://cdn-uploads.huggingface.co/production/uploads/66f1268bcaf696884799cb97/tenTgxyadyFDm_rwxfKiW.jpeg)
302
+
303
+ ---