多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

目标检测违停检测 道路车辆检测与分析 可检测识别 违停车辆数据集 车辆检测

目标检测违停检测 道路车辆检测与分析 可检测识别 违停车辆数据集 车辆检测 深度学习目标检测算法及框架使用 YOLOv5 模型进行目标检测违停检测道路车辆检测与分析 可检测识别违停车辆数据集及车辆检测以下文字及代码仅供参考。文章目录深度学习目标检测算法及框架使用 YOLOv5 模型进行目标检测违停检测道路车辆检测与分析 可检测识别违停车辆数据集及车辆检测1. 环境搭建2. 数据准备3. 模型训练配置超参数开始训练4. 模型推理单张图片推理批量推理5. 性能评估mAP 和其他指标6. 构建 GUI 应用程序可选道路汽车车辆违停数据集皮卡、面包车、小轿车、suv、公共汽车、卡车数据数据集描述划分训练集5000验证集799已标注yolo格式、voc格式可直接训练可用于道路车辆检测、机动车违停标签类别及标签个数pickuptruck424van903car5778suv1588bus615truck1371汽车数据集我们将使用YOLOv5模型进行目标检测。YOLOv5 是一个高效的目标检测模型适用于道路车辆检测、机动车违停等场景。1. 环境搭建首先需要设置好环境并安装必要的依赖项。# 创建虚拟环境可选conda create-nvehicle_detectionpython3.8conda activate vehicle_detection# 安装 PyTorch 和 torchvisionpipinstalltorch torchvision# 克隆 YOLOv5 仓库gitclone https://github.com/ultralytics/yolov5cdyolov5# 安装 YOLOv5 的依赖pipinstall-rrequirements.txt2. 数据准备假设你的数据集已经按照 YOLO 格式标注并且划分为了训练集和验证集。文件结构如下dataset/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/创建一个data.yaml文件用于描述数据集路径和类别信息# data.yamltrain:dataset/images/trainval:dataset/images/valnc:6# 类别数量皮卡、面包车、小轿车、suv、公共汽车、卡车names:[pickuptruck,van,car,suv,bus,truck]# 类别名称3. 模型训练配置超参数编辑yolov5/data/hyps/hyp.scratch.yaml文件调整超参数以适应你的数据集。例如lr0:0.01# 初始学习率momentum:0.937weight_decay:0.0005开始训练运行以下命令开始训练python train.py--img640--batch16--epochs100--datadata.yaml--cfgmodels/yolov5s.yaml--weightsyolov5s.pt--namevehicle_detection--img 640: 输入图像大小。--batch 16: 批量大小。--epochs 100: 训练轮数。--data data.yaml: 数据集配置文件。--cfg models/yolov5s.yaml: 使用 YOLOv5 的小型模型适合小数据集。--weights yolov5s.pt: 加载预训练权重。--name vehicle_detection: 训练结果保存目录。4. 模型推理单张图片推理仅供参考。训练完成后可以使用以下命令对单张图片进行推理python detect.py--weightsruns/train/vehicle_detection/weights/best.pt--img640--conf0.25--sourcedataset/images/val/image_001.jpg--weights: 使用训练好的模型权重。--img 640: 输入图像大小。--conf 0.25: 置信度阈值。--source: 输入图像路径。推理结果会保存在runs/detect/exp/文件夹中。批量推理如果需要对多张图片或视频进行批量推理可以将--source参数设置为文件夹路径或视频路径# 对文件夹中的所有图片进行推理python detect.py--weightsruns/train/vehicle_detection/weights/best.pt--img640--conf0.25--sourcedataset/images/val/# 对视频进行推理python detect.py--weightsruns/train/vehicle_detection/weights/best.pt--img640--conf0.25--sourcevideo.mp45. 性能评估mAP 和其他指标训练完成后YOLOv5 会自动生成性能评估报告包括 mAPmean Average Precision、Precision、Recall 等指标。这些信息会保存在runs/train/vehicle_detection/results.csv文件中。你也可以手动运行验证脚本python val.py--datadata.yaml--weightsruns/train/vehicle_detection/weights/best.pt--img6406. 构建 GUI 应用程序可选假设你这位同学如果你想构建一个简单的图形用户界面来加载图像并运行检测可以使用 PyQt5。这里提供了一个简单的例子仅供参考。importsysfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QLabel,QPushButton,QVBoxLayout,QWidget,QFileDialogfromPyQt5.QtGuiimportQPixmapfromPILimportImage,ImageQtimporttorchfrompathlibimportPathclassDetectionApp(QMainWindow):def__init__(self):super().__init__()self.initUI()self.modeltorch.hub.load(ultralytics/yolov5,custom,pathruns/train/vehicle_detection/weights/best.pt)definitUI(self):self.setWindowTitle(车辆检测系统)self.setGeometry(100,100,800,600)layoutQVBoxLayout()self.image_labelQLabel(self)self.image_label.setText(请选择一张图片进行检测)self.image_label.setAlignment(Qt.AlignCenter)layout.addWidget(self.image_label)self.load_buttonQPushButton(加载图像,self)self.load_button.clicked.connect(self.load_image)layout.addWidget(self.load_button)self.detect_buttonQPushButton(检测车辆,self)self.detect_button.clicked.connect(self.detect_vehicle)layout.addWidget(self.detect_button)containerQWidget()container.setLayout(layout)self.setCentralWidget(container)defload_image(self):optionsQFileDialog.Options()file_name,_QFileDialog.getOpenFileName(self,选择图像文件,,Images (*.png *.jpg *.jpeg),optionsoptions)iffile_name:self.image_pathfile_name pixmapQPixmap(file_name)self.image_label.setPixmap(pixmap.scaled(640,640))defdetect_vehicle(self):ifhasattr(self,image_path):resultsself.model(self.image_path)img_with_boxesresults.render()[0]# 将结果转换为 QImage 并显示height,width,channelimg_with_boxes.shape bytes_per_line3*width q_imgImageQt.Image.fromarray(img_with_boxes).convert(RGB).rgbSwapped()self.image_label.setPixmap(QPixmap.fromImage(q_img))else:self.image_label.setText(请先加载一张图片)if__name____main__:appQApplication(sys.argv)windowDetectionApp()window.show()sys.exit(app.exec_())仅供参考同学们
返回列表