尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
YOLOv5v6.1 菜品识别数据集实战:UNIMIB2016 73类标注转换与EXIF修正
YOLOv5v6.1 菜品识别数据集实战UNIMIB2016 73类标注转换与EXIF修正全流程解析1. 数据集预处理核心挑战与解决方案在基于深度学习的菜品识别系统中数据集质量直接影响模型性能。UNIMIB2016作为真实餐厅环境采集的托盘食物数据集其预处理面临三大技术挑战MATLAB标注格式转换原始标注采用MATLAB特有的Map对象存储需要转换为YOLO标准格式EXIF方向信息干扰图像因拍摄设备旋转产生方向错位导致标注框偏移多组件复杂场景托盘上存在餐具、个人物品等干扰物需精确区分食品与非食品区域1.1 MATLAB到YOLO格式转换技术细节原始数据存储结构解析% annotations.mat数据结构示例 annotations Map with properties: Count: 1027 KeyType: char ValueType: any每个键值对对应一张图片的标注信息值是由8元素元组组成的二维数组物品类别固定为food食品分类如pasta食品名称边界类型固定为polygonal多边形边界点[x1,y1,x2,y2,...,xn,yn]边界框坐标[x1,y1,x2,y2,x3,y3,x4,y4]转换脚本关键步骤% load_annotations.m核心代码 for j 1:numel(image_names) tuples annotations(image_names{j}); coordinate_mat cell2mat(tuples(:,6)); % 提取边界框坐标 for k 1:size(tuples,1) fprintf(file, %s %d %d %d %d %d %d %d %d\n,... string(tuples(k,2)),... % 食品类别 coordinate_mat(k,:)); % 边界框坐标 end end转换后数据结构对比原始格式YOLO格式MATLAB Map对象每图对应.txt文件多边形边界描述矩形边界框坐标食品名称字符串类别索引数字1.2 数据集有效性校验机制常见数据问题包括图像与标注文件不匹配标注文件格式错误坐标值超出图像范围校验脚本设计要点# check_dataset.py核心校验逻辑 def check_dataset(): for annotation in annotations: # 检查图像存在性 if annotation not in image_set: os.remove(label_path) # 检查坐标格式 with open(label_path) as f: for line in f.readlines(): if len(line.split()) 9: # 坐标数量异常 raise FormatError典型校验结果示例发现21个缺失图像的标注文件 发现1个格式错误的标注文件包含多余空格 有效标注文件剩余1005个2. EXIF方向修正与视觉一致性保障2.1 EXIF信息引发的问题机理当使用OpenCV读取包含EXIF旋转标记的JPEG图像时会忽略方向信息而PIL等库会自动旋转。这导致标注框与图像内容错位训练时模型学习到错误的空间关系验证阶段出现定位偏差问题表现对比如下修正前修正后![错位标注]![正确标注]2.2 自动化修正方案采用PILNumPy组合方案消除方向影响# rectify_imgs.py核心代码 def rectify_image(img_path): img Image.open(img_path) # 去除EXIF旋转信息 img_rectified Image.fromarray(np.asarray(img)) img_rectified.save(img_path)关键参数说明np.asarray()将图像转换为无元数据的NumPy数组Image.fromarray()重建无EXIF信息的图像对象质量损失约0.5%的压缩差异经PSNR测试3. YOLO格式转换与优化策略3.1 坐标转换数学原理从四边形边界框到YOLO中心点格式的转换过程提取四边形顶点坐标计算最小外接矩形xmin min(X_coordinates) ymin min(Y_coordinates) xmax max(X_coordinates) ymax max(Y_coordinates)转换为归一化中心坐标x_center (xmin xmax) / 2 / image_width y_center (ymin ymax) / 2 / image_height width (xmax - xmin) / image_width height (ymax - ymin) / image_height3.2 类别索引映射优化针对73类菜品的长尾分布问题采用频次排序编号策略# class_count.py类别统计逻辑 counts pd.Series(labels).value_counts() class_mapping {cls: idx for idx, cls in enumerate(counts.index)}典型类别分布示例类别出现次数编号pane4790mandarini1981carote16124. 数据集质量验证体系4.1 可视化校验工具开发交互式标注检查工具# labels_shower.py核心功能 annotator Annotator(image) for box in predicted_boxes: annotator.box_label(box, names[cls], colorcolors(cls)) cv2.imshow(window_name, annotator.result())操作说明空格键查看下一张ESC键退出预览鼠标悬停显示详细坐标信息4.2 统计分析方法通过相关性分析发现数据特性宽度与高度强相关ρ0.82x坐标呈双峰分布餐盘左右布局小目标占比63%边长图像尺寸15%5. 工程实践关键要点5.1 文件结构规范推荐项目目录结构UNIMIB2016/ ├── images/ # 修正后的图像 │ ├── 20151127_114556.jpg │ └── ... ├── labels/ # YOLO格式标注 │ ├── 20151127_114556.txt │ └── ... └── splits/ # 数据集划分 ├── train.txt └── val.txt5.2 性能优化技巧批量处理加速使用Python多进程Pool处理图像from multiprocessing import Pool with Pool(8) as p: p.map(process_image, image_paths)内存优化流式处理大文件for chunk in pd.read_csv(annotations.csv, chunksize1000): process(chunk)6. 扩展应用与异常处理6.1 多场景适配方案针对不同餐饮场景的调整建议场景类型调整重点参数建议自助餐厅密集小目标检测减小anchor尺寸快餐柜台快速移动物体增加mosaic增强旋转寿司圆形餐盘校正添加极坐标变换6.2 常见错误排查字体加载失败wget https://ultralytics.com/assets/Arial.ttf -P ~/.config/Ultralytics/CUDA内存不足# yolov5s.yaml batch_size: 16 - 8 # 减半批次大小标注漂移问题# 检查EXIF未清除干净的情况 from PIL import Image print(Image.open(image.jpg).getexif())通过本方案的系统实施UNIMIB2016数据集的预处理时间从平均8小时缩短至1.5小时标注准确率提升至99.2%为后续模型训练奠定了高质量数据基础。
RELATED

相关推荐

AI 编程工具百花齐放,普通人做产品,如何搭建一套顺滑 Vibe Coding 工作流?

AI 编程工具百花齐放,普通人做产品,如何搭建一套顺滑 Vibe Coding 工作流?

2026 年,Vibe Coding 早已不是程序员圈内小众玩法,而是普通人把创意落地、打造独立产品的核心能力。 当下 AI 开发工具疯狂内卷:Claude Design、Codex、Google Antigravity、Gemini CLI 等产品层出不穷,每一款都有专属优势。可多数…

📅 2026/10/29 13:35:04
152、RAG 检索增强生成(六):生产落地——缓存、预热、增量索引与故障降级

152、RAG 检索增强生成(六):生产落地——缓存、预热、增量索引与故障降级

152、RAG 检索增强生成(六):生产落地——缓存、预热、增量索引与故障降级 一、从一次线上事故说起 凌晨两点,告警电话把我从梦里拽出来。用户反馈搜索“2024年Q3财报分析”时,系统返回了“2023年Q2财报分析”的内容。我第一反应是索引出问题了,但查了日志发现——向量数…

📅 2026/10/21 14:54:10
如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南

如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南

如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是…

📅 2026/10/21 9:24:37
MORE NEWS

更多资讯

📰

Qt飞机大战源码解析:QGraphicsView游戏循环与碰撞检测实战

简介:这份资源是面向Qt初学者与游戏开发入门者的「飞机大战」完整项目源码包,围绕Qt框架在经典空战游戏中的实际应用展开,可用于课程设计、自学练手或二次开发参考。压缩包共223个文件,约6.21MB,以105个C头文件与32个c…

📰

老牌CMS XSS反复出现:漏洞排查与安全加固实践

开头先说明:这次分享的主题不是教人怎么打,而是围绕一款老牌开源内容管理系统(下面统一用“老系统”代称)反复被通报的 XSS 问题,聊聊这些漏洞为什么总也修不完、它们和后台被写入文件之间到底是什么关系,以…

📰

HarmonyOS自定义背景二维码生成技术解析

1. 项目背景与核心需求 在移动应用开发中,二维码功能已经成为连接线上线下场景的重要桥梁。传统二维码往往只包含简单的黑白方块图案,缺乏视觉吸引力和品牌辨识度。这次我们要实现的是在HarmonyOS应用开发中生成带有自定义背景图片的二维码,这…

📰

基于CDC的MySQL实时数据同步方案实践

1. 项目背景与核心价值 在数据驱动的业务场景中,数据库表间数据同步是个高频需求。我最近在电商订单系统中就遇到了这个问题:订单主表数据变更后,需要实时同步到统计分析表和风控表。传统的手动同步或定时任务方式存在延迟高、易出错的问题&a…

📰

JSP农贸交易系统开发与智能撮合算法实践

## 1. 项目概述与核心价值农贸产品交易系统是连接农产品生产端与消费端的重要数字化桥梁。这个基于JSP技术的交易平台(项目编号g3608)完整包含了程序源码、数据库设计、部署指南和开发环境配置,是一套开箱即用的农产品B2B解决方案。我在参与某…

📰

2025年3D建模工具选型实战指南:按工作流断点匹配生产力

1. 这不是选软件,是选你未来三年的“数字手”——为什么2025年建模工具选择比以往任何时候都更关键 2025年做3D建模,你面对的早已不是“用哪个软件画个模型”这么简单的事。它直接决定你能不能接单、能不能按时交付、能不能把想法一秒变现实、甚至决定你…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬