Cómo repliqué un proyecto de $ 86 millones en 57 líneas de código

Cuando un experimento con tecnología de código abierto existente hace un trabajo "suficientemente bueno"

La Policía de Victoria es la principal agencia policial de Victoria, Australia. Con más de 16.000 vehículos robados en Victoria el año pasado, a un costo de alrededor de $ 170 millones, el departamento de policía está experimentando con una variedad de soluciones impulsadas por la tecnología para combatir el robo de automóviles. A este sistema lo llaman BlueNet.

Para ayudar a prevenir ventas fraudulentas de vehículos robados, ya existe un servicio basado en la web de VicRoads para verificar el estado de los registros de vehículos. El departamento también ha invertido en un escáner de matrículas fijo, una cámara de trípode fija que escanea el tráfico que pasa para identificar automáticamente los vehículos robados.

No me pregunte por qué, pero una tarde tuve el deseo de crear un prototipo de un escáner de matrículas montado en un vehículo que le notificaría automáticamente si un vehículo había sido robado o no estaba registrado. Al comprender que existían estos componentes individuales, me pregunté qué tan difícil sería conectarlos.

Pero fue después de buscar un poco en Google que descubrí que la Policía de Victoria se había sometido recientemente a una prueba de un dispositivo similar, y el costo estimado de implementación estaba en las cercanías de $ 86,000,000. Un comentarista astuto señaló que el costo de $ 86 millones para equipar 220 vehículos tiene un costo de $ 390,909 por vehículo .

Seguramente podemos hacer algo mejor que eso.

Los criterios de éxito

Antes de comenzar, describí algunos requisitos clave para el diseño de productos.

Requisito n. ° 1: el procesamiento de imágenes debe realizarse localmente

La transmisión de video en vivo a un almacén de procesamiento central parecía el enfoque menos eficiente para resolver este problema. Además de la enorme factura por el tráfico de datos, también está introduciendo latencia de red en un proceso que puede que ya sea bastante lento.

Aunque un algoritmo de aprendizaje automático centralizado solo se volverá más preciso con el tiempo, quería saber si una implementación local en el dispositivo sería "suficientemente buena".

Requisito # 2: Debe funcionar con imágenes de baja calidad.

Como no tengo una cámara Raspberry Pi o una cámara web USB, usaré imágenes de la cámara del tablero, está disponible y es una fuente ideal de datos de muestra. Como ventaja adicional, el video de la cámara para salpicadero representa la calidad general de las imágenes que esperaría de las cámaras montadas en vehículos.

Requisito n. ° 3: debe construirse utilizando tecnología de código abierto

Depender de un software propietario significa que se sentirá molesto cada vez que solicite un cambio o mejora, y el dolor continuará con cada solicitud que se realice a partir de entonces. Usar tecnología de código abierto es una obviedad.

Mi solución

En un nivel alto, mi solución toma una imagen de un video de cámara de tablero, la bombea a través de un sistema de reconocimiento de matrículas de código abierto instalado localmente en el dispositivo, consulta el servicio de verificación de registro y luego devuelve los resultados para su visualización.

Los datos devueltos al dispositivo instalado en el vehículo policial incluyen la marca y el modelo del vehículo (que solo usa para verificar si las placas han sido robadas), el estado del registro y cualquier notificación del vehículo que se reporta como robado.

Si eso suena bastante simple, es porque realmente lo es. Por ejemplo, el procesamiento de imágenes puede ser manejado por la biblioteca openalpr .

Esto es realmente todo lo que implica reconocer a los personajes en una matrícula:

Una advertencia menor

El acceso público a las API de VicRoads no está disponible, por lo que las verificaciones de las matrículas se realizan a través del web scraping para este prototipo. Aunque generalmente está mal visto, esta es una prueba de concepto y no estoy criticando los servidores de nadie.

Así es como se ve la suciedad de mi raspado de prueba de concepto:

Resultados

Debo decir que me sorprendió gratamente.

Esperaba que el reconocimiento de matrículas de código abierto fuera bastante basura. Además, es probable que los algoritmos de reconocimiento de imágenes no estén optimizados para matrículas australianas.

La solución fue capaz de reconocer matrículas en un amplio campo de visión.

Aunque, la solución ocasionalmente tendría problemas con letras particulares.

Pero ... la solución eventualmente los haría correctos.

Como puede ver en las dos imágenes anteriores, el procesamiento de la imagen un par de fotogramas más tarde saltó de un índice de confianza del 87% a un cabello de más del 91%.

Estoy seguro, perdón por el juego de palabras, que la precisión podría mejorarse aumentando la frecuencia de muestreo y luego clasificando por la calificación de confianza más alta. Alternativamente, se podría establecer un umbral que solo acepte una confianza superior al 90% antes de continuar con la validación del número de registro.

Esas son correcciones de código muy sencillas y no excluyen la capacitación del software de reconocimiento de matrículas con un conjunto de datos locales.

La pregunta de los $ 86,000,000

Para ser justos, no tengo la menor idea de lo que incluye la cifra de $ 86 millones, ni puedo hablar de la precisión de mi herramienta de código abierto sin capacitación localizada frente al sistema piloto BlueNet.

Espero que parte de ese presupuesto incluya el reemplazo de varias bases de datos heredadas y aplicaciones de software para respaldar la consulta de alta frecuencia y baja latencia de matrículas varias veces por segundo, por vehículo.

Por otro lado, el costo de ~ $ 391k por vehículo parece bastante alto, especialmente si BlueNet no es particularmente precisa y no hay proyectos de TI a gran escala para desmantelar o actualizar sistemas dependientes.

Aplicaciones futuras

Si bien es fácil quedar atrapado en la naturaleza orwelliana de una red “siempre activa” de ladrones de matrículas, hay muchas aplicaciones positivas de esta tecnología. Imagine un sistema pasivo que escanea a otros conductores en busca de un automóvil secuestrador que alerta automáticamente a las autoridades y a los miembros de la familia sobre su ubicación y dirección actual.

Los vehículos Teslas ya están llenos de cámaras y sensores con la capacidad de recibir actualizaciones OTA; imagínese convertirlos en una flota de buenos samaritanos virtuales. Los conductores de Ubers y Lyft también podrían estar equipados con estos dispositivos para aumentar drásticamente el área de cobertura.

Utilizando tecnología de código abierto y componentes existentes, parece posible ofrecer una solución que proporcione una tasa de retorno mucho más alta, por una inversión mucho menor a $ 86 millones.

Parte 2 : publiqué una actualización, en la que pruebo con mis propias imágenes y capturo un vehículo no registrado, aquí:

¿Recuerda ese escáner de matrículas de $ 86 millones que repliqué? Esto es lo que pasó después.

Éxitos, fracasos y atrapar a un conductor muy travieso medium.freecodecamp.org