Ejemplo minimo para detectar conos de trafico usando un modelo YOLO-World preentrenado de Ultralytics. No hace falta entrenar: el script usa prompts abiertos (traffic cone, orange traffic cone, road cone) para buscar conos.
Ademas, el script elige dos conos, calcula el punto medio entre sus centros y lo dibuja en la imagen. Tambien imprime el punto medio por consola:
frame=1 conos=2 punto_medio=(421, 318)
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txtWebcam:
python detect_cones.pyEsto abre la camara en tiempo real. Pulsa q en la ventana para salir. Por defecto no guarda video ni fotos.
Para subir FPS:
python detect_cones.py --imgsz 416 --camera-width 640 --camera-height 480Si aun va lento, puedes hacer inferencia cada 2 frames y seguir viendo video fluido:
python detect_cones.py --imgsz 416 --infer-every 2Con GPU NVIDIA:
python detect_cones.py --device 0 --half --imgsz 416Imagen:
python detect_cones.py --source .\foto.jpgCon una imagen se abre una ventana grafica automaticamente. Pulsa cualquier tecla para cerrarla.
Carpeta de fotos:
python detect_cones.py --source .\fotosCon una carpeta de fotos tambien se abre una ventana grafica automaticamente. Pulsa cualquier tecla para pasar a la siguiente foto o q para salir.
Video existente:
python detect_cones.py --source .\video.mp4El script resalta el area de todos los conos detectados. Si encuentra al menos dos, marca los dos elegidos y dibuja el punto medio entre ellos.
python detect_cones.py --source .\foto.jpg --conf 0.25 --imgsz 960--conf: subelo si aparecen falsos positivos, bajalo si no detecta conos pequenos.--imgsz: subelo para mejorar objetos pequenos a costa de velocidad.--camera-width/--camera-height: baja la resolucion de webcam para ganar FPS.--camera-fps: FPS solicitados a la webcam.--infer-every: ejecuta YOLO cada N frames.2o3mejora fluidez, con deteccion menos frecuente.--device 0: usa GPU CUDA si esta disponible.--half: usa FP16 en GPU compatible.--select confidence: usa los dos conos con mayor confianza. Es el valor por defecto.--select area: usa los dos conos mas grandes, util si quieres priorizar los mas cercanos.--max-frames 100: limita cuantos frames procesa en webcam o video.--no-show: no abre ventana grafica.--save: guarda frames/imagenes anotadas enruns/cone_detector/predict.--model: puedes pasar pesos propios, por ejemplo--model best.pt, si entrenas un detector especifico de conos.
Ejemplo usando los dos conos mas grandes:
python detect_cones.py --source .\video.mp4 --select areaYOLO-World es la opcion facil porque soporta deteccion open-vocabulary con clases personalizadas sin reentrenar. Para produccion o competicion, lo normal seria etiquetar tus imagenes de conos y ajustar un YOLO especifico.