首页 游戏 软件 资讯 排行榜 专题
首页
AI
【特训营第三期 】基于PaddleClas的多场景杂草分类

【特训营第三期 】基于PaddleClas的多场景杂草分类

热心网友
14
转载
2025-07-24
本文介绍基于PaddleClas的多场景杂草分类研究。使用昆士兰州牧场8种杂草的17508张原位图像,经处理生成训练集(15000张)和验证集(2509张)。选用含49个卷积层和1个全连接层的ResNet50模型,通过PaddleClas训练,可边训边评并保存最优模型,还能单独评估及用存盘模型预测。

【特训营第三期 】基于paddleclas的多场景杂草分类 - 游乐网

基于PaddleClas的多场景杂草分类

一、数据集介绍

选定的杂草种类是昆士兰州牧场草原的本地物种。它们包括:"Chinee apple", "Snake weed", "Lantana", "Prickly acacia", "Siam weed", "Parthenium", "Rubber vine" and "Parkinsonia". 这些图像是从昆士兰州以下地点的杂草侵扰中收集的地点收集:"Black River", "Charters Towers", "Cluden", "Douglas", "Hervey Range", "Kelso", "McKinlay" and "Paluma". 下表和图表按杂草、位置和地理分布对数据集进行了细分。【特训营第三期 】基于PaddleClas的多场景杂草分类 - 游乐网            【特训营第三期 】基于PaddleClas的多场景杂草分类 - 游乐网            此数据集的采集更加贴合在自然环境当中,注重实用性。【特训营第三期 】基于PaddleClas的多场景杂草分类 - 游乐网            (a) 在受控实验室环境中拍摄的马缨丹叶图像。(b) 来自DeepWeeds数据集的马缨丹样本图像,原位拍摄,捕捉整个植物的真实视图。

二、模型介绍

通过与多个模型的对比,最终我们选择了ResNet50模型【特训营第三期 】基于PaddleClas的多场景杂草分类 - 游乐网            

ResNet50

Resnet50 网络中包含了 49 个卷积层、一个全连接层。如图下图所示,Resnet50网络结构可以分成七个部分,第一部分不包含残差块,主要对输入进行卷积、正则化、激活函数、最大池化的计算。第二、三、四、五部分结构都包含了残差块,图 中的绿色图块不会改变残差块的尺寸,只用于改变残差块的维度。在 Resnet50 网 络 结 构 中 , 残 差 块 都 有 三 层 卷 积 , 那 网 络 总 共 有1+3×(3+4+6+3)=49个卷积层,加上最后的全连接层总共是 50 层,这也是Resnet50 名称的由来。网络的输入为 224×224×3,经过前五部分的卷积计算,输出为 7×7×2048,池化层会将其转化成一个特征向量,最后分类器会对这个特征向量进行计算并输出类别概率。【特训营第三期 】基于PaddleClas的多场景杂草分类 - 游乐网            

三、数据处理

解压数据集

In [ ]
!mkdir img !unzip /home/aistudio/data/data200134/images.zip -d /home/aistudio/img
登录后复制    In [3]
# 导入相关包from sklearn.utils import shuffleimport osimport pandas as pdimport numpy as npfrom PIL import Imageimport paddleimport paddle.nn as nnfrom paddle.io import Datasetimport paddle.vision.transforms as Timport paddle.nn.functional as Ffrom paddle.metric import Accuracyimport random
登录后复制    据最新paddleclas的提示,我们需要把图像变为两个txt文件train_txt,val_txt方便训练时读取数据集In [4]
dirpath = "img"# 先得到总的txt后续再进行划分,因为要划分出验证集,所以要先打乱,因为原本是有序的def get_all_txt():    all_list = []    i = 0    for root in os.listdir(dirpath):        i = i + 1                 if("0.webp" in root):            all_list.append(os.path.join(root)+" 0\n")        if("1.webp" in root):            all_list.append(os.path.join(root)+" 1\n")        if("2.webp" in root):            all_list.append(os.path.join(root)+" 2\n")        if("3.webp" in root):            all_list.append(os.path.join(root)+" 3\n")        if("4.webp" in root):            all_list.append(os.path.join(root)+" 4\n")        if("5.webp" in root):            all_list.append(os.path.join(root)+" 4\n")        if("6.webp" in root):            all_list.append(os.path.join(root)+" 4\n")        if("7.webp" in root):            all_list.append(os.path.join(root)+" 4\n")    allstr = ''.join(all_list)    f = open('all_list.txt','w',encoding='utf-8')    f.write(allstr)    return all_list , iall_list,all_lenth = get_all_txt()print(all_lenth-1) # 有意者是预测的图片,得减去
登录后复制        
17508
登录后复制        In [5]
#打乱原先循序random.shuffle(all_list)random.shuffle(all_list)
登录后复制    In [6]
#划分训练集和验证集train_size = int(15000)train_list = all_list[:train_size]val_list = all_list[train_size:]print(len(train_list))print(len(val_list))
登录后复制        
150002509
登录后复制        In [7]
# 运行cell,生成txt train_txt = ''.join(train_list)f_train = open('train_list.txt','w',encoding='utf-8')f_train.write(train_txt)f_train.close()print("train_list.txt 生成成功!")
登录后复制        
train_list.txt 生成成功!
登录后复制        In [8]
# 运行cell,生成txtval_txt = ''.join(val_list)f_val = open('val_list.txt','w',encoding='utf-8')f_val.write(val_txt)f_val.close()print("val_list.txt 生成成功!")
登录后复制        
val_list.txt 生成成功!
登录后复制        

四、模型训练

In [9]
!unzip -oq /home/aistudio/data/data98136/PaddleClas-release-2.1.zip
登录后复制    由于使用的是相对路径,所以我们需要把生成的数据列表移动到“/home/aistudio/PaddleClas-release-2.1/dataset”In [11]
!mv img PaddleClas-release-2.1/dataset/!mv all_list.txt PaddleClas-release-2.1/dataset/!mv train_list.txt PaddleClas-release-2.1/dataset/!mv val_list.txt PaddleClas-release-2.1/dataset/
登录后复制    In [13]
%cd PaddleClas-release-2.1!ls
登录后复制        
/home/aistudio/PaddleClas-release-2.1configs  docs      MANIFEST.in    README_cn.md      setup.pydataset  __init__.py  paddleclas.py  README.md       toolsdeploy LICENSE      ppcls     requirements.txt
登录后复制        Paddleclas为我们提供了非常多模型,我们可以根据需求自行选择,"/home/aistudio/PaddleClas-release-2.1/configs"这是配置文件所在的路径,记得修改相关配置【特训营第三期 】基于PaddleClas的多场景杂草分类 - 游乐网 【特训营第三期 】基于PaddleClas的多场景杂草分类 - 游乐网            In [ ]
#我们使用提前准备好的配置文件!python tools/train.py \    -c /home/aistudio/ResNet50.yaml
登录后复制    

五、模型评估

在训练的过程中,PaddleClas就可以进行边训练边评估,并根据评估的精度值将最优模型参数存储在output/xxx/best_model目录中。 在训练结束后,可以再单独使用eval.py文件进行评估操作。 然后就可以使用存盘的模型文件进行模型预测,一般在研究阶段和比赛阶段,就是这样操作的。 在实际工业落地的时候,对速度要求更高,一般需要将存盘文件转换为推理模型,然后进行推理和部署。In [ ]
!python tools/eval.py \    -c /home/aistudio/ResNet50.yaml \    -o pretrained_model="/home/aistudio/PaddleClas-release-2.1/output/ResNet50/best_model"\    -o load_static_weights=False
登录后复制    模型训练完成之后,可以加载训练得到的预训练模型(就是存盘文件),进行模型预测。在模型库的 tools/infer/infer.py 中提供了完整的示例,只需执行下述命令即可完成模型预测:In [ ]
!python tools/infer/infer.py \    -i ~/work/test \    --model ResNet50 \    --pretrained_model "/home/aistudio/PaddleClas-release-2.1/output/ResNet50/best_models" \    --load_static_weights False \    --class_num=8
登录后复制    
来源:https://www.php.cn/faq/1425646.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Pywinrm,一个 Python 管理利器!
科技数码
Pywinrm,一个 Python 管理利器!

Pywinrm 通过Windows远程管理(WinRM)协议,让Python能够像操作本地一样执行远程Windows命令,真正打通了跨平台管理的最后一公里。 在混合IT环境中,Linux机器管理Wi

热心网友
04.07
全网炸了!5亿人用的Axios竟被投毒,你的密钥还保得住吗?
科技数码
全网炸了!5亿人用的Axios竟被投毒,你的密钥还保得住吗?

早些时候,聊过 Python 领域那场惊心动魄的供应链攻击。当时我就感叹,虽然我们 JavaScript 开发者对这类套路烂熟于心,但亲眼目睹这种规模的“投毒”还是头一次。 早些时候,聊过 Pyth

热心网友
04.07
Toga,一个超精简的 Python 项目!
科技数码
Toga,一个超精简的 Python 项目!

Toga 是 BeeWare 家族的核心成员,号称“写一次,跑遍所有平台”,而且用的是系统原生控件,不是那种一看就是网页套壳的界面 。 写了这么多年 Python,你是不是也想过:要是能一套代码跑

热心网友
04.07
Python 异常处理:别再用裸奔的 try 了
科技数码
Python 异常处理:别再用裸奔的 try 了

异常处理的核心:让错误在正确的地方被有效处理。正确的地方,就是别在底层就把异常吞了,也别在顶层还抛裸奔的 Exception。 异常处理写得好,半夜不用起来改 bug。1 你是不是也这么干过?tr

热心网友
04.07
OpenClaw如何自定义SKILL
AI
OpenClaw如何自定义SKILL

1 Skills机制概述 提起OpenClaw的Skills机制,不少人可能会把它想象成传统意义上的可执行插件。其实,它的内涵要更精妙一些。 简单说,Skills本质上是一套基于提示驱动的能力扩展机制。它并不是一个可以独立“跑”起来的程序模块,而是通过一份结构化描述文件(核心就是那个SKILL m

热心网友
04.07

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

美国SEC主席Paul Atkins证实:加密货币安全港提案已送交白宫审查
web3.0
美国SEC主席Paul Atkins证实:加密货币安全港提案已送交白宫审查

加密货币行业翘首以盼的监管里程碑,终于有了实质性进展。美国证券交易委员会(SEC)主席保罗·阿特金斯(Paul Atkins)近日证实,那份允许加密项目在早期获得注册豁免权的“安全港”框架提案,已经正式送抵白宫,进入了最终审查阶段。 在范德堡大学与区块链协会联合举办的数字资产峰会上,阿特金斯透露了这

热心网友
04.08
微策略Strategy报告:第一季录得144.6亿美元浮亏 再斥资约3.3亿美元买进4871枚比特币
web3.0
微策略Strategy报告:第一季录得144.6亿美元浮亏 再斥资约3.3亿美元买进4871枚比特币

微策略Strategy报告:第一季录得144 6亿美元浮亏 再斥资约3 3亿美元买进4871枚比特币 市场震荡的威力有多大?看看Strategy的最新季报就明白了。根据其最新向美国证管会(SEC)提交的8-K报告,受市场剧烈波动影响,这家公司所持的比特币在第一季度录得了一笔惊人的数字——144 6亿

热心网友
04.08
稳定币发行商Tether再扩Web3版图!Paolo Ardoino:正开发去中心化搜索引擎Hypersearch
web3.0
稳定币发行商Tether再扩Web3版图!Paolo Ardoino:正开发去中心化搜索引擎Hypersearch

稳定币巨头Tether的动向,向来是加密世界的风向标。这不,它向Web3基础设施的版图扩张,又迈出了关键一步。公司执行长Paolo Ardoino在社交平台X上透露,其工程团队正在全力“烹制”一个新项目——去中心化搜索引擎 “Hypersearch”。这个消息一出,立刻引发了行业的广泛猜想。 采用D

热心网友
04.08
Base链首个原生DeFi借贷协议Seamless Protocol倒闭 将于2026年6月30日下线
web3.0
Base链首个原生DeFi借贷协议Seamless Protocol倒闭 将于2026年6月30日下线

基地位于Coinbase旗下以太坊Layer2网络Base的Seamless Protocol,日前正式宣告了服务的终结。这个曾经吸引了超过20万用户的原生DeFi借贷协议,在运营不到三年后,终究没能跑赢时间。它主打的核心产品是Integrated Leverage Markets(ILMs)——一

热心网友
04.08
PAAL代币如何参与治理?社区投票能决定哪些事项?
web3.0
PAAL代币如何参与治理?社区投票能决定哪些事项?

PAAL代币揭秘:深度解析Web3社区治理的核心钥匙 在去中心化自治组织的浪潮中,谁真正掌握了项目的话语权?PAAL代币提供了一套系统化的答案。它不仅是生态内流转的价值媒介,更是开启链上治理大门的核心凭证。通过持有并质押PAAL代币,用户能够对协议升级、资金分配乃至战略方向等关键事务投出决定性的一票

热心网友
04.08