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

基于PaddleX2.0-PP-LCNet模型的咖啡豆质量分类
一、项目背景
随着时代的发展,人们对咖啡的风味要求在不断变化中。目前,我们正处于以精品咖啡为代表的第三次咖啡浪潮中。精品咖啡的特点是:追求高品质咖啡,强调咖啡的独特风味的表达,严格筛选咖啡豆。 咖啡不仅受到人类的钟爱,还会吸引各种小虫,在咖啡果实成长过程中留下虫洞。咖啡豆采摘过程中可能混入各种杂质。在烘焙过程中,咖啡豆受热不均或温度变化过快会产生各种缺陷。这些缺陷经过存储过程会产生霉变等变化,严重影响咖啡风味。咖啡豆中混入上述杂质特别影响整体风味,本项目旨在实现对咖啡豆缺陷的自动筛选。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
二、数据集介绍
在咖啡豆筛选过程中,咖啡熟豆常见缺陷有:瑕疵豆、碎片等,如下图所示: 训练集共886张咖啡豆的图片,其中包含591张精品咖啡豆,295张有缺陷的咖啡豆
三、总体思路
本方案采用飞桨全新发布的PP-LCNet模型架构,该模型比起其他的轻量级的 SOTA 模型,该骨干网络可以在不增加推理时间的情况下,进一步提升模型的性能,最终大幅度超越现有的 SOTA 模型。
PP-LCNet网络结构图如下:
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
2024-06-04 16:27:51 [INFO]Dataset split starts...2024-06-04 16:27:51 [INFO]Dataset split done.2024-06-04 16:27:51 [INFO]Train samples: 7092024-06-04 16:27:51 [INFO]Eval samples: 1772024-06-04 16:27:51 [INFO]Test samples: 02024-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)登录后复制
2024-06-04 16:37:16 [INFO]Model saved in output/pplcnet/epoch_99.2024-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:32024-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:02024-06-04 16:37:19 [INFO][TRAIN] Epoch 100 finished, loss=0.22206952, acc1=0.984375, acc2=1.0 .2024-06-04 16:37:20 [INFO]Start to evaluate(total_samples=177, total_steps=3)...2024-06-04 16:37:21 [INFO][EVAL] Finished, Epoch=100, acc1=0.982781, acc2=1.000000 .2024-06-04 16:37:21 [INFO]Current evaluated best model on eval_dataset is epoch_64, acc1=0.98798894882202452024-06-04 16:37:21 [INFO]Model saved in output/pplcnet/epoch_100.登录后复制
3.5 训练结果
* 最终训练结果acc1=0.98.8,训练的效果非常不错,可以达到应用级的效果登录后复制
3.6 训练结果可视化
四、模型预测
在训练100个epoch后,本项目的最终得分为0.98,达到了比较好的效果
模型训练好之后就可以开始预测,本项目随机抽取test里的数据,预测结果如下,可以看出预测的非常准确
In [2]import paddlex as pdxtest_jpg = 'IMG_20200618_124521_1.webp'model = pdx.load_model('output/pplcnet/best_model')result = model.predict(test_jpg)print("Predict Result: ", result)登录后复制 我们随机挑选了测试集的一张照片来验证模型的效果,可以看出模型准确的识别了,而且分数还很高,说明模型效果很棒
2024-06-04 20:22:09 [INFO]Model[PPLCNet] loaded.Predict Result: [{'category_id': 1, 'category': 'Debris_Shell', 'score': 0.93589294}]登录后复制 五、改进方向
如果后期在进行实际应用,可以考虑往模型轻量化方向优化因为本文项目的数据集量比较少,可以对训练集进行数据增强从而增大训练数据量以提升模型泛化能力可以在基线模型的基础上通过调参及模型优化进一步提升效果相关攻略
FDUSD脱锚惊魂夜:币安生态稳定币的信任危机与系统性风险 2025年4月2日夜间,加密货币市场经历了一场突如其来的“压力测试”。由香港First Digital Trust Limited发行的美元稳定币FDUSD,在市场上演了惊心动魄的脱锚跳水,其兑USDT价格一度暴跌至0 8726美元。这场震
最近又折腾了下 Obsidian 的 Git 插件,虽然也有点麻烦,但它是适合我的。下面介绍下怎么配置和使用。 第一次使用 Obsidian 是在 2024 年,这是翻阅之前的文章 《Obsidia
这项由华为技术有限公司、南洋理工大学、香港大学和香港中文大学联合完成的突破性研究发表于2026年1月,论文编号为arXiv:2601 01426v1。研究团队通过一种名为SWE-Lego的创新训练方
12 月 27 日消息,科技媒体 NeoWin 今天(12 月 27 日)发布博文,报道称 AI 代码编辑器 Windsurf 本周发布 Wave 13 版,通过大幅升级多智能体工作流、性能可访问
NEO(小蚁区块链)旨在构建智能经济网络。NEO通过资产数字化和智能合约实现自动化管理,用户需在支持NEO交易的平台注册账户并获取数字货币,选择合适的交易对后,即可下单交易并确认。交易完成后,可在账户中查看NEO资产,或转移至个人数字储存中安全保管NEO。
热门专题
热门推荐
```html 2025年9月ADA将剑指何方?一文读懂Cardano突破1美元的关键战役 2025年9月,加密市场的目光再次聚焦于Cardano及其原生代币ADA。随着价格在0 80美元关键支撑位附近盘整,一个核心议题浮出水面:ADA能否借助生态里程碑与宏观转向的东风,在本月一举攻克并站稳1美元大
什么是币安矿池?全面解读主流矿池的核心优势 当人们谈论加密货币挖矿时,脑海中浮现的往往是巨大的矿机和轰鸣的机房。然而,一个更具效率与稳定性的选择正成为全球矿工的新宠——币安矿池。作为全球领先的加密货币交易所币安旗下的核心服务之一,币安矿池本质上是一个聚合全球算力的去中心化矿池平台。它允许矿工将个人算
《洛克王国:世界》灵魂环印使用攻略 灵魂环印是《洛克王国:世界》中提升魔法师耐力的核心道具,千万别舍不得使用。它能为你的角色快速“充电”,显著增强魔法师的续航能力。耐力属性直接影响实战中的操作流畅度与技能释放频率,无论是PVP竞技还是挑战高难度BOSS,充足的耐力条都能带来截然不同的游戏体验。使用灵
OKX鲨鱼鳍:一款兼顾本金安全与潜在高收益的结构化理财产品 在加密货币理财的世界里,你是否也常纠结于如何在控制风险的同时,追求比普通活期、定期更高的收益?OKX交易所推出的“鲨鱼鳍”结构化产品,或许提供了一个巧妙的解决方案。 简单来说,这是一款保本型理财产品。你只需选定一个币种,并对其未来1到7天的
角色一:小萤 谈及机动性与灵活走位,小萤无疑是游戏中的顶尖代表。其核心优势在于无与伦比的战场穿梭能力,得益于独特的轻盈步伐,闪避各类攻击对她而言游刃有余。她的标志性技能“微光闪烁”,可提供短时爆发性移速加成,无论是用于切入战场先手开团,还是关键时刻脱离险境,都能起到决定性作用。 精通小萤的关键,在于





