Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Multi Model Server | 921 | 2 | 4 | 24 days ago | 5 | May 16, 2019 | 92 | apache-2.0 | Java | |
Multi Model Server is a tool for serving neural net models for inference | ||||||||||
Server_face_recognition | 32 | a year ago | gpl-3.0 | Java | ||||||
Face recognition based on neural network and machine learning | ||||||||||
Neural Style Server | 30 | 7 years ago | 2 | HTML | ||||||
A web server frontend for https://github.com/jcjohnson/neural-style | ||||||||||
Re Verb | 21 | 2 years ago | 8 | mit | Python | |||||
speaker diarization system using an LSTM | ||||||||||
Re Verb | 16 | 4 years ago | 3 | mit | Python | |||||
speaker diarization system using an LSTM | ||||||||||
License_plate_recognition | 11 | a year ago | 8 | June 17, 2021 | apache-2.0 | Go | ||||
detect license plate and read text on it | ||||||||||
Zevision | 9 | 3 years ago | 9 | apache-2.0 | Python | |||||
ZeVision - Computer vision API based on deep learning | ||||||||||
Neuralm Server | 8 | a year ago | 14 | mit | C# | |||||
Neuralm Server is the backend of the neuralm project. It creates and mutates the neural networks and sends them to the client | ||||||||||
Facial Login Web | 6 | 5 years ago | 1 | mit | JavaScript | |||||
Web based facial Authentication system with flask server | ||||||||||
Pick And Sort Robot | 4 | 3 years ago | mit | Python | ||||||
The robot can position it self within a three dimensional coordinate system. Locating and sorting of objects by the use of computer vision and Convolutional Neural Network. Fast and accurate, and will work in robust environments. |
This is a gRPC server which accepts image and can make license plate recognition (using YOLOv3 or YOLOv4 neural network).
Server tries to find license plate at first. Then it does OCR (if it's possible).
Neural networks were trained on dataset of russian license plates. But you can train it on another dataset - read about process here AlexeyAB/darknet
Darknet architecture for finding license plates - Yolo V3
Darknet architecture for doing OCR stuff - Yolo V4
No OpenCV installation is needed!
gRPC server accepts this data struct accordion to ODaM specification:
message CamInfo{
string cam_id = 1; // id of camera (just to identify client app)
int64 timestamp = 2; // timestamp of vehicle fixation (on client app)
bytes image = 3; // bytes of full image in PNG-format
Detection detection = 4; // BBox of detected vehicle (region of interest where License Plate Recognition is needed)
VirtualLineInfo virtual_line = 5; // Line which detected object has been crossed (not necessary field, but helpfull for real-time detection on road traffic)
}
message Detection{
int32 x_left = 1;
int32 y_top = 2;
int32 height = 3;
int32 width = 4;
}
message VirtualLineInfo{
int32 id = 1;
int32 left_x = 2;
int32 left_y = 3;
int32 right_x = 4;
int32 right_y = 5;
}
Please follow instructions from go-darknet. There you will know how to install AlexeyAB's darknet and Go-binding for it.
Notice: we are using Go-modules
go get https://github.com/LdDl/license_plate_recognition
Notice: please read source code of *.sh script before downloading. This script MAY NOT fit yours needs.
cd cmd/
chmod +x download_data_RU.sh
./download_data_RU.sh
Do not forget (if needed) to implement AfterFunc
Example is below:
....
rs := &RecognitionServer{
....
AfterFunction: doSomeStuff,
}
....
func doSomeStuff(data *PlateInfo, fileContents []byte) error {
/*
If you want, you can implement this function by yourself (and you can wrap this function also)
Default behaviour: do nothing.
*/
return nil
}
....
cd cmd/server
go build -o recognition_server main.go
./recognition_server --cfg conf.toml
Note: Please see conf.toml description for correct usageNotice: server should be started
Navigate to folder with server application source code
cd cmd/client
Build source code of client application to executable
go build -o client_app main.go
Run client application
./client_app --host=localhost --port=50051 --file=sample.jpg -x 0 -y 0 --width=4032 --height=3024
Check, if server can handle error (like negative height parameter):
./client_app --host=localhost --port=50051 --file=sample.jpg -x 0 -y 0 --width=42 --height=-24
On server's side there will be output something like this:
2020/06/25 15:31:57
License plate #0:
Text: M288HO199
Deviation (for detected symbols): 1.808632
Rectangle's borders: (295,1057)-(608,1204)
License plate #1:
Text: A100CX777
Deviation (for detected symbols): 2.295539
Rectangle's borders: (2049,1384)-(2582,1618)
Elapsed to find plate and read symbols: 372.108605ms
On server's side the directory './detected' will appear also. Detected license plates will be stored there.