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.
Elige el dispositivo que estás usando. La guía de configuración y la documentación se actualizarán en consecuencia.
Primeros pasos
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 8000API REST
Usa la API REST para ejecutar inferencia. Copia los comandos siguientes.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "lprnet-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "lprnet-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())Detalles del modelo
LPRNet en reComputer RK3576 y RK3588
Este servicio se basa en el módulo LPRNet de reComputer-RK-CV. Reconoce matrículas chinas de color con LPRNet y puede dirigir matrículas claras o internacionales al reconocedor PP-OCR incluido.
Información del modelo
| Componente | Archivo |
|---|---|
| Reconocedor de matrículas chinas | model/lprnet.rknn |
| Alternativa para matrículas internacionales/claras | model/ppocr_rec.rknn |
| Diccionario PP-OCR | model/ppocr_keys_v1.txt |
| Salida | Texto de matrícula, reconocedor, puntuaciones, cuadro e información de rechazo |
La interfaz web ofrece una herramienta de selección de cuatro puntos. El cuadrilátero seleccionado se rectifica en perspectiva antes del reconocimiento.
Ejecutar el servicio
RK3576
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 8000RK3588
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 8000Abra http://<BOARD_IP>:8000 o /docs. Los ID de cámara corresponden a /dev/videoN. El modo de vídeo local acepta --video o --video_path y tiene prioridad sobre la cámara.
Argumentos de inicio
| Argumento | Predeterminado | Descripción |
|---|---|---|
--platform | Obligatorio | rk3576 o rk3588. |
--model_dir | model | Ambos reconocedores, el diccionario y la imagen de calentamiento. |
--camera_id | -1 | Índice de cámara; -1 habilita solo las cargas. |
--video, --video_path | Ninguno | MP4 local en bucle; prevalece sobre la cámara. |
--host / --port | 0.0.0.0 / 8000 | Dirección y puerto del servicio. |
El selector web de cuatro puntos permite mover cada esquina por separado. El cuadrilátero seleccionado se corrige en perspectiva y se reconoce como una sola matrícula.
REST API
Endpoint: POST /api/models/lprnet/predict
curl -X POST "http://<BOARD_IP>:8000/api/models/lprnet/predict" \
-F "file=@plate.jpg" -F "whole_image=true" \
-F "plate_layout=auto"Los campos importantes incluyen manual_quad, manual_box, plate_layout, min_score, max_plates y min_text_length. plate_layout=auto selecciona LPRNet para matrículas chinas de color y PP-OCR para matrículas claras/internacionales.
manual_quad es un array JSON de cuatro puntos de la imagen de origen. manual_box es [x1,y1,x2,y2] y omite la localización automática. whole_image=true indica que la matrícula ya está recortada. min_score sirve para el filtrado relativo, pero no es una probabilidad calibrada.
Ejemplo de respuesta:
{
"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 gestiona min_score, max_plates, min_text_length y plate_layout. Otros endpoints incluyen GET /api/results/latest, MJPEG, carga de MP4, análisis, progreso, lista y descarga.
Alcance y limitaciones
Ninguno de los reconocedores incluidos es un detector de matrículas de extremo a extremo. Para imágenes de escenas subidas, use la herramienta de cuatro puntos o manual_quad. Los fotogramas de vídeo local se tratan como matrículas ya recortadas, mientras que los cuadros de escenas de cámara dependen de heurísticas ligeras de OpenCV. Las implementaciones de producción deben añadir un detector de matrículas específico. El servicio prioriza candidatos de matrícula brillantes frente a semáforos y luces traseras, pero estas heurísticas de procesamiento no sustituyen a un detector entrenado.
Compilar localmente
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_lprnetEntradas y salidas
RKNN: cropped plate or selected region to recognized text. Hailo: traffic frame to detected plate box and CTC-decoded numeric plate text.