Spaces:
Sleeping
Sleeping
Commit History
12 days ago
-
Sumar el link al repo de GitHub junto a mi nombre
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>279c62b -
Achicar la imagen del editor: en iPhone Safari cerraba la pestaña
El editor de Gradio crea cada capa del tamaño de la imagen por la densidad de la pantalla al cuadrado. En un iPhone 15 Pro Max (densidad 3) un cuadro de 1920 px daba ~75 MB por capa y Safari cerraba la pestaña ("A problem repeatedly occurred"). Ahora el editor muestra el cuadro a 960 px de ancho; zone_from_layers ya agranda la zona al tamaño del video. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>b3ab239 -
Poner mi nombre en el título, al mismo tamaño
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>bfa76d8 -
Poner la tabla de intrusos al lado del video analizado y titular cada recuadro
Con la tabla arriba del video había que scrollear para verlo. Ahora la página es una grilla de 2x2: video y zona arriba, tabla y video analizado abajo. La tabla toma la proporción del video (16:9) y, si hay más intrusos de los que entran, scrollea adentro. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>fa906cb -
Mostrar mi nombre debajo del título
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>fa3dba9 -
Simplificar el editor de la zona y sumar subir video y deshacer
- Arriba, el nombre y lo que aporta: "Detecta quién entra a una zona restringida de tus cámaras, cuándo y por cuánto tiempo." - "Subir mi video" en vez de la ✕ chiquita del video. - El editor sin barras ni menús: solo se pinta, y "Deshacer" es un botón. La imagen ocupa todo el recuadro (16:9, sin el margen de 30 px del zoom). Se saca "Borrar zona". - La página no scrolleaba con el mouse sobre el editor: se quedaba con la rueda. - Si el análisis fallaba, el botón quedaba en "Analizando…": en Gradio 6.30 .then no corre tras una falla, se restablece con .success y .failure. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>e8e6690 -
Mostrar con una animación dónde pintar, sin textos en la página
Se borra "Sobre esta demo": la página no tiene texto más allá del título, etiquetas y botones. En su lugar, sobre la imagen de la zona un pincel pinta un área en loop; se va al primer trazo y vuelve al borrar la zona o subir otro video. La tabla queda oculta hasta tocar Analizar: vacía era ruido. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>7122246 -
Mostrar a los intrusos en una tabla con su foto a medida que se analizan
La página es para jefes no técnicos: se explica sola, sin instrucciones de uso. Los conceptos (qué es intruso, cuadros por segundo, límites, que el video va a Hugging Face) quedan en "Sobre esta demo", plegado. - Una sola tabla con la foto recortada de cada intruso en vez de tabla + galería de cuadros enteros, que parecían todos la misma foto. - analyze es un generador: las filas aparecen mientras se analiza; salida y duración se completan al final. - El video aparece abajo y recién al terminar: vacío parecía roto. - Un solo indicador de avance, en el botón. Las barras de Gradio iban una por resultado, y la de la tabla tapaba las filas nuevas. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>0c44a5a
13 days ago
-
Borrar los lanzadores locales: la demo se usa desde el Space
run.bat y run.sh eran para que cada jefe la corriera en su PC; ahora la usan desde el Space de Hugging Face. El README y el aviso de la página ya no mandan a la versión local. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>78ff9fe -
Evitar que el lienzo de recorte del editor desplace la página
El lienzo de la herramienta de recorte del editor de Gradio mide el doble de su recuadro y se sale: la página quedaba desplazable a los costados y, al pintar cerca del borde, se corría entera y el trazo caía fuera de la imagen. Se recorta lo que sobresale con CSS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>61f69a4 -
Centrar la imagen del editor de zona con zoom del navegador distinto de 100%
Con zoom 90% el lienzo del editor de Gradio 6.30 quedaba más ancho que su recuadro (1853 px en uno de 916): la imagen aparecía corrida a la derecha, cortada, y no se podía pintar encima. Al cargar la página, al subir un video, al borrar la zona y al cambiar el zoom, se ajusta el lienzo al recuadro y se vuelve a encuadrar la imagen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>124eb9e -
Configurar el Space de Hugging Face y explicar cómo usarlo
El README lleva la configuración del Space (Gradio 6.30, Python 3.12.12) y requirements.txt fija torch 2.13.0, el último que soporta ZeroGPU. La versión local queda para grabaciones reales. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>18f2413 -
Pedir GPU con ZeroGPU y avisar que el video va a Hugging Face
on_analyze lleva @spaces.GPU, que fuera de un Space ZeroGPU no hace nada. La página avisa que el video se procesa en servidores de Hugging Face solo cuando corre en un Space (SPACE_ID). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>6589a25 -
Documentar privacidad y límites de la demo en el README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>2ae0d95 -
Hacer que las pruebas no dejen videos en la carpeta temporal
Cada corrida de pytest dejaba carpetas camguard-* con videos en %TEMP%. Un fixture común las manda a la carpeta temporal de pytest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>b101e29 -
Fijar la versión del instalador de uv en los lanzadores (OWASP LLM04)
run.bat y run.sh ejecutaban el script de instalación más reciente bajado de internet. Ahora usan el de uv 0.11.1, con el que se probó. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>ff8b647 -
Limitar el video subido a 1 GB (OWASP LLM06)
El análisis usa como máximo 60 s, pero el archivo se copiaba y decodificaba entero sin importar su tamaño. Gradio rechaza los más grandes con HTTP 413 (MAX_UPLOAD en config). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>e575738 -
Avisar en la página que es una demo y sus límites (OWASP LLM07)
Los resultados se mostraban como hechos. El aviso aclara que puede no detectar a algunas personas, que no reemplaza la vigilancia humana y que una entrada a los 0,2 s puede ser alguien que ya estaba en la zona. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>ea02b78 -
No dejar videos en el disco ni enviar telemetría (OWASP LLM02)
Los videos subidos y los resultados quedaban para siempre en la carpeta temporal (en esta PC había 54 carpetas de resultados y 93 MB de caché de Gradio). Ahora todo va a %TEMP%\camguard: la app la vacía al arrancar y Gradio borra sus copias de más de una hora (delete_cache). Se apaga la telemetría de Gradio, que venía activada por defecto. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>741ce52 -
Actualizar el README: contornos y regla del centro del cuerpo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>e2b4ca8 -
Decidir quién es intruso por el centro del cuerpo, no por los pies
Con la cámara en ángulo, la regla de los pies marcaba como intruso a quien tenía el cuerpo afuera y apenas pisaba el borde, y no marcaba a quien tenía el cuerpo sobre la zona pero los pies un poco afuera (7 de ~30 errores en cuadros del ejemplo). El centro del recuadro coincide con lo que ve quien mira el video. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>e81ca22 -
Rellenar la zona cuando se marca dibujando su contorno
Solo lo pintado contaba como zona: con un contorno, quien tocaba la línea por afuera era intruso y quien estaba adentro no (se detectaba al ~14% de la gente de adentro). fill_outlines cierra huecos chicos del trazo, rellena lo encerrado y recorta el medio trazo que sobresale hacia afuera. Si se pintó el área entera, no cambia nada. El cierre de huecos tiene un radio máximo (MAX_GAP_PX): sin él, un área grande tardaba ~100 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>132e289 -
Bajar la confianza mínima a 0.25
Con la cámara en lo alto el modelo da confianzas bajas incluso a personas claras: en el video de ejemplo, con 0.4 se detectaba al 70% de la gente dentro de la zona y con 0.25 al 96%, sin sumar falsos (medido contra RF-DETR Large como referencia). El modelo más grande no mejoraba y era 2x más lento, así que se queda RF-DETR Small. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>7dcef0a -
Alinear el umbral de ByteTrack para no perder personas detectadas
ByteTrack solo crea seguimientos nuevos con detecciones de confianza >= high_conf_det_threshold (0.6 por defecto), así que las personas detectadas con 0.4-0.6 nunca recibían número y no se mostraban: en el video de ejemplo se perdía el 31% de las detecciones (ahora se muestra el 95%, y se siguen 48 personas distintas en vez de 31). Se alinea con CONF y la creación del tracker pasa a new_bytetrack() para probarla sin cargar el modelo. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>c96fcf1 -
Mostrar los pasos faltantes como aviso y no como error
Analizar sin zona pintada (por ejemplo, si se tocó el ícono del pincel, que ya viene activo, y el arrastre no pintó) mostraba un cartel rojo "Error", marcaba el resultado como fallido e imprimía un traceback en la consola. Ahora es un aviso amarillo y los resultados quedan como estaban. Las instrucciones aclaran que el pincel ya está activo. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>94d00f7 -
Dejar la zona sin pintar, agregar "Borrar zona" y afinar el pincel
- El video de ejemplo arranca sin zona: la pinta quien prueba la demo. Además, la zona pre-cargada no estaba en el historial del editor, por eso el botón de deshacer no la quitaba. - Botón "Borrar zona": vuelve a poner el primer cuadro limpio. - Pincel de 120 a 60 px (BRUSH_SIZE). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>1def13d -
Documentar la estructura y los comandos de desarrollo en el README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>917b0cf -
Excluir dependencias de desarrollo al lanzar la app
uv run instala el grupo dev por defecto; con --no-dev los jefes no descargan ruff ni pytest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>85c14ba -
Agregar pytest y pruebas de zona, eventos, video y pipeline
36 pruebas, ~3 s, sin descargar el modelo: el pipeline se prueba con un tracker falso y el video con archivos sintéticos chicos. Reemplazan al test_zone.py de la raíz. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>170c23f -
Agregar ruff como linter y formateador
Reglas E, F, I, UP, B, SIM y D (docstrings estilo Google), línea de 100. Corrige lo que marcó: el archivo temporal del resultado quedaba abierto (en Windows puede bloquear la escritura); ahora es resultado.mp4 en una carpeta temporal propia. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>ae47c23 -
Separar la demo en el paquete camguard por responsabilidad
config (perillas), zone (máscara y regla de pies), events (Event y armado de eventos), video (lectura submuestreada y escritura H.264), detection (RF-DETR + ByteTrack), annotate (dibujo), pipeline (análisis sin depender de Gradio) y ui (página). app.py queda como punto de entrada. Mismo comportamiento: el video de ejemplo da las mismas 18 capturas que antes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>855e8cb -
Corregir latencia medida en el comentario de CPU
Medido en 1080p: ~0.5 s por cuadro, no 0.3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>0c69c36 -
Agregar instrucciones de uso en el README
Pensadas para alguien no técnico: descargar el ZIP, doble clic y probar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>9e42eed -
Agregar lanzadores de doble clic para Windows y Mac/Linux
Instalan uv si falta y ejecutan la app con uv run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>069101e -
Agregar interfaz web con video de ejemplo
Página Gradio local (127.0.0.1): subir video, pintar la zona, analizar. Arranca con un video de ejemplo y una zona ya marcada; el video se descarga en examples/ (ignorado por git) porque su licencia no es clara. Reemplaza el main.py de ejemplo. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>4415afe -
Agregar pipeline de análisis de video
Submuestrea a 5 fps (tope 60 s), detecta personas con RF-DETR, les da un ID con ByteTrack, marca intrusos por la zona y escribe el video anotado en H.264 con PyAV para que se reproduzca en el navegador. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>933bcf5 -
Agregar lógica de zona y armado de eventos con pruebas
feet_in_zone decide si los pies de cada persona caen en la zona pintada; build_events agrupa los cuadros en entradas/salidas, tolerando huecos cortos de detección (MAX_GAP_S). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>ca5e334 -
Agregar dependencias de la demo
RF-DETR (detección), trackers (ByteTrack), supervision (anotación), Gradio (UI), OpenCV y PyAV (lectura y escritura de video). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>5120cf0 -
first commit
29829e9