Resumen de detección por IA
ARGUS tiene tres fuentes de detección que convergen en el mismo pipeline de overlay, de modo que a la UI no le importa cuál produjo un determinado cuadro delimitador. Verás las mismas cajas y etiquetas de color sobre el vídeo independientemente de si la fuente fue YOLO en la nube, DJI SEI desde la propia aeronave o el simulador de entrenamiento.
Las tres fuentes
Agente en la nube YOLO11
Un worker argus-agent se une a la sala como participante bot, se suscribe a
las pistas de vídeo del drone, ejecuta inferencia YOLO11 a ~30 fps y publica
detecciones en el canal de datos de LiveKit como { type: 'detections', participantIdentity, detections[] }. Cada detección lleva
left/top/right/bottom (normalizados 0-1), trackingId (BoT-SORT de corto
plazo, se reinicia con oclusión), persistentId (re-ID con DINOv2 + FAISS,
estable a través de oclusiones — formato p_xxxx) y un mapa de confianzas
multi-etiqueta.
DJI SEI (a bordo de la aeronave)
Las aeronaves DJI Dock 3 incrustan detecciones en la carga útil SEI de H.264
mientras transmiten. Nuestro parser en el navegador, dji-sei-parser.ts,
elimina los bytes de prevención de emulación, decodifica la longitud SEI
multi-byte, identifica el marcador de transporte (0xF5 para WebRTC, 0x65
para el Agora heredado) y devuelve cuadros delimitadores normalizados a 0-1.
Simulador de detección
El PolygonSimService ejecuta simulaciones de trayectoria de drone con
salida sintética de detecciones. Se usa para entrenamiento, demos y pruebas
E2E de los flujos de watchlist / alertas de copiloto sin aeronaves en vivo.
Cómo convergen
Las tres fluyen hacia DjiAiDetectionsService, que expone:
detections$— stream RxJS del último frame por drone.currentDetections()— snapshot sincrónico para renderizadores de overlay dirigidos por rAF (el overlay del tile de stream del drone usa esto para evitar tearing).- El histórico está limitado a 500 frames para que un stream de 30 Hz durante 5 minutos no reviente la heap.
El overlay del tile de stream del drone se suscribe y renderiza cada detección como un cuadro delimitador con etiqueta de clase + chip de confianza. Consulta overlays del tile de stream.
Auto-flagging (la versión honesta)
El auto-flagging dirigido por watchlist (detectar X → soltar flag / disparar
alerta) no está actualmente cableado — la infraestructura subyacente
existe, pero el listener de copilot_alerts filtra específicamente por
type='cas' ahora mismo. El comportamiento más cercano hoy es el agente
CAS: la lógica de evitación de colisiones escribe alertas cuando la
separación entre aeronaves cae por debajo de los umbrales configurados.
Otros auto-flags dirigidos por detección están planificados.
Umbralización
Dos lugares filtran la confianza de detección:
- Pestaña de IA por drone en el drawer de ajustes del drone — deslizador 0-1, por defecto 0.3. Las cajas por debajo de este umbral no se renderizan.
- Confianza del modelo — el pre-filtro propio YOLO del agente. No expuesto en la UI; se configura en el deployment del agente.
El filtrado por clase (p. ej., “mostrar solo personas”) no está expuesto en la UI. Obtienes cada clase que produce el modelo, coloreada por categoría.