>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Python

Reconhecimento de Placas de Licenciamento a Trs Mil Frames por Segundo

Ao construir um pipeline de controle automático para um estacionamento ou rodovia, o reconhecimento de placas de licenciamento rapidamente atinge uma barreira de performance. Abordagens padrão com Tesseract ou EasyOCR pesado consomem dezenas de milissegundos por retângulo recortado de placa de licenciamento. Com múltiplas câmeras e carros fluindo, o servidor começa a engasgar ou requer uma fazenda de GPUs cara.

Intro

Recentemente encontrei o repositório fast-plate-ocr do desenvolvedor ankandrew. O projeto resolve exatamente uma tarefa específica e estreita, mas faz isso de forma rápida. Ele recebe uma placa de licenciamento já recortada por um detector e lê caracteres em frações de milissegundo.

Por que uma Biblioteca Separada para OCR de Placas de Licenciamento

Em visão computacional para ALPR (Automatic License Plate Recognition), o pipeline geralmente é dividido em duas etapas:

  1. O detector encontra o carro e recorta a placa de licenciamento (por exemplo, via YOLO).
  2. O modelo de reconhecimento de texto lê o número real da placa.

OCRs de texto universais são treinados em livros, recibos, placas e documentos. Por isso, as arquiteturas terminam sendo volumosas, e frequentemente cometem erros em placas com fontes não padronizadas ou ângulos complexos.

A biblioteca fast- usa modelos compactos baseados na arquitetura CCT (Compact Convolutional Transformer). Essas redes são especificamente projetadas para reconhecer imagens estruturadas pequenas sem parâmetros redundantes. Graças à arquitetura leve e execução via ONNX Runtime, a latência em uma única imagem na RTX 3090 varia de 0,32 a 0,67 ms. Traduzindo para throughput, isso é 14.000 a 3.000 placas por segundo em uma única placa.

O Que Está Por Trás e Como Funciona

O repositório inclui um modelo zoo pronto para uso, scripts de treinamento e ferramentas de exportação.

Modelos CCT Prontos

O autor preparou várias versões de modelos:

  • cct-xs-v1-global-model e cct-xs-v2-global-model — as menores redes com latência de 0,3-0,4 ms.
  • cct-s-v1-global-model e cct-s-v2-global-model — variantes ligeiramente mais profundas onde a prioridade é dada à precisão em ângulos de visualização complexos.

As segundas versões (v2) adicionam um cabeçote separado para classificar a região ou país da placa de licenciamento. Se a câmera captura tráfego internacional, o modelo retorna imediatamente tanto o texto quanto o país de origem da placa.

Seleção Flexível de Runtime

Um ponto problemático comum ao implantar redes neurais é ficar preso a frameworks pesados. Aqui, a inferência é separada do treinamento. A biblioteca em si é instalada sem dependências pesadas, e o backend ONNX Runtime é selecionado para o hardware alvo via pip extras:

# Для обычного процессора
pip install fast-plate-ocr[onnx]

# Для видеокарт NVIDIA
pip install fast-plate-ocr[onnx-gpu]

# Оптимизация под процессоры Intel
pip install fast-plate-ocr[onnx-openvino]

# Поддержка DirectML для Windows
pip install fast-plate-ocr[onnx-directml]

# Чипсеты Qualcomm
pip install fast-plate-ocr[onnx-qnn]

Isso é conveniente se o projeto precisar ser construído em um container Docker leve ou executado em um microcomputador em um portão.

Início Rápido em Código

Trabalhar com a biblioteca se resume a algumas linhas. Primeiro, inicialize o reconhecedor passando o nome do modelo desejado do hub, depois forneça o caminho para uma imagem ou um array NumPy.

from fast_plate_ocr import LicensePlateRecognizer

# Загружаем готовую предобученную модель
recognizer = LicensePlateRecognizer('cct-s-v2-global-model')

# Распознаем текст на вырезанной плашке
result = recognizer.run('test_plate.png')
print(result)

Se o modelo suporta detecção de região, você pode solicitar uma pontuação de confiança:

from fast_plate_ocr import LicensePlateRecognizer

recognizer = LicensePlateRecognizer('cct-s-v2-global-model')
prediction = recognizer.run('test_plate.png', return_confidence=True)[0]

print(f"Номер: {prediction.text}")
print(f"Регион: {prediction.region}")
print(f"Уверенность в регионе: {prediction.region_prob:.2f}")

Também há um método integrado para benchmarking de performance na sua máquina:

recognizer.benchmark()

Treinamento e Fine-Tuning para Suas Próprias Placas

Embora modelos globais tratem formatos padrão razoavelmente bem, projetos do mundo real frequentemente encontram placas de licenciamento específicas: militares, diplomáticas, de duas linhas ou formatos regionais de um país particular.

O treinamento usa Keras 3, então você pode treinar a rede com qualquer backend familiar — PyTorch, TensorFlow ou JAX. Para instalar as dependências de treinamento, basta executar:

pip install fast-plate-ocr[train]

O repositório contém um Jupyter Notebook pronto (examples/tutorial_fine_tune_plate_model.ipynb) que percorre o processo passo a passo:

  1. Preparação de um dataset de crops rotulados e um dicionário de caracteres permitidos.
  2. Configuração de augmentations via arquivo YAML.
  3. Fine-tuning do modelo nos seus próprios dados.
  4. Exportação dos pesos para ONNX, TFLite ou CoreML.

A capacidade de exportar uma rede treinada para TFLite ou CoreML remove a dor de cabeça se você precisar embedar o reconhecimento diretamente em um aplicativo móvel para inspetores ou guardas de estacionamento.

O Que Ter em Mente

O projeto é focado apenas na etapa de OCR. Ele não busca um carro no quadro e não corrige a perspectiva da placa se ela foi filmada em um ângulo acentuado.

Se você alimentar um quadro inteiro com a rua inteira, o modelo produzirá垃圾. Um detector (YOLOv8, RT-DETR ou qualquer outro) deve sempre preceder fast-plate-ocr para encontrar as coordenadas da placa e recortar a imagem. Para melhores resultados com uma câmera muito inclinada, adicione transformação de perspectiva antes de alimentar o OCR.

Para Quem Este Projeto É

A biblioteca vai agradar àqueles que constroem sistemas reais de análise de vídeo e lutam por latência em milissegundos:

  • Sistemas de gerenciamento de estacionamento e barreiras automáticas baseados em mini-PCs.
  • Complexos de controle de peso e dimensão e monitoramento de tráfego.
  • Aplicativos móveis para fiscalização de estacionamento pago.

O projeto é open-source, o código é claro e as dependências são mínimas. Se você está cansado de lutar contra a lentidão de bibliotecas OCR universais em tarefas de transporte, o fast-

Projetos relacionados