CV / LPRNet

LPRNet

RKNN recognizes cropped Chinese plates with a PP-OCR fallback, while the Hailo pipeline combines Tiny-YOLOv4 plate detection with LPRNet numeric OCR.

15 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

LPRNet op reComputer RK3576 en RK3588

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.

De service uitvoeren

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

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.

Opstartargumenten

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.

REST API

Endpoint: POST /api/models/lprnet/predict

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.

Voorbeeldantwoord:

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"
  }
}

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.

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.