CV / LPRNet

LPRNet

License-plate recognition on reComputer RK3576, RK3588, and CM5 with Hailo-8 or Hailo-10H.

51 downloads
Precisie
RKNN / Hailo HEF

Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.

Aan de slag

Implementeren
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  --device /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-lprnet:latest \
  python web_service.py --platform rk3576 --model_dir /app/model --camera_id -1 --host 0.0.0.0 --port 8000

REST API

Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.

Curl
curl http://localhost:8080/v1/chat/completions -d '{
  "model": "lprnet-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
import requests

resp = requests.post(
    "http://localhost:8080/v1/chat/completions",
    json={"model": "lprnet-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())

Modeldetails

reComputer RK

Snel aan de slag

1. Docker installeren

Voer de volgende opdrachten op het ontwikkelbord uit om Docker te installeren:

bash
# Docker
curl -fsSL https://get.docker.com -o get-docker.sh
# Aliyun
sudo sh get-docker.sh --mirror Aliyun
# systemd
sudo systemctl enable docker
sudo systemctl start docker

2. Het project uitvoeren (één opdracht, voorbeeld in twee modi)

Deze service is gebaseerd op de LPRNet-module in reComputer-RK-CV. Hij herkent gekleurde Chinese kentekenplaten met LPRNet en kan lichte of internationale platen doorsturen naar de meegeleverde PP-OCR-herkenner.

Modelinformatie

ComponentBestand
Herkenner voor Chinese kentekenplatenmodel/lprnet.rknn
Alternatief voor internationale/lichte platenmodel/ppocr_rec.rknn
PP-OCR-woordenboekmodel/ppocr_keys_v1.txt
UitvoerKentekentekst, herkenner, scores, vak en afwijzingsinformatie

De webinterface bevat een selectiegereedschap met vier punten. De geselecteerde vierhoek wordt vóór herkenning perspectivisch rechtgezet.

Stap A: Images ophalen

bash
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-lprnet:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-lprnet:latest

Stap B: Met één klik uitvoeren

Voor RK3576:

bash
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  --device /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-lprnet:latest \
  python web_service.py --platform rk3576 --model_dir /app/model \
  --camera_id -1 --host 0.0.0.0 --port 8000

Voor RK3588:

bash
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  --device /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-lprnet:latest \
  python web_service.py --platform rk3588 --model_dir /app/model \
  --camera_id -1 --host 0.0.0.0 --port 8000

Open http://<BOARD_IP>:8000 of /docs. Camera-ID’s komen overeen met /dev/videoN. De lokale-videomodus accepteert --video of --video_path en heeft voorrang op de camera.


🔌 API-documentatie

1. Kentekenherkenning (Predict)

Endpoint: POST /api/models/lprnet/predict

Aanvraagparameters (Multipart/Form-Data):

Upload file; beheer herkenning met whole_image, plate_layout, manual_quad, manual_box, min_score, max_plates en min_text_length.

Gebruiksvoorbeelden:

bash
curl -X POST "http://<BOARD_IP>:8000/api/models/lprnet/predict" \
  -F "file=@plate.jpg" -F "whole_image=true" \
  -F "plate_layout=auto"

Belangrijke velden zijn manual_quad, manual_box, plate_layout, min_score, max_plates en min_text_length. plate_layout=auto kiest LPRNet voor gekleurde Chinese platen en PP-OCR voor lichte/internationale platen.

manual_quad is een JSON-array met vier punten in de bronafbeelding. manual_box is [x1,y1,x2,y2] en slaat automatische lokalisatie over. whole_image=true markeert een al uitgesneden plaat. min_score is bruikbaar voor relatieve filtering, maar is geen gekalibreerde kans.

Antwoordformaat (JSON):

json
{
  "success": true,
  "model": "lprnet",
  "result": {
    "plates": [
      {
        "text": "京A12345",
        "recognition_score": 0.91,
        "candidate_score": 1.0,
        "recognizer": "lprnet",
        "box": [0, 0, 94, 24]
      }
    ],
    "count": 1,
    "source_mode": "plate_crop"
  }
}

2. Interface voor systeemconfiguratie (Config)

GET/POST /api/config beheert min_score, max_plates, min_text_length en plate_layout. Andere endpoints zijn GET /api/results/latest, MJPEG, MP4-upload, analyse, voortgang, lijst en download.

3. Opdrachtregelargumenten

ArgumentStandaardBeschrijving
--platformVereistrk3576 of rk3588.
--model_dirmodelBeide herkenners, woordenboek en opwarmingsafbeelding.
--camera_id-1Camera-index; -1 schakelt alleen uploads in.
--video, --video_pathGeenLokale MP4 in een lus; overschrijft de camera.
--host / --port0.0.0.0 / 8000Serviceadres en poort.

Met de vierpuntsk selector kan elke hoek afzonderlijk worden verplaatst. De vierhoek wordt perspectivisch gecorrigeerd en als één plaat herkend.


Realtime videostream (Video Feed)

Haal de nieuwste geannoteerde MJPEG-stream op voor de browserweergave:

  • Endpoint: GET /api/video_feed
  • Voorbeeldgebruik: <img src="http://<BOARD_IP>:8000/api/video_feed">

🛠️ Ontwikkelaarshandleiding (aanbevelingen voor productie)

Bereik en beperkingen

Geen van beide meegeleverde herkenners is een end-to-end kentekendetector. Gebruik voor geüploade scènebeelden het vierpuntsgereedschap of manual_quad. Lokale videoframes worden als al uitgesneden platen behandeld, terwijl cameravakken op lichte OpenCV-heuristieken vertrouwen. Voeg voor productie een specifieke kentekendetector toe. De service geeft heldere plaatkandidaten voorrang boven verkeerslichten en achterlichten, maar deze heuristieken vervangen geen getrainde detector.

Lokaal bouwen

bash
docker build -f docker/rk3576/lprnet.dockerfile \
  -t rk3576-lprnet:local src/rk3576_lprnet

docker build -f docker/rk3588/lprnet.dockerfile \
  -t rk3588-lprnet:local src/rk3588_lprnet

Invoer en uitvoer

RKNN: cropped plate or selected region to recognized text. Hailo: traffic frame to detected plate box and CTC-decoded numeric plate text.