0

I am trying to make a deep learning model to detect and read number plates using deep learning techniques like CNN. I would be making a model in tensorflow. But i still don't know what can be the best approach to build such model.

i have checked few models like this https://matthewearl.github.io/2016/05/06/cnn-anpr/

i have also checked some research papers but none show the exact way.

So the steps what i am planning to follow are

  1. Image preprocessing using opencv ( grayscale,transformations etc i dont know much about this part)

  2. Licence plate Detection (probably by sliding window method)

  3. Train using CNN by building a synthetic dataset as in the above link.

My questions

Is there any better way to do this?

Can RNN also be combined after CNN for variable length number?

Should i prefer detecting and recognising individual characters rather the whole plate?

There are many old methods too who prefer image preprocessing and the directly passing to OCR.What will be the best?

PS- i want to make a commercial real time system. So i need good accuracy.

Arpit Khurana
  • 144
  • 2
  • 14
  • If you want a CNN to be able to read real-life license plates under real-life light, movement, angle, and purposeful obfuscation then you'll need a large data set of example images. Synthetic data will only get you so far. Much like Kathy Lee suggests, building a pipeline of constrained steps is probably your best bet, but your system is only as strong as the weakest link. If your licence plate detection is only 97%, then 97% is your upper limit of accuracy. If your CNN has a 99% accuracy per character and there are 8 characters, then your upper accuracy is .99^8 = 92%. – Anton Codes Jun 19 '17 at 03:51
  • yea i get that. I need a way to ensure that i am only reading from number plate and ignore other texts in the image like signboards or something – Arpit Khurana Jun 21 '17 at 04:30

1 Answers1

0

Firstly, I don't think combining RNN and CNN can achieve real time system. And I personally prefer detecting individual characters if I want real time system because there will not more than 10 characters on license plate. When detecting plates with variable length, detecting individual characters can be more feasible.

Before I learned deep learning, I also have tried to use OCR to detect plate. In my case, OCR is fast but the accuracy is limited especially when the plate is not clear enough. Even image processing cannot rescue some unclear case.......

So if I were you I will try as follows:

  1. Simple image preprocessing on the whole image
  2. Licence plate Detection (probably by sliding window method)
  3. Image processing (filters and geometric transformations) on the extracted plate part to make it more clear. Separate characters.
  4. Deploy CNN to each character. (Maybe I will try some short CNNs because of real time, such as LeNet used in MNIST handwritten digit data ) (Multithreading might be needed)

Hope my response can help.

debug_all_the_time
  • 564
  • 1
  • 5
  • 18
  • 1
    Well...how to "separate" characters.And here in my country number format isn't static. It can be of many forms so i don't think that sliding window method can work for detection. I need to somehow find white and yellow plates(areas) i guess.But that will stop working in lower light. – Arpit Khurana Jun 21 '17 at 04:25
  • Some image processing techniques are needed for both character separation and plate detection. You can search for those by yourself. I believe a lot of paper relate to them. One common method you can use for character separation is Connected-Component Labeling. For plate detection, also do some pre-processing on image firstly, such as filters, shape dection, etc. – debug_all_the_time Jun 21 '17 at 19:55