Saltearse al contenido

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:

  1. Escaneo Annex-B — recorre la unidad de acceso buscando unidades NAL con códigos de inicio 00 00 00 01 o 00 00 01. El tipo NAL SEI es 0x06.
  2. Eliminación de prevención de emulación — elimina los bytes de escape 0x03 insertados tras cualquier secuencia 00 00 en la carga útil original.
  3. Decodificación de longitud multi-bytepayload_type y payload_size de SEI pueden ser multi-byte; el parser lee secuencias de 0xFF + un byte final <0xFF.
  4. 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.
  5. Decodificación de la estructura de la carga útil — little-endian:
    • DJIF má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

ValorSignificado
1UNKNOWN
2PERSON
3CAR
4BOAT

Estado del objetivo

ValorSignificado
0TRACKED
1LOST
2NEW
3OBSCURED

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

AspectoDJI SEIYOLO11
Dónde corre la inferenciaEn la aeronave (gratis)GPU en la nube (medido)
Latencia~50 ms~150 ms
Clasespersona, coche, barco80 COCO + fine-tune SAR
Red requeridaNo
Re-ID persistenteNoSí (p_xxxx)
Corre solo con DJICualquier 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