基于YOLOv8的生产日期识别:从目标检测到OCR的完整工业视觉实践

发布时间:2026/9/1 15:29:52
基于YOLOv8的生产日期识别:从目标检测到OCR的完整工业视觉实践 简介本资源是一套基于YOLOv8实现的食品包装生产日期识别完整项目面向计算机、人工智能、自动化等专业的在校学生及初学者解决工业质检中关键信息自动提取的实际问题适用于毕业设计、课程设计、大作业及项目立项演示。压缩包共8个文件含3个核心Python脚本训练、检测、可视化界面、3个模型权重文件含预训练与最佳训练结果、2个说明文档README与项目备注总大小15.91MB结构清晰、模块解耦开箱即用。已有65人学习下载项目经实测可稳定运行输出包括验证集预测结果、标签分布图、混淆矩阵、F1分数与PR曲线等全套评估可视化图表并配套详细部署教程与运行指引。所有代码均通过功能验证无需调参即可直接运行支持快速二次开发与场景迁移是兼具工程完整性与教学友好性的高质量CV实践资源。1. 项目概述从“找日期”到“读懂日期”的工业视觉实践在食品、药品、日化等快消品行业中生产日期是产品生命周期的起点也是质量追溯和安全管理的关键信息。传统的人工目检方式不仅效率低下、成本高昂更难以应对高速生产线和复杂包装背景的挑战。因此基于机器视觉的自动化生产日期识别早已从一个前沿课题变成了一个实实在在的工业刚需。今天要分享的这个项目正是围绕这个核心需求展开的《基于YOLOv8的食品包装生产日期识别》。这个项目不是一个简单的算法演示而是一个从数据、模型、训练到最终部署和应用的完整解决方案包。它包含了可直接运行的源码、一个对用户友好的可视化操作界面、一个精心整理和标注的完整数据集以及一份详尽的部署教程。其最大的特点是“开箱即用”你不需要从零开始搜集数据、标注图片、搭建环境项目已经将这些最繁琐、最容易劝退新手的步骤打包好了。简单部署后你就能看到一个完整的识别系统跑起来这对于计算机视觉的初学者、需要完成课程设计或毕业设计的学生来说价值巨大——你节省下来的时间可以更深入地理解模型背后的原理、调整参数优化效果或者将其集成到更复杂的系统中去。为什么选择YOLOv8在目标检测领域YOLO系列以其速度和精度的良好平衡而闻名。YOLOv8作为Ultralytics公司推出的最新版本截至我撰写时的主流稳定版本在保持YOLO系列实时性优势的同时进一步优化了网络结构和训练策略对小目标、密集目标的检测能力有所提升并且提供了极其清晰和易用的Python接口。对于“生产日期”这种通常以印刷体数字和字符形式出现、尺寸较小、且可能因包装曲面、反光、污损而变得模糊的目标YOLOv8是一个经过市场验证的可靠选择。接下来我将带你深入这个项目的每一个环节不仅告诉你“怎么做”更会解释“为什么这么做”并分享在实际部署和调优中可能遇到的“坑”以及我的应对经验。我们的目标是让你拿到这个资源包后不仅能运行起来更能理解其每一行代码、每一个配置项的意义最终有能力将其改造、适配到你自己的具体场景中。2. 核心组件拆解你的工具箱里都有什么当你解压项目压缩包后面对一堆文件夹和文件可能会有些茫然。别急我们先来一次“物资清点”了解每个部分的作用这样在后续部署和探索时才能心中有数。2.1 数据集模型的“教科书”dataset/文件夹是这个项目的基石。一个高质量、标注规范的数据集直接决定了模型性能的上限。通常这个数据集会包含以下结构dataset/ ├── images/ │ ├── train/ # 训练集图片 │ └── val/ # 验证集图片 ├── labels/ │ ├── train/ # 训练集标签YOLO格式 │ └── val/ # 验证集标签 ├── data.yaml # 数据集配置文件1. 数据内容分析这个数据集大概率聚焦于常见的食品包装袋、瓶盖、纸盒等场景下的生产日期。日期形式多为“YYYY-MM-DD”、“YYYY/MM/DD”或“有效期至XXXX年XX月XX日”等。数据集的构建难点在于多样性不同的字体印刷体、喷码、不同的背景彩色包装图案、金属反光面、不同的光照条件、不同程度的遮挡或磨损。一个好的数据集会尽可能覆盖这些情况。你需要打开几张图片看看直观感受一下你要解决的问题的视觉复杂性。2. 标签格式YOLO格式详解YOLO格式的标签文件.txt与图片文件一一对应。每一行代表一个标注框bounding box格式为class_id x_center y_center width heightclass_id: 类别索引从0开始。在这个项目中很可能只有一类即0代表“生产日期”。如果数据集中区分了“生产日期”和“保质期至”则可能有多个类别。x_center, y_center: 标注框中心点的x和y坐标值是相对于图片宽度和高度的归一化比例范围0~1。width, height: 标注框的宽度和高度同样是归一化比例值。例如一行标签0 0.5 0.5 0.2 0.1表示类别0的目标其中心位于图片正中央宽度占图片宽的20%高度占图片高的10%。注意在查看或处理标签时务必确认坐标是归一化的。很多新手在自定义数据时会错误地写入绝对像素值导致训练时损失loss计算异常数值巨大或NaN。3. data.yaml文件数据集的“导航图”这个YAML文件是连接数据和训练代码的桥梁。它的典型内容如下path: ../dataset # 数据集根目录 train: images/train # 训练集图片路径相对于path val: images/val # 验证集图片路径 test: images/test # 测试集图片路径可选 # 类别信息 names: 0: production_date # 如果有多类 # names: # 0: date # 1: lot_number这个文件告诉训练脚本去哪里找图片和标签以及每个数字类别对应什么实际含义。2.2 模型与源码项目的心脏与骨架src/或项目根目录下的Python文件构成了项目的核心逻辑。1. 模型定义与训练脚本 (train.py):这里包含了使用Ultralytics YOLOv8进行模型训练的全部流程。关键步骤通常包括加载预训练权重通常会使用YOLOv8官方在COCO等大型数据集上预训练的模型如yolov8n.pt,yolov8s.pt作为起点。这称为迁移学习能极大加快收敛速度并提升最终性能尤其在我们数据集规模有限的情况下。数据加载通过data.yaml配置加载自定义数据集。模型配置设置训练参数如迭代次数epochs、批次大小batch_size、输入图像尺寸imgsz、学习率lr等。项目可能会提供一个预设好的配置文件如args.yaml或直接在代码中设置。训练与验证启动训练循环并在每个epoch结束后在验证集上评估性能保存最佳模型。2. 预测与推理脚本 (predict.py或detect.py):这是模型训练好后用于对新图片或视频进行预测的脚本。核心是利用训练好的模型权重.pt文件进行前向传播得到预测框、类别和置信度。项目中的脚本通常会封装好可视化功能将预测结果带框的图片保存下来。3. 模型文件训练完成后会在runs/train/exp/weights/目录下生成几个关键的模型文件best.pt: 在验证集上表现最好的模型权重。last.pt: 最后一个epoch训练完的模型权重。args.yaml: 本次训练所使用的所有参数配置便于复现。2.3 可视化界面让技术“看得见摸得着”对于课程设计或毕设一个图形用户界面GUI能极大提升项目的完整度和演示效果。这个项目很可能使用PyQt5、Tkinter或Gradio等库构建了一个简单的桌面应用。典型功能可能包括图片/视频上传选择本地文件进行识别。实时摄像头输入调用电脑摄像头进行实时检测这对演示非常有用。参数调整允许用户微调置信度阈值confidence threshold和NMS阈值观察不同参数对识别结果的影响。结果展示在原图上绘制检测框并显示识别出的日期文本这里可能集成了OCR功能见下文分析。结果导出将识别结果图片、文本、坐标保存到本地。这个GUI的价值在于它将命令行中冰冷的代码和输出变成了一个交互式的、可感知的工具非常适合向非技术背景的评委或用户展示成果。2.4 部署教程从“跑通”到“用好”一份好的部署教程deploy.md或README.md是项目的“使用说明书”。它应该清晰地列出每一步环境准备Python版本如3.8、PyTorch版本、CUDA/cuDNN版本如果使用GPU。教程应提供pip install -r requirements.txt的命令并解释核心依赖包的作用。数据与模型准备说明数据集和预训练模型的位置是否需要用户自行下载或项目已包含。训练步骤运行python train.py命令并解释主要参数。推理测试运行python predict.py --source test_image.jpg --weights best.pt来测试效果。启动GUI运行python gui.py来启动可视化界面。常见问题FAQ列出如“ImportError”、“CUDA out of memory”等错误的解决方案。3. 从理论到实践手把手部署与运行指南假设你现在已经拿到了这个项目包并且有一台装有NVIDIA显卡的电脑GPU训练会快很多CPU也可运行但较慢。我们一步步来把它跑起来。3.1 环境配置打好地基环境配置是新手的第一道坎。很多错误都源于环境不匹配。步骤1创建并激活虚拟环境强烈建议使用虚拟环境如conda或venv来隔离项目依赖避免与系统或其他项目的Python包冲突。# 使用conda假设已安装Anaconda或Miniconda conda create -n yolo_date_detection python3.9 conda activate yolo_date_detection # 或者使用venv python -m venv yolo_env # Windows yolo_env\Scripts\activate # Linux/Mac source yolo_env/bin/activate步骤2安装PyTorch这是最核心也是最容易出错的步骤。你需要根据你的CUDA版本如果有GPU去PyTorch官网获取正确的安装命令。打开命令行输入nvidia-smi可以查看CUDA版本。访问 pytorch.org选择你的系统、包管理器pip、语言Python、CUDA版本。例如对于CUDA 11.8命令可能是pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118如果只有CPU则选择CUDA为None的命令。步骤3安装Ultralytics YOLOv8和其他依赖项目提供的requirements.txt文件应该列出了所有依赖。直接安装pip install -r requirements.txt如果项目没有提供核心依赖通常包括pip install ultralytics opencv-python pillow matplotlib seaborn pandas pyyaml # 如果包含GUI可能还需要 pip install PyQt5 # 或 gradio, tkinter通常内置踩坑经验如果安装过程中出现版本冲突可以尝试先单独安装ultralytics它通常会管理好其自身的依赖。如果遇到与PyTorch相关的错误请确保你安装的ultralytics版本与你安装的PyTorch版本兼容。一个稳妥的做法是先安装PyTorch再安装ultralytics。3.2 数据检查与模型训练喂数据炼模型环境配好后不要急着训练先做数据检查。步骤1验证数据集结构按照2.1节所述检查dataset/images/train/下是否有图片dataset/labels/train/下是否有同名的.txt标签文件。随机打开几张图片和对应的标签用简单的Python脚本验证一下标签坐标是否在0-1之间或者使用Ultralytics提供的工具# 在项目根目录下 python -c “from ultralytics import YOLO; model YOLO(‘yolov8n.pt’); model.train(data‘dataset/data.yaml’, epochs1, imgsz640)”先只跑1个epoch目的是快速验证数据加载和训练流程是否能正常启动而不是为了得到好模型。如果这一步能跑通说明数据和基本配置没问题。步骤2启动正式训练数据检查无误后开始正式训练。项目可能提供了训练脚本你需要关注几个关键参数--weights yolov8n.pt: 指定预训练模型。n代表nano最小还有s(small),m(medium),l(large),x(xlarge)等尺寸模型越大精度通常越高但速度越慢所需显存也越多。对于生产日期识别s或m通常是速度和精度的良好折衷。--data dataset/data.yaml: 指定数据集配置文件。--epochs 100: 训练轮数。对于一个小型数据集50-150轮可能足够。可以观察验证集指标如mAP0.5是否已收敛。--imgsz 640: 输入图片尺寸。YOLOv8通常使用640x640。更大的尺寸如1280可能提升小目标检测精度但会显著增加显存消耗和训练时间。--batch 16: 批次大小。根据你的GPU显存调整。如果出现“CUDA out of memory”错误就减小这个值如8, 4。--device 0: 指定使用第0块GPU。如果是CPU则设为--device cpu。一个完整的训练命令可能像这样python train.py --weights yolov8s.pt --data dataset/data.yaml --epochs 100 --imgsz 640 --batch 16 --device 0 --name date_detection_exp训练开始后控制台会打印损失loss曲线和评估指标。更重要的Ultralytics会实时在runs/train/date_detection_exp/目录下生成一系列可视化结果results.png: 训练过程中的各项指标曲线损失、精度、召回率等。confusion_matrix.png: 混淆矩阵看模型是否容易混淆类别。val_batchX_pred.jpg: 验证集批次预测样例可以直观看到模型在当前阶段的表现。步骤3监控与早停不要设好命令就去干别的至少在训练初期要密切关注损失值。如果损失在最初几个epoch不下降或者出现NaN可能是学习率太高、数据有问题或模型配置错误。可以使用TensorBoard如果集成或直接看results.png来监控。如果验证集指标在连续多个epoch不再提升就可以考虑提前停止训练避免过拟合。3.3 模型评估与测试是骡子是马拉出来遛遛训练完成后我们需要用模型从未见过的测试集图片来评估其泛化能力。步骤1使用验证集进行评估Ultralytics在训练结束时会自动在验证集上评估最佳模型best.pt并输出关键指标mAP0.5平均精度IoU阈值为0.5、mAP0.5:0.95IoU阈值从0.5到0.95的平均精度、精确度Precision、召回率Recall。这些指标量化了模型的性能。步骤2对单张图片进行推理测试这是最有成就感的步骤。使用训练好的模型去识别新的食品包装图片。python predict.py --weights runs/train/date_detection_exp/weights/best.pt --source path/to/your/test_image.jpg --conf 0.25 --save-txt--conf 0.25: 置信度阈值。高于此值的检测框才会被保留。可以根据实际效果调整调高会减少误报但可能漏检调低则相反。--save-txt: 将检测结果YOLO格式的标签保存为.txt文件。--save-crop: 将检测到的目标裁剪下来保存这对于后续的OCR步骤非常有用。运行后结果会保存在runs/detect/exp/目录下你可以打开生成的图片查看效果。步骤3启动可视化界面GUI如果项目包含GUI通常运行一个如python app.py或python gui.py的命令即可启动。在界面中你可以上传图片、调整参数、查看结果体验完整的端到端流程。这是向他人展示项目成果最直观的方式。4. 超越检测从“框出日期”到“读出日期”YOLOv8完成的是目标检测任务即定位出图片中“生产日期”所在的位置一个矩形框。但很多时候我们不仅需要知道日期在哪还需要知道它具体是“2023-12-01”还是“2024-01-15”。这就需要光学字符识别OCR技术。一个完整的“生产日期识别系统”通常是“目标检测 OCR”的两阶段流水线阶段一Detection:使用YOLOv8模型定位出包装上的日期区域。阶段二Recognition:将定位到的日期区域图像裁剪出来送入OCR模型进行文字识别。项目中可能已经集成了OCR功能也可能只完成了检测部分。你需要检查源码。4.1 常见的OCR集成方案方案A使用PaddleOCRPaddleOCR是百度开源的OCR工具包对中文场景支持非常好识别精度高且易于集成。from paddleocr import PaddleOCR # 初始化OCR使用中英文识别模型 ocr PaddleOCR(use_angle_clsTrue, lang‘ch’) # 假设 crop_img 是从YOLO检测结果中裁剪出的日期区域图像 result ocr.ocr(crop_img, clsTrue) for line in result: print(line[-1][0]) # 打印识别出的文本在GUI中可以在检测到日期框后自动调用OCR对裁剪区域进行识别并将识别出的文本显示在界面上。方案B使用TesseractTesseract是一个历史更悠久的开源OCR引擎。对于清晰的印刷体数字和英文效果不错但对复杂背景或中文的支持可能不如PaddleOCR。# 安装 pip install pytesseract # 还需要系统安装Tesseract-OCR软件import pytesseract from PIL import Image text pytesseract.image_to_string(crop_img, lang‘engchi_sim’) # 中英文混合 print(text)方案C使用EasyOCREasyOCR是另一个包装良好的OCR库支持多种语言使用简单。import easyocr reader easyocr.Reader([‘ch_sim’, ‘en’]) # 中文简体和英文 result reader.readtext(crop_img) for detection in result: print(detection[1]) # 文本内容实操心得在生产日期识别场景中日期区域往往较小、字体规范。我个人的经验是PaddleOCR的精度和稳定性通常是最好的特别是对于喷码、曲面上的日期。集成时关键的一步是图像预处理。在将裁剪图送给OCR之前可以尝试进行灰度化、二值化、对比度增强、去噪等操作这能显著提升OCR的识别率。例如使用OpenCV的cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)和cv2.threshold进行简单处理往往有奇效。4.2 两阶段流水线的代码整合你需要修改或查看项目的预测脚本predict.py或GUI的后端代码在YOLO检测之后加入OCR步骤。伪代码逻辑如下# 1. YOLO检测 results yolo_model(source_image) boxes results[0].boxes # 获取检测框 # 2. 遍历每个检测框 for box in boxes: x1, y1, x2, y2 box.xyxy[0].cpu().numpy() # 获取框的像素坐标 conf box.conf[0].cpu().numpy() # 置信度 cls int(box.cls[0].cpu().numpy()) # 类别 # 3. 裁剪日期区域 crop_img source_image[int(y1):int(y2), int(x1):int(x2)] # 4. 图像预处理 (可选但重要) # gray cv2.cvtColor(crop_img, cv2.COLOR_BGR2GRAY) # _, thresh cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY cv2.THRESH_OTSU) # 5. OCR识别 date_text ocr_model.recognize(crop_img) # 或预处理后的thresh # 6. 结果可视化或输出 print(f“检测到生产日期置信度{conf:.2f} 内容{date_text}”) # 在原图上绘制框和文本 cv2.rectangle(source_image, (x1, y1), (x2, y2), (0,255,0), 2) cv2.putText(source_image, date_text, (x1, y1-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0,255,0), 2)5. 性能优化与实战调优让模型更“聪明”项目能运行只是第一步。要让它在你的具体场景下表现更好还需要进行调优。这里分享几个关键的优化方向。5.1 数据层面的优化模型的天花板1. 数据增强Data Augmentation:YOLOv8的训练过程内置了丰富的数据增强策略如Mosaic、MixUp、随机翻转、色彩抖动等。但在data.yaml或训练参数中你可以调整这些增强的强度。对于生产日期识别一些特定的增强可能特别有效仿射变换Affine:模拟包装袋的透视变形。模糊Blur和噪声Noise:模拟图像采集时的对焦不准或传感器噪声。亮度与对比度调整:模拟不同光照条件。 在Ultralytics中可以通过--augment参数或修改配置文件来调整。但要注意过度增强可能会让模型学习到不真实的模式反而损害性能。建议先使用默认增强如果模型在验证集上表现不佳过拟合再尝试增强如果模型在简单图片上都学不好欠拟合则可能需减弱增强或检查数据质量。2. 处理类别不平衡如果你的数据集中“清晰日期”的图片远多于“模糊/遮挡日期”的图片模型会对后者识别能力差。解决方法重采样Oversampling:在训练时让少数类别的图片有更高概率被采样到。数据合成人工生成一些模糊、遮挡的日期图片加入训练集。例如对清晰的日期区域图片应用高斯模糊、添加模拟污渍块等。3. 更精细的标注日期区域有时是一个长条有时是两行。确保你的标注框紧密贴合日期文本的外围但不要包含太多无关背景。过于宽松的框会让模型学习到无关特征过于紧凑则可能裁切掉字符边缘。5.2 模型层面的调参寻找最佳配置1. 输入图像尺寸imgsz:YOLOv8默认是640。对于非常小的日期比如在很大的包装袋上只占几十个像素可以尝试增大尺寸如1280。但这会以平方级增加计算量和显存消耗。一个折中的办法是在推理时使用更大的尺寸但训练时仍用640这需要模型有一定的尺度泛化能力。2. 锚框Anchor调整YOLOv8已经采用了无锚框Anchor-Free机制简化了这个问题。但在旧版本或某些定制模型中如果日期目标的大小分布非常集中例如所有日期框的宽高比都接近4:1那么根据你的数据集聚类生成自定义的锚框尺寸可能会带来提升。不过对于YOLOv8通常不需要手动调整。3. 损失函数权重YOLO的损失函数包含分类损失、边界框回归损失和对象性损失。除非你有很强的理由和深入的了解否则不建议初学者调整这些权重。保持默认通常是安全的选择。4. 学习率与优化器使用--lr参数可以调整初始学习率。如果训练初期损失震荡剧烈可以调小学习率如从0.01调到0.001。YOLOv8默认使用SGD优化器对于小数据集Adam优化器有时能更快收敛但可能泛化性稍差。可以通过--optimizer Adam来切换。5.3 推理阶段的优化速度与精度的平衡1. 置信度阈值--conf:这是最直接的调优旋钮。在predict.py或GUI中动态调整它高阈值如0.5:只输出非常确信的检测结果误报少但可能漏掉一些模糊目标。适用于对误报容忍度低的场景如自动打码。低阈值如0.1:输出更多候选框召回率高但会有很多误报。适用于后续有更严格筛选流程的场景。建议的做法是在验证集上绘制“精确率-召回率曲线PR Curve”选择一个在曲线上平衡点如F1分数最高点对应的阈值作为默认值。2. 非极大值抑制阈值--iou:当多个检测框重叠严重时NMS会保留置信度最高的抑制掉其他的。--iou参数控制重叠程度的阈值IoU。默认0.45是合理的。如果日期区域非常密集理论上生产日期不会可以适当调低。3. 模型剪枝与量化部署优化:如果最终要部署到资源受限的设备如嵌入式设备、手机可以考虑模型导出为ONNX或TensorRT格式使用model.export(format‘onnx’)或model.export(format‘engine’)可以利用推理引擎的优化获得加速。使用更小的模型变体训练时直接使用yolov8n.pt纳米级牺牲一点精度换取速度和体积的优势。后训练量化PTQ:将模型权重从FP32转换为INT8可以大幅减少模型体积和提升推理速度对精度影响相对较小。Ultralytics支持简单的导出时量化。6. 项目扩展与二次开发打造属于你的系统这个项目是一个完美的起点。基于它你可以进行多种有意义的扩展这尤其适合作为毕业设计的创新点。扩展方向一增加“保质期”识别与计算很多食品包装上同时印有“生产日期”和“保质期”。你可以数据标注在现有数据集上为“保质期”增加一个新的类别标签如class_id1。模型训练重新训练一个能同时检测“生产日期”和“保质期”两个类别的YOLOv8模型。逻辑判断在推理代码中不仅识别出文本还解析文本内容。例如识别出“生产日期2023-10-01”和“保质期12个月”然后通过程序自动计算“过期日期2024-10-01”并与当前日期比较给出“是否过期”的判断。这个功能非常实用可以用于超市的智能巡检或仓库的库存管理。扩展方向二开发Web API服务将模型封装成RESTful API方便其他系统如仓库管理系统、移动App调用。使用FastAPI或Flask框架搭建一个Web服务。设计一个接收图片Base64编码或文件上传的接口如/detect。在接口处理函数中加载YOLOv8模型和OCR模型进行检测和识别。将结果日期坐标、识别文本以JSON格式返回。 这样你的算法能力就可以通过网络被任何客户端调用实用性大大增强。扩展方向三集成到实时视频流处理结合OpenCV的视频捕获功能实现实时检测。修改预测脚本将--source参数设为0电脑摄像头或一个视频文件路径。在循环中读取视频帧对每一帧进行检测和识别。将结果实时绘制在画面上并显示。性能优化是关键视频流处理要求高实时性。你需要考虑使用多线程一个线程读帧一个线程推理或者降低推理帧率或者使用更小的模型YOLOv8n以确保流畅性。可以计算并显示每秒处理帧数FPS来监控性能。扩展方向四模型再训练与领域适配项目提供的数据集可能主要针对某几类食品包装。如果你的应用场景是药品铝箔板、化妆品瓶身或工业零件上的日期码模型的性能可能会下降。这时你就需要进行领域自适应Domain Adaptation。收集新数据拍摄或搜集你目标场景下的图片至少几十到上百张。数据标注使用LabelImg、CVAT等工具进行标注格式与原有数据集保持一致。微调Fine-tuning:这是最重要的步骤。不要从头训练而是在项目训练好的best.pt模型基础上用你的新数据继续训练。python train.py --weights runs/train/date_detection_exp/weights/best.pt --data your_new_data.yaml --epochs 50 --imgsz 640 --batch 8这里的关键是--weights参数指向了之前训练好的模型。由于模型已经学会了“日期”的一些通用特征如数字纹理、排列模式在新的数据上微调少量轮次如50轮就能快速适应新场景效果远好于从头训练且所需的新数据量也少得多。在我自己的实践中将一个在饼干包装袋上训练的模型通过不到100张饮料瓶盖的图片微调后在新场景下的mAP从不到0.3提升到了0.85以上效果立竿见影。这充分说明了预训练模型和微调策略的强大。本文还有配套的精品资源点击获取

相关新闻