0

0

基于PaddleX2.0-PP-LCNet模型的咖啡豆质检分类

P粉084495128

P粉084495128

发布时间:2025-07-25 09:58:13

|

669人浏览过

|

来源于php中文网

原创

本项目旨在自动筛选咖啡豆缺陷,提升咖啡风味。采用PP-LCNet模型,以886张图片为数据集(591张精品豆、295张缺陷豆),按8:2划分训练集与验证集。经训练,模型准确率达98.8%,预测效果佳。未来可通过轻量化模型、数据增强及调参优化提升泛化能力与效果。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

基于paddlex2.0-pp-lcnet模型的咖啡豆质检分类 - php中文网

基于PaddleX2.0-PP-LCNet模型的咖啡豆质量分类

一、项目背景

随着时代的发展,人们对咖啡的风味要求在不断变化中。目前,我们正处于以精品咖啡为代表的第三次咖啡浪潮中。精品咖啡的特点是:追求高品质咖啡,强调咖啡的独特风味的表达,严格筛选咖啡豆。 咖啡不仅受到人类的钟爱,还会吸引各种小虫,在咖啡果实成长过程中留下虫洞。咖啡豆采摘过程中可能混入各种杂质。在烘焙过程中,咖啡豆受热不均或温度变化过快会产生各种缺陷。这些缺陷经过存储过程会产生霉变等变化,严重影响咖啡风味。咖啡豆中混入上述杂质特别影响整体风味,本项目旨在实现对咖啡豆缺陷的自动筛选。

二、数据集介绍

在咖啡豆筛选过程中,咖啡熟豆常见缺陷有:瑕疵豆、碎片等,如下图所示: 训练集共886张咖啡豆的图片,其中包含591张精品咖啡豆,295张有缺陷的咖啡豆基于PaddleX2.0-PP-LCNet模型的咖啡豆质检分类 - php中文网        

三、总体思路

本方案采用飞桨全新发布的PP-LCNet模型架构,该模型比起其他的轻量级的 SOTA 模型,该骨干网络可以在不增加推理时间的情况下,进一步提升模型的性能,最终大幅度超越现有的 SOTA 模型。

PP-LCNet网络结构图如下:


基于PaddleX2.0-PP-LCNet模型的咖啡豆质检分类 - php中文网        

3.1 解压数据集

In [ ]
!unzip -oq /home/aistudio/data/data150459/dataset3.zip -d work/
   

3.2 安装PaddleX开发套件

In [1]
!pip install paddlex
   

3.3 预处理

* 划分数据集
* 生成标签
   
In [ ]
!paddlex --split_dataset --format ImageNet --dataset_dir work/dataset3/ --val_value 0.2
   

按照8:2划分训练集和测试集.Train数量为:709 Eval 数量为: 177

OmniAudio
OmniAudio

OmniAudio 是一款通过 AI 支持将网页、Word 文档、Gmail 内容、文本片段、视频音频文件都转换为音频播客,并生成可在常见 Podcast ap

下载
2022-06-04 16:27:51 [INFO]	Dataset split starts...
2022-06-04 16:27:51 [INFO]	Dataset split done.
2022-06-04 16:27:51 [INFO]	Train samples: 709
2022-06-04 16:27:51 [INFO]	Eval samples: 177
2022-06-04 16:27:51 [INFO]	Test samples: 0
2022-06-04 16:27:51 [INFO]	Split files saved in work/dataset3/
   

3.4 训练

* PP-LCNet模型组网
* 调整训练参数
   
In [ ]
import paddlex as pdxfrom paddlex import transforms as T# 定义训练和验证时的transforms# API说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/apis/transforms/transforms.mdtrain_transforms = T.Compose(
    [T.RandomCrop(crop_size=224), T.RandomHorizontalFlip(), T.Normalize()])

eval_transforms = T.Compose([
    T.ResizeByShort(short_size=256), T.CenterCrop(crop_size=224), T.Normalize()
])# 定义训练和验证所用的数据集# API说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/apis/datasets.mdtrain_dataset = pdx.datasets.ImageNet(
    data_dir='work/dataset3/',
    file_list='work/dataset3/train_list.txt',
    label_list='work/dataset3/labels.txt',
    transforms=train_transforms,
    shuffle=True)

eval_dataset = pdx.datasets.ImageNet(
    data_dir='work/dataset3/',
    file_list='work/dataset3/val_list.txt',
    label_list='work/dataset3/labels.txt',
    transforms=eval_transforms)# 初始化模型,并进行训练# 可使用VisualDL查看训练指标,参考https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/visualdl.mdnum_classes = len(train_dataset.labels)
model = pdx.cls.PPLCNet(num_classes=num_classes, scale=1)# API说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/apis/models/classification.md# 各参数介绍与调整说明:https://github.com/PaddlePaddle/PaddleX/tree/develop/docs/parameters.mdmodel.train(
    num_epochs=100,
    pretrain_weights='IMAGENET',
    train_dataset=train_dataset,
    train_batch_size=64,
    eval_dataset=eval_dataset,
    lr_decay_epochs=[4, 6, 8],
    learning_rate=0.1,
    save_dir='output/pplcnet',
    log_interval_steps=10,
    label_smoothing=.1,
    use_vdl=True)
   
2022-06-04 16:37:16 [INFO]	Model saved in output/pplcnet/epoch_99.
2022-06-04 16:37:17 [INFO]	[TRAIN] Epoch=100/100, Step=1/11, loss=0.204105, acc1=1.000000, acc2=1.000000, lr=0.000025, time_each_step=0.31s, eta=0:0:3
2022-06-04 16:37:19 [INFO]	[TRAIN] Epoch=100/100, Step=11/11, loss=0.259414, acc1=0.953125, acc2=1.000000, lr=0.000000, time_each_step=0.24s, eta=0:0:0
2022-06-04 16:37:19 [INFO]	[TRAIN] Epoch 100 finished, loss=0.22206952, acc1=0.984375, acc2=1.0 .
2022-06-04 16:37:20 [INFO]	Start to evaluate(total_samples=177, total_steps=3)...
2022-06-04 16:37:21 [INFO]	[EVAL] Finished, Epoch=100, acc1=0.982781, acc2=1.000000 .
2022-06-04 16:37:21 [INFO]	Current evaluated best model on eval_dataset is epoch_64, acc1=0.9879889488220215
2022-06-04 16:37:21 [INFO]	Model saved in output/pplcnet/epoch_100.
   

3.5 训练结果

* 最终训练结果acc1=0.98.8,训练的效果非常不错,可以达到应用级的效果
   

3.6 训练结果可视化

基于PaddleX2.0-PP-LCNet模型的咖啡豆质检分类 - php中文网        

四、模型预测

在训练100个epoch后,本项目的最终得分为0.98,达到了比较好的效果

模型训练好之后就可以开始预测,本项目随机抽取test里的数据,预测结果如下,可以看出预测的非常准确

In [2]
import paddlex as pdx
test_jpg = 'IMG_20200618_124124521_1.jpg'model = pdx.load_model('output/pplcnet/best_model')
result = model.predict(test_jpg)print("Predict Result: ", result)
   

我们随机挑选了测试集的一张照片来验证模型的效果,可以看出模型准确的识别了,而且分数还很高,说明模型效果很棒

基于PaddleX2.0-PP-LCNet模型的咖啡豆质检分类 - php中文网        

2022-06-04 20:22:09 [INFO]	Model[PPLCNet] loaded.Predict Result:  [{'category_id': 1, 'category': 'Debris_Shell', 'score': 0.93589294}]
   

五、改进方向

  1. 如果后期在进行实际应用,可以考虑往模型轻量化方向优化
  2. 因为本文项目的数据集量比较少,可以对训练集进行数据增强从而增大训练数据量以提升模型泛化能力
  3. 可以在基线模型的基础上通过调参及模型优化进一步提升效果

相关专题

更多
c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

79

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

46

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

121

2026.01.09

学python网站汇总
学python网站汇总

本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。

12

2026.01.09

python学习网站
python学习网站

本专题整合了python学习相关推荐汇总,阅读专题下面的文章了解更多详细内容。

15

2026.01.09

俄罗斯手机浏览器地址汇总
俄罗斯手机浏览器地址汇总

汇总俄罗斯Yandex手机浏览器官方网址入口,涵盖国际版与俄语版,适配移动端访问,一键直达搜索、地图、新闻等核心服务。

71

2026.01.09

漫蛙稳定版地址大全
漫蛙稳定版地址大全

漫蛙稳定版地址大全汇总最新可用入口,包含漫蛙manwa漫画防走失官网链接,确保用户随时畅读海量正版漫画资源,建议收藏备用,避免因域名变动无法访问。

370

2026.01.09

php学习网站大全
php学习网站大全

精选多个优质PHP入门学习网站,涵盖教程、实战与文档,适合零基础到进阶开发者,助你高效掌握PHP编程。

45

2026.01.09

php网站搭建教程大全
php网站搭建教程大全

本合集专为零基础用户打造,涵盖PHP网站搭建全流程,从环境配置到实战开发,免费、易懂、系统化,助你快速入门建站!

12

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.6万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号