Arquitectura

Cuatro capas. Cada una solo corre si la anterior encontró algo.

No es una optimización de costes que hicimos al final: es lo que permite mirar cada fotograma sin arruinar a la institución. Los tiempos de abajo están medidos en el contenedor real, con el tamaño de imagen que sube de verdad la webcam.

  1. 0

    OpenCV clásico

    Cada fotograma

    Foto fija pegada a la webcam, lente tapada, desenfoque deliberado, cambio de escena.

    Caza una familia de ataques que las capas caras no ven: un detector de objetos cuenta personas, y no le importa si la «persona» es una foto impresa.

    2,1 ms

  2. 1

    RF-DETR Nano · Supervision

    Cada ~30 s por cámara

    Cuenta personas y detecta móviles sobre el escritorio.

    70 veces más caro que la capa 0. Por eso no corre en cada fotograma: solo por cadencia, o cuando la capa 0 marca algo.

    150 ms

  3. 2

    Modelo de visión (MiMo)

    Si 0 o 1 marcan · máx. cada 120 s

    Lectura semántica de la escena y de la mirada.

    Es la única capa que sale de nuestra red, y solo con consentimiento explícito de tratamiento con IA. Quien lo rechaza conserva las capas 0 y 1.

    de pago

  4. 3

    El docente

    Siempre

    Mira la evidencia y decide.

    Ninguna de las capas anteriores sanciona por sí sola. Ni una. Es una decisión de diseño, no una limitación técnica.

    decide

La capa que nadie pone

Un detector de objetos no distingue a una persona de su fotografía.

Pegá una foto impresa delante de la webcam y resolvé el examen fuera de cuadro. El detector de objetos informa «1 persona, todo correcto». El modelo de visión, también. Los dos tienen razón: hay una persona en la imagen.

La capa 0 lo caza sin red neuronal: un humano vivo nunca es idéntico a sí mismo diez segundos después; una foto sostenida, sí. Cuesta 2,1 milisegundos y detecta una familia entera de ataques que las capas caras no ven, por caras que sean.

2,1ms

Capa 0, por fotograma, en el contenedor real

Método
Diferencia entre fotogramas, varianza del laplaciano e histograma. Sin modelo.

70×

Más barata que detectar objetos

Método
2,1 ms frente a 150 ms de la capa 1, mismo host, misma imagen.
Límite
Por eso la capa 1 no corre en cada fotograma: si lo hiciera, saturaría con unos 17 alumnos.
El motor de examen

Lo único que no es evadible.

El bloqueo del navegador es una barrera, y lo decimos: vive en la máquina del alumno. El motor no. Vive en nuestro servidor y decide todo lo que determina la nota.

Aunque un alumno desactive todo el JavaScript y responda directamente contra la API, sigue sin ver la clave, sigue teniendo el mismo tiempo, y su examen se corrige igual.

  • El cliente nunca recibe la clave correcta

    La corrección ocurre en el servidor contra las opciones marcadas en la base. El JSON que llega al navegador no contiene ninguna marca de qué opción es la buena.

  • El reloj es del servidor

    El temporizador del navegador es decorativo. Si el tiempo venció, el servidor entrega la sesión al siguiente contacto, corrigiendo lo respondido.

  • El examen se congela al empezar

    Orden, opciones e instancias parametrizadas se fijan en la sesión. Ni un refresco ni dos pestañas cambian el examen.

  • Dos pestañas no dan dos intentos

    El inicio y la entrega se serializan con un cerrojo de PostgreSQL, y hay un índice único que impide dos sesiones en curso del mismo alumno.

  • El gate de supervisión también es del servidor

    Si el examen exige foto o segunda cámara, la API rechaza respuestas hasta cumplirlo. Saltarse la interfaz no sirve de nada.

De principio a fin

Cuatro pasos, y el último es una persona.

  1. 01

    El docente crea el examen

    Escribe las preguntas o las genera con IA a partir del temario. Puede parametrizarlas para que cada alumno reciba valores distintos, y sacar preguntas al azar de un banco. Nada se guarda sin que lo revise.

  2. 02

    El alumno accede con un código

    El servidor decide qué preguntas, en qué orden y con qué opciones, lo congela en la sesión y fija el tiempo límite. A partir de ahí, el navegador no puede cambiar ninguna de esas cosas.

  3. 03

    Se rinde bajo supervisión

    Si el examen lo exige: foto de referencia, consentimiento y, opcionalmente, segunda cámara por QR. Las capturas pasan por la cadena de triaje. Solo se archiva lo que tiene algo que enseñar.

  4. 04

    Se corrige y se entrega el expediente

    Lo objetivo se autocorrige contra la clave que el navegador nunca vio. Los ensayos los califica el docente, con una sugerencia de IA que debe citar textualmente al alumno. El informe de integridad va con su descargo.

Escala, sin adornos

40 a 60 alumnos a la vez.

Ese es el techo real del triaje visual en la infraestructura actual, sin GPU. Si vuestro examen es de 500 alumnos simultáneos, hoy hace falta hardware dedicado y hay que hablarlo antes de firmar, no después.

El examen en sí —sin triaje visual— escala mucho más: el cuello de botella es la visión por computador, no el motor.

40–60

Alumnos concurrentes con triaje visual

Método
Una pasada de capa 1 cada 30 s por cámara, a ~7 fotogramas/s sobre 4 hilos sin GPU.
Límite
El host comparte 8 vCPU con otras aplicaciones en producción, así que los tiempos bailan entre corridas.

~6req/s

Capacidad del servicio de visión, medida por red

Método
Peticiones completas contra el contenedor con 4 CPU, imagen de 320×240 a 17 KB.
Límite
Con imágenes de 640×480 la capa 1 sube a ~205 ms: decodificar y redimensionar no es gratis.