
Show HN: Build a DIY license plate reader with machine learning - calebkaiser
https://github.com/cortexlabs/cortex/tree/master/examples/tensorflow/license-plate-reader
======
calebkaiser
Hey HN,

I’m Caleb, and I’m a maintainer of Cortex, an open source model deployment
platform. Not long ago, we published this DIY license plate reader project,
and I wanted to share it here for anyone who is interested in computer vision
or production machine learning in general.

The project is a web service that accepts images and, using three trained
models, returns extracted license plate text, assuming there is a license
plate in the image. Of the models used, two are pre-trained models from keras-
ocr, while one is a fine tuned YOLOv3. All models are freely available.

You can see a video of the project in action here:
[https://www.youtube.com/watch?v=gsYEZtecXlA](https://www.youtube.com/watch?v=gsYEZtecXlA)

And read a write up by Robert Lucian, the maintainer who spearheaded this
entire project, about how he built a camera system to interface with the web
service using a Raspberry Pi and 5G: [https://towardsdatascience.com/i-built-
a-diy-license-plate-r...](https://towardsdatascience.com/i-built-a-diy-
license-plate-reader-with-a-raspberry-pi-and-machine-learning-7e428d3c7401)

~~~
jmnicolas
I wonder if it would be more efficient with OpenCV?

~~~
bigiain
This one uses some OpenCV:

[https://www.freecodecamp.org/news/remember-
that-86-million-l...](https://www.freecodecamp.org/news/remember-
that-86-million-license-plate-scanner-i-replicated-heres-what-happened-
next-9f3c64e8f22b/)

------
jlturner
Take care to understand your local law regarding automatic license plate
recognition. Use of such software and/or data collected with it may be under
regulation. IANAL, but see your state statutes here if you live in the US:
[https://www.ncsl.org/research/telecommunications-and-
informa...](https://www.ncsl.org/research/telecommunications-and-information-
technology/state-statutes-regulating-the-use-of-automated-license-plate-
readers-alpr-or-alpr-data.aspx)

~~~
joncrane
I find it interesting that some states are trying to regulate something like
this.

What if you had a child read off every license plate they see and use voice
recognition to record the license plates?

Is it illegal in real time, but allowed if you replay your dashcam footage
later?

~~~
varispeed
What if you let the child buy drugs? Same thing. Don't let your child do
illegal things and better - don't help it. If you hear your child is reciting
the number plates, make sure all recording hardware in your car is off before
you lecture the kid that what it does is absolutely forbidden.

~~~
Google234
This made me laugh

------
giarc
Am I missing something or in this image, is the confidence score 99.23% and
has the incorrect license plate? The plates clearly have a 5 but it's
predicting an S.

[https://camo.githubusercontent.com/5138d6bce5c840d15e533db6f...](https://camo.githubusercontent.com/5138d6bce5c840d15e533db6f300660c80eb2619/68747470733a2f2f692e696d6775722e636f6d2f746731504531452e6a7067)

~~~
cptskippy
Is that confidence for the value or the category. It comes after LP in the
image which makes me think it's the confidence that it is a license plate, not
necessarily the confidence of the reading of said license plate.

~~~
giarc
You might be right. The gif on github, at times, shows no plate prediction but
still includes a confidence score. I would suspect that if it can't even show
a prediction, it's confidence score wouldn't show either (being that it would
be 0%).

~~~
cptskippy
> I would suspect that if it can't even show a prediction, it's confidence
> score wouldn't show either (being that it would be 0%).

Recognizing that something is a license place, and being able to read the
plate are mutually exclusive things. People can identify license plates even
if they can't read them, and people who don't know what a license plate is my
still be able to read the numbers on them.

The ML has to do two things; the first is reject anything that isn't a License
Plate, the second is OCR License Plates.

------
techbio
"Do-it-yourself" seems like a not quite appropriate title for an interface
that calls a webservice with pre-built vision ML.

~~~
varispeed
This is CIY - cobble it yourself.

~~~
Breza
That's a fantastic description. Never seen it before. I'm a data scientist.
Some of my projects are DIY and some of them just consist of writing code to
link data with existing models and I might start using "CIY" to describe them.

------
csours
I've been watching dashcam footage lately and thinking about this. It would be
very helpful for hit and runs if the dashcam had some on-board recognition
that saved the last x license plates just like it saves the last x seconds of
videos.

Often the video footage is not good enough to get a plate because the capture
settings are set lower so that more footage can be stored.

------
tyingq
I wonder how much more revenue police departments are making with ANPR[1].

They can, for example, have a camera in all the cruisers, and automatically
alert when a nearby car has an expired registration, inspection, etc. Or, if
they have the tie-ins, registered to an owner with an open warrant or unpaid
traffic citations.

[1] [https://en.wikipedia.org/wiki/Automatic_number-
plate_recogni...](https://en.wikipedia.org/wiki/Automatic_number-
plate_recognition)

------
tangled
I’ve pondered the implications of running an ‘installation art’ project where
a bunch of these are deployed around a city, with aggregated data visible over
a web UI (assuming that this doesn’t violate any laws.) The aim would be to
raise public awareness of pervasive surveillance, and perhaps catalyze changes
to the law.

~~~
pc86
Regardless of the content, I think the idea of an installation art project
whose goal is to make the art project itself illegal is pretty cool.

------
yuvadam
How does this implementation perform compared to classic approaches such as
OpenALPR [1] ?

At the very least running local inference becomes much more expensive, and
possibly provides worse results.

[1] -
[https://github.com/openalpr/openalpr](https://github.com/openalpr/openalpr)

~~~
curben
This reminds me of an article [1] I read a few years back which utilised
OpenALPR.

[1]: [https://www.freecodecamp.org/news/how-i-replicated-
an-86-mil...](https://www.freecodecamp.org/news/how-i-replicated-
an-86-million-project-in-57-lines-of-code-277031330ee9/)

------
alexchamberlain
The actual computation here shouldn't be that great, right? (especially given
the RPi has a GPU on) Seems like an inconsiderate design to stream images to a
cloud service, rather than process locally and stream the plates themselves.

------
dickfickling
This is great! I've been meaning to build something like this for a long time.
I'm always excited when I notice I've passed the same car on commutes on
different days, or see a car I recognize from home in a different part of
town. Automating that process and having my phone tell me e.g. "You just
passed a car that you once drove past 1,000 miles away from here" is such a
tempting side project. Bit big-brothery, though.

~~~
tgot
I want this tied to a crude speed estimation algorithm, from a stationary
camera.

Even with ALPR retention restrictions, I could trigger a video save and send
the police a video of the idiots doing 50mph through the residential
neighborhood.

~~~
ALittleLight
For speed estimation, I wonder if the simplest thing would be two plate
readers a fixed distance apart. Say they're attached to light poles N meters
distant.

When the reader triggers and takes a picture, it pings your server for a
timestamp. It does the processing and records car X at time T provided by the
timestamp. You then calculate the speed by the distance between the two meters
divided by the time between the two timestamps for X.

Provided that speeding cars are a problem in your neighborhood, I bet you
could find the people responsible for the light poles (which likely have power
associated to them) to let you install the devices, especially if you're
providing the devices and servers.

I don't think you'd necessarily be able to ticket the drivers though, as
you're not law enforcement. Maybe you'd be able to work with local law
enforcement though.

~~~
tgot
I was thinking of using the bounding boxes across frames.

Maybe I could work with a neighbor, but then things need to be tightly time-
synced.

Zero chance I could get light pole access. A city endorsed surveillance
system? No way.

------
darkport
This is great. One of my side project ideas is to build an ANPR based app and
'social network' starting with basic tracking, I.e. you've passed this car 4
times before. I'm new to the ML world so still learning vut Do you think this
is feasible to run in real time using CoreML on iOS?

------
ramon
I was thinking the other day about a DIY solar panel for apartments that could
be part of the decoration like within plant vases or something in that fashion
that would be cool and would look good and not have "space being occupied",
that would be interesting.

------
mitchtbaum
[https://music.youtube.com/watch?v=w1mUAVPaX98&feature=share](https://music.youtube.com/watch?v=w1mUAVPaX98&feature=share)

------
groby_b
"You, too, can now actively participate in the surveillance state"

Yes, I get the technical appeal. I wish we all wondered less if we could, and
more if we should.

~~~
pc86
I'm much less concerned about this being used by a private citizen to keep
license logs along with dash cams, integrate ALPR output into dash cam
footage, etc, than I am about the surveillance _State_ as a whole.

