Detecciones DJI SEI
Las aeronaves DJI Dock 3 ejecutan su propio modelo de detección de objetos a bordo e incrustan los resultados en el stream de vídeo H.264 como mensajes SEI (Supplemental Enhancement Information). ARGUS los parsea en el navegador y los renderiza en el overlay del stream del drone junto con cualquier detección del agente YOLO.
¿Por qué incrustar detecciones en SEI?
La incrustación SEI tiene una gran ventaja: las detecciones llegan ligadas al frame que las produjo. No hay problema de desfase de reloj — una caja y los píxeles que describe están en la misma unidad NAL de H.264, de modo que el renderizado es perfecto a nivel de píxel incluso sobre enlaces inestables.
El parser
dji-sei-parser.ts maneja todo el pipeline de decodificación:
- Escaneo Annex-B — recorre la unidad de acceso buscando unidades NAL
con códigos de inicio
00 00 00 01o00 00 01. El tipo NAL SEI es0x06. - Eliminación de prevención de emulación — elimina los bytes de escape
0x03insertados tras cualquier secuencia00 00en la carga útil original. - Decodificación de longitud multi-byte —
payload_typeypayload_sizede SEI pueden ser multi-byte; el parser lee secuencias de0xFF+ un byte final <0xFF. - Detección de marcador — el primer byte de la carga útil identifica
el transporte:
0xF5— WebRTC (firmware posterior a Dock 3).0x65— Agora (heredado).- Cualquier otro — se devuelve la carga útil cruda; el llamador puede inspeccionarla.
- Decodificación de la estructura de la carga útil — little-endian:
DJIFmágico opcional (0x44 0x4A 0x49 0x46).- Byte de versión.
- Conteo de objetivos.
- Timestamp en ms (BigUint64).
- Por objetivo (16 bytes): índice del objetivo, tipo de objeto, confianza, x/y/w/h normalizados (punto fijo de 12 bits, dividido por 4095).
- Byte de estado + reservado, opcionales.
Tipos de objeto
| Valor | Significado |
|---|---|
1 | UNKNOWN |
2 | PERSON |
3 | CAR |
4 | BOAT |
Estado del objetivo
| Valor | Significado |
|---|---|
0 | TRACKED |
1 | LOST |
2 | NEW |
3 | OBSCURED |
El overlay marca con badges los estados new / lost / obscured para operadores que quieran seguir la continuidad del objeto.
Normalización de confianza
Distintas familias de firmware DJI codifican la confianza de forma diferente:
- Algunas usan 0-100 (porcentaje).
- Algunas usan 0-10000 (puntos básicos).
El parser auto-detecta: confRaw > 100 ? confRaw / 10000 : confRaw / 100
y acota a [0, 1].
El consumidor aguas abajo
DjiAiDetectionsService toma la salida del parser y publica:
detections$— stream Observable de detecciones por frame.latestFrame()— signal de Angular para bindings reactivos.history[]— caché rodante de 500 frames para analítica / scrubbing.
El overlay del stream del drone se suscribe y renderiza. Las cajas aparecen en verde por defecto; puedes cambiarlo en la pestaña IA.
Cableado aguas arriba (la versión honesta)
El parser + el servicio consumidor son reales y completos. Lo que
todavía es parcial es el hook de transformación de frames aguas arriba
— el código del lado del navegador que extrae el SEI de la pista de vídeo
en vivo. Necesita un RTCRtpScriptTransform (Chrome / Edge / Firefox
Nightly) o un fallback VideoDecoder + MediaStreamTrackProcessor
(Safari 17+). Ambos enfoques son frágiles entre firmwares del dock y
versiones de navegador, por lo que el hook se está desplegando por
navegador tras la telemetría de campo del despliegue de auto-stream.
Hasta que esté totalmente en vivo, las detecciones DJI SEI pueden
renderizarse solo en un subconjunto de navegadores o tras ajustes
específicos del firmware — reporta cualquier incoherencia a soporte.
Comparativa con YOLO11
| Aspecto | DJI SEI | YOLO11 |
|---|---|---|
| Dónde corre la inferencia | En la aeronave (gratis) | GPU en la nube (medido) |
| Latencia | ~50 ms | ~150 ms |
| Clases | persona, coche, barco | 80 COCO + fine-tune SAR |
| Red requerida | No | Sí |
| Re-ID persistente | No | Sí (p_xxxx) |
| Corre solo con DJI | Sí | Cualquier drone |
La mayoría de las operaciones corren ambos: DJI SEI para baja latencia en tiempo real sobre aeronaves de dock, YOLO11 para consistencia entre flotas
- IDs persistentes.
Relacionado
- Auto-stream DJI — la capa de transporte que entrega el stream H.264 que parseamos.
- YOLO11
- Resumen de detección