¿Recuerda el escáner de matrículas de $ 86 millones que repliqué? Cogí a alguien con eso.

¿Recuerda el escáner de matrículas de $ 86 millones que repliqué? Cogí a alguien con eso.

Hace unas semanas, publiqué lo que pensé en ese momento que era un artículo bastante inocuo: cómo repliqué un proyecto de $ 86 millones en 57 líneas de código.

Lo admito, fue una afirmación bastante engañosa. Básicamente, estaba diciendo que había reproducido la misma tecnología de escaneo y validación de matrículas por la que la policía de Victoria, Australia, acababa de pagar 86 millones de dólares.

Desde entonces, las reacciones han sido abrumadoras. Mi artículo recibió más de 100.000 visitas el primer día y, a última vista, se sitúa en torno a las 450.000. Me invitaron a hablar en programas de radio locales y en una conferencia en California. Creo que alguien puede haber malinterpretado Victoria, AU como Victoria, BC.

Aunque rechacé cortésmente estas ofertas, me he reunido para tomar un café con varios desarrolladores locales y firmas de renombre por igual. Ha sido increíblemente emocionante.

La mayoría de los lectores lo vieron por lo que era: una prueba de concepto para iniciar una discusión sobre el uso de la tecnología de código abierto, el gasto público y el deseo de un hombre de construir cosas interesantes desde su sofá.

Los empleados han señalado la falta de capacitación, soporte y reductores de costos de TI empresariales habituales, pero no vale la pena que nadie se dedique a explorarlos. Prefiero pasar esta publicación mirando mis resultados y cómo otros pueden apuntalar su propia precisión.

Antes de profundizar demasiado en los resultados, me gustaría repasar una cosa que creo que se perdió en la publicación original. El concepto de este proyecto comenzó completamente separado del proyecto BlueNet de $ 86 millones. De ninguna manera fue un intento de eliminarlo.

Comenzó con la persistente idea de que, dado que OpenCV existe y el sitio web de VicRoads tiene controles de matrículas, debe haber una manera de combinar los dos o usar algo mejor.

Fue solo cuando comencé a escribir que me topé con BlueNet. Mientras descubría BlueNet y su precio, me dio un gran ángulo editorial, con el código ya escrito. Seguramente habría algunas inconsistencias entre los proyectos.

También creo que parte de la razón por la que esto explotó fue el momento oportuno de un informe sobre el derroche del gasto público en TI en Australia. El proyecto de ley de TI del gobierno federal se ha disparado de $ 5.9 mil millones a $ 10 mil millones, y generó un valor dudoso por esa explosión. Los investigadores de medios que se pusieron en contacto conmigo se apresuraron a vincular los dos, pero esto no es algo que me apresure a alentar.

Un descargo de responsabilidad

En aras de la transparencia, debo declarar algo que también faltaba en la publicación original. Mi empleador anterior entregó proyectos de TI más pequeños (menos de $ 1 millón) para la Policía de Victoria y otros organismos estatales. Como resultado, me sometí a controles policiales y completé los formularios necesarios para convertirme en contratista de VicPol.

Esto puede implicar que tengo mucho talento o conocimientos específicos de información privilegiada, pero en cambio estoy orgulloso de los proyectos que entregamos. Ambos llegaron a tiempo y dentro del presupuesto.

Visualizando los resultados

La siguiente es una representación en video de mis resultados, compuesta en After Effects para divertirme un poco. Grabé varias imágenes de prueba y este fue el clip más exitoso.

Entraré en detalles sobre las configuraciones ideales de la cámara, las regiones de detección y más después del video. Le ayudará a comprender mejor qué hizo que este video de iPhone que tomé a través del parabrisas sea mejor que un Contour HD en ángulo desde la ventana lateral.

Un dilema ético

Si vio el gráfico del héroe de este artículo o vio el video de arriba, es posible que haya notado un desarrollo muy interesante: atrapé a alguien .

Específicamente, atrapé a alguien conduciendo un vehículo con un registro cancelado de 2016. Esto podría haber sucedido por muchas razones, la más inocente de las cuales es una práctica de reventa poco fiable.

En ocasiones, cuando la venta privada de un vehículo no se realiza según el libro, el comprador y el vendedor pueden no completar una transferencia oficial de registro. Esto le ahorra al comprador cientos de dólares, pero el vehículo aún está registrado a nombre del vendedor. No es raro que un vendedor cancele el registro y reciba un reembolso ad hoc de los meses restantes, también por valor de cientos de dólares.

Alternativamente, el conductor del vehículo bien podría ser el criminal que sospechamos que es.

Entonces, aunque llamé en broma al proyecto plate-snitch cuando lo configuré en mi computadora, ahora me enfrento al enigma de si debo informar lo que vi.

Finalmente, el conductor fue detectado usando un prototipo de dispositivo exclusivo para la policía. Pero conducir con un registro de 2016 (cancelado, no vencido) es un movimiento muy deliberado. Hmm.

Volver a los resultados

De las muchas reacciones a mi artículo, una cantidad significativa fue bastante literal y dudosa. Como dije que replicaba el software, afirmaron que debo tener un centro de soporte, garantías y manuales de capacitación. Uno incluso intentó replicar mis resultados y chocar con los obstáculos inevitables de la calidad de imagen y el material original.

Debido a esto, algunos insinuaron que elegí mis imágenes originales. A eso solo puedo decir, "Bueno, duh".

Cuando construí mi prueba de concepto inicial (nuevamente, centrándome en validar una idea, no en replicar BlueNet), utilicé un pequeño conjunto de muestra de menos de diez imágenes. Dado que la configuración de la cámara es uno de los factores más importantes de ALPR , si no el más importante, los seleccioné por sus características ideales que mejoran el reconocimiento.

Al final del día, es muy sencillo tomar una prueba de concepto frágil y romperla. La verdadera innovación y desafío proviene de tomar una prueba de concepto y hacer que funcione . A lo largo de mi carrera profesional, muchos desarrolladores senior me han dicho que las cosas no se pueden hacer o al menos no se pueden hacer de manera oportuna. A veces tenían razón. A menudo, simplemente eran reacios al riesgo.

"Nada es imposible hasta que se demuestre que lo es".

Muchas personas bastardizan esta cita, y es posible que hayas visto o escuchado una de sus encarnaciones antes. Para mí, resume perfectamente una mentalidad de desarrollo saludable, en la que impulsar y validar ideas es casi obligatorio para comprenderlas.

Configuraciones óptimas de la cámara ALPR

Este proyecto es tan emocionante y diferente para mí porque tiene una métrica de éxito clara: si el software reconoce la placa. Esto solo puede suceder con una combinación de hardware, software y soluciones de red. Después de publicar mi artículo original, las personas que venden cámaras ALPR rápidamente ofrecieron consejos.

Zoom óptico

La solución más obvia en retrospectiva es el uso de un zoom óptico. Aunque exploro otros factores importantes a continuación, ninguno conduce a un aumento tan grande en el reconocimiento como este. En general, las soluciones ALPR profesionales se compensan en ángulo, se les enseña dónde estará la matrícula y se amplían el área para maximizar la claridad.

Esto significa que cuanto más zoom, más píxeles para jugar .

Todas las cámaras que tenía a mi disposición eran de lente fija. Ellos incluyeron:

  • Una cámara de acción Contour HD. Estos salieron en 2009, y utilizo el mío para grabar mi viaje en bicicleta y reproducir la experiencia cercana a la muerte de cada semana.
  • Un Fujifilm X100S (conocido como un objetivo fijo fijo)
  • Mi iPhone 6+

La ejecución de prueba destacada se grabó en mi teléfono. Mi único método para replicar un zoom óptico era usar una aplicación para grabar a 3K en lugar de 1080p, y luego hacer zoom y recortar digitalmente. Nuevamente, más píxeles para jugar.

Ángulo y posicionamiento

A menudo se hace referencia al ángulo de visión de 30 ° como el estándar para el reconocimiento de placas ideal. Esto es increíblemente importante cuando se entera de que BlueNet utiliza una variedad de cámaras. También tiene sentido cuando se considera lo que generalmente vería una cámara frontal, no mucho.

Si tuviera que adivinar, diría que una matriz en su mayoría orientada hacia adelante sería la configuración ideal. Consistiría en una sola cámara apuntando al centro muerto como arriba, dos descentradas a 30 ° a cada lado y una sola cámara orientada hacia atrás. El valor de tener la mayoría de las cámaras apuntando hacia adelante provendría del mayor tiempo de reacción si el vehículo se desplaza en la dirección opuesta. Esto permitiría un escaneo, un proceso y un cambio de sentido más rápidos que si las cámaras orientadas hacia atrás detectaran un vehículo sospechoso ya diez metros más allá del vehículo policial.

Un Gymbal

Al componer el video, pensé en estabilizar el metraje. En cambio, opté por mostrar el viaje lleno de baches por lo que era. Lo que vio fue que sostenía mi teléfono cerca del parabrisas mientras mi esposa conducía. Mira ese riguroso método científico.

Otros factores importantes

Cuadros por segundo

Tanto el intento de replicar mi proyecto como mis grabaciones desde entonces exploraron la misma idea errónea de que la frecuencia de cuadros de muestreo ALPR puede estar relacionada con el éxito. En mi experiencia, esto no hizo más que desperdiciar ciclos. En cambio, lo que es increíblemente importante es la velocidad de obturación, lo que crea imágenes claras y nítidas que se integran bien en el algoritmo.

Pero también estaba probando metraje a bastante baja velocidad. Como máximo, dos vehículos que se cruzan en una zona de 60 km / h crean un diferencial de 120 km / h. BlueNet, por otro lado, puede trabajar hasta supuestos 200 km / h.

Como una forma de resolver esto, un colega sugirió la detección de objetos y el procesamiento fuera de banda. Identifica un vehículo y dibuja un cuadro delimitador. Espere a que entre en el ángulo de reconocimiento ideal y haga zoom. Luego, tome una ráfaga de fotos para el procesamiento asincrónico.

Busqué usar OpenCV (node-opencv) para el reconocimiento de objetos, pero encontré algo más simple como la detección de rostros, que tarda entre 600 y 800 ms. No solo menos que ideal para mi uso, sino bastante pobre en general.

Hype-train TensorFlow viene al rescate. Capaz de ejecutarse en el dispositivo, hay ejemplos de proyectos que identifican varios vehículos por cuadro a unos asombrosos 27,7 fps. Esta versión podría incluso exponer estimaciones de velocidad. Legalmente sin valor, pero quizás útil en la vigilancia diaria (sin referencia de fps en el archivo Léame).

Para explicar mejor cómo el reconocimiento de vehículos de alto rendimiento podría combinarse con técnicas ALPR más lentas, creé otro video en After Effects. Imagino que los dos trabajando cogidos de la mano se verían así:

Velocidad de fotogramas frente a velocidad de obturación

Una manifestación diferente de la velocidad de fotogramas depende en gran medida de la velocidad del obturador y, más específicamente, de los problemas del obturador rodante que afectan a las grabadoras de películas digitales antiguas o de gama baja. La siguiente es una instantánea de algunas imágenes de Contour HD. Puede ver a solo 60 km / h que el problema de la persiana enrollable hace que las imágenes sean más o menos inutilizables desde el punto de vista de ALPR.

El ajuste de la velocidad de fotogramas tanto en el Contour HD como en mi iPhone no resultó en una distorsión notablemente menor. En teoría, una velocidad de obturación más alta debería producir imágenes más claras y nítidas. Se volverían cada vez más importantes si persiguiera el punto de referencia BlueNet de 200 km / h. Menos borrosidad y menos distorsión del obturador rodante idealmente conducirían a una mejor lectura.

Versión ALPR abierta

Uno de los descubrimientos más interesantes fue que la versión de node-openalpr que estaba usando está desactualizada y no es tan poderosa como su solución propietaria. Si bien un requisito de código abierto fue sin duda un factor, fue sorprendente la precisión con la que la versión en la nube podía leer con éxito marcos en los que ni siquiera podía identificar una placa.

Datos de formación de países de ALPR

También encontré que el paquete principal node-openalpr se predetermina al procesamiento del país de EE. UU. Sin forma de anularlo. Tienes que tirar hacia abajo de la bifurcación de otra persona, lo que te permite proporcionar un parámetro de país adicional.

Pero esto no siempre ayuda. Usando el algoritmo predeterminado de EE. UU., Pude producir la mayoría de los resultados. Especificar el conjunto de datos australianos en realidad redujo a la mitad el número de lecturas de placa exitosas, y solo logró encontrar una o dos que el algoritmo estadounidense no pudo. Proporcionar el juego separado de "Australian Wide Plate" nuevamente redujo a la mitad el recuento e introdujo un solo plato adicional.

Claramente, hay mucho que desear cuando se trata de conjuntos de datos basados ​​en Australia para ALPR, y creo que la gran cantidad de estilos de plancha disponibles en Victoria es un factor que contribuye.

Deformaciones planas

Open ALPR viene con una herramienta en particular para reducir el impacto de la distorsión tanto del ángulo de la cámara como del obturador rodante. La deformación plana se refiere a un método en el que las coordenadas se pasan a la biblioteca para sesgar, trasladar y rotar una imagen hasta que se parezca mucho a una placa recta.

En mi limitada experiencia en pruebas, no pude encontrar una deformación plana que funcionara a todas las velocidades. Cuando se considera la persiana enrollable, tiene sentido que la distorsión aumente en relación con la velocidad del vehículo. Me imagino alimentando datos de velocidad de acelerómetro o GPS como un coeficiente podría funcionar. O, ya sabes, consigue una cámara que no sea del todo basura.

Qué están haciendo otros en la industria

Numerosos lectores se acercaron después de la última publicación para compartir sus propias experiencias e ideas. Quizás una de las soluciones más interesantes que compartió conmigo fue la de Auror en Nueva Zelanda.

Emplean cámaras ALPR fijas en estaciones de servicio para informar sobre personas que roban gasolina. Esto en sí mismo no es particularmente nuevo y revolucionario. Pero cuando se combinan con su red, pueden generar una alerta automáticamente cuando los delincuentes conocidos hayan regresado o estén apuntando a estaciones de servicio en el área.

Los desarrolladores independientes en Israel, Sudáfrica y Argentina han mostrado interés en construir sus propias versiones pirateadas de BlueNet. A algunos probablemente les irá mejor que a otros, ya que lugares como Israel usan placas de siete dígitos sin caracteres alfabéticos.

Conclusiones clave

Simplemente, he aprendido demasiado en las últimas semanas de incursionar en una publicación. Si bien ha habido muchos detractores, realmente aprecio el apoyo y el conocimiento que me han enviado.

Hay muchos desafíos que enfrentará al intentar construir su propia solución ALPR, pero afortunadamente muchos de ellos son problemas resueltos.

Para poner las cosas en perspectiva, soy diseñador y desarrollador front-end. He pasado unas diez horas ahora en metraje y código, otras ocho en producción de video y al menos otras diez solo en redacciones. He logrado lo que tengo apoyándome en los hombros de gigantes. Estoy instalando bibliotecas creadas por personas inteligentes y he aprovechado los consejos de personas que venden estas cámaras para ganarse la vida.

La pregunta de los $ 86 millones aún permanece: si puede construir una solución a medias que hace un buen trabajo apoyándose en los hombros de gigantes, ¿cuánto dinero más debería invertir para hacer un trabajo realmente bueno?

Mi solución ni siquiera está en el mismo sistema solar que el escáner con una precisión del 99,999% que algunos comentaristas de Internet parecen esperar. Pero, de nuevo, BlueNet solo tiene que cumplir con un objetivo de precisión del 95%.

Entonces, si $ 1 millón te permite alcanzar el 80% de precisión y tal vez $ 10 millones te brindan un 90% de precisión, ¿cuándo dejas de gastar? Además, teniendo en cuenta que la tecnología tiene aplicaciones comerciales probadas aquí en Oceanía, ¿cuánto más dinero de los contribuyentes debería invertirse en una solución patentada y de origen cercano cuando las nuevas empresas locales podrían beneficiarse? Después de todo, se supone que Australia es una “nación innovadora”.