当前位置: 首页 > ops >正文

使用FastAPI构建车牌检测识别服务

概述

FastAPI

FastAPI是一个现代的高性能 Web 框架,用于使用 Python 构建 API。它可以让开发者轻松快速高效地构建 API,同时提供 API 的自动验证、序列化和文档记录等功能,是构建 Web 服务和微服务的热门选择。

YOLO

YOLO(YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的约瑟夫-雷德蒙(Joseph Redmon)和阿里-法哈迪(Ali Farhadi)开发。YOLO 于 2015 年推出,因其高速度和高精确度而广受欢迎。多年来,从传统的计算机视觉技术到先进的深度学习模型,物体检测技术都有了长足的发展。YOLO 模型系列一直走在这一发展的前沿,不断突破实时物体检测的极限。YOLO 的独特方法将物体检测视为一个单一的回归问题,在单次评估中直接从完整图像中预测边界框和类概率。这种革命性的方法使YOLO 模型在保持高精度的同时,速度明显快于两阶段检测方法。YOLO11融入了计算机视觉研究的最新进展,为实际应用提供了更好的速度-精度权衡。

使用YOLO11实现车牌检测

得益于YOLO模型的速度-精度权衡,即使是使用nano模型,也能在很短时间内训练出可用于一般场景使用的车牌检测模型。

这里我们从CCPD2019数据集选取10000副图片子集和CCPD2020全部图片作为数据集,根据其标注方法生成训练YOLO模型所需要的数据格式。具体数据集制作方法不在此展开。

检测训练

import datetime
from ultralytics import YOLOdef yolo11_detect_train():model = YOLO('yolo11n.yaml').load('yolo11n.pt')model.info()data='data.yaml'     project= 'runs_normal'start_time = datetime.datetime.now()print(f"开始训练 {start_time.strftime('%Y-%m-%d %H:%M:%S')}")#CCPD图片imgsz=640, 设置batch 64(占用9GB 显存)model.train(data=data, epochs=100, imgsz=640, batch=64, workers=8, project=project,fliplr = 0.0,)end_time = datetime.datetime.now()print(f"训练结束 {end_time.strftime('%Y-%m-%d %H:%M:%S')}")if __name__ == '__main__':yolo11_detect_train()

车牌识别

常用的车牌识别神经网络有多种,包括CRNN、Intel LPRNet、飞桨PaddleOCR等等,可以选择一种进行训练,均有不错的识别效果。

本项目选择使用CRNN,在CCPD数据集和自行收集制作的车牌数据集进行了训练,能够比较准确的识别常见的车牌,在大部分场景下具有良好的效果。

车牌检测和识别程序

本项目主要构建了class PlateRecognizer进行车牌检测、车牌识别、图像标注等处理。

class PlateRecognizer:def __init__(self):#初始化yolo检测模型和车牌识别模型self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")self.detect_model = YOLO('weights/yolo11n_plate.pt')  # 初始化检测模型self.rec_model = init_model(self.device, 'weights/model_color.pth', is_color=True)  # 初始化识别模型self.result_list = []self.imgsz = 1280self.output_path = 'output'self.save_image=True#运行检测推理和车牌识别def det_rec_plate(self, img):self.result_list=[]img_ori = copy.deepcopy(img)#运行检测推理results = self.detect_model.predict(source = img,save = False,
http://www.xdnf.cn/news/10556.html

相关文章:

  • 「Python教案」字符串格式化操作
  • hooks组件-useState
  • 散列表(哈希表)
  • 函数调用的机器级实现(二):栈帧的访问与切换机制
  • 【笔记】为 Python 项目安装图像处理与科学计算依赖(MINGW64 环境)
  • 用wireshark抓包分析学习USB协议
  • 浅写弱口令与命令爆破
  • Cursor 编辑器介绍:专为程序员打造的 AI 编程 IDE
  • Python项目结构
  • 录屏不再难,从功能到体验深度测评
  • MPTCP 聚合吞吐
  • LRU和LFU缓存策略
  • ESP32系列AT固件快速开发——Wi-Fi MQTT
  • 【笔记】Windows系统部署suna基于 MSYS2的Poetry 虚拟环境backedn后端包编译失败处理
  • 汽车安全体系:FuSa、SOTIF、Cybersecurity 从理论到实战
  • 绿盟 IPS 设备分析操作手册
  • Nuxt3部署
  • TS 星际通信指南:从 TCP 到 UDP 的宇宙漫游
  • (Python)列表的操作(增删改查、排序)
  • 2025年ESWA SCI1区TOP,改进成吉思汗鲨鱼算法MGKSO+肝癌疾病预测,深度解析+性能实测
  • 网络攻防技术四:网络侦察技术
  • 重温经典算法——快速排序
  • 探秘集成学习:从基础概念到实战应用
  • 微软PowerBI考试 PL-300学习指南
  • DeepSeek 赋能车路协同:智能交通的破局与重构
  • 模块二:C++核心能力进阶(5篇) 篇一:《STL源码剖析:vector扩容策略与迭代器失效》
  • 核心机制:滑动窗口
  • 相机--相机标定
  • 芝麻酱工作创新点分享1——SpringBoot下使用mongo+Redis做向量搜索
  • PyTorch——卷积操作(2)