77。人工智能农作物生长情况识别
数据集介绍
来源:中国农业大学_农作物生长情况识别挑战赛
数据包括:一个train文件夹,存放草莓处于营养生长阶段的图片。共557张。一个test文件夹,有230张测试图片。一个train.csv文件。格式内容如下:
image_id
category_id
a1009.jpg
0
a1011.jpg
2
a1025.jpg
3
其中包含有作物图片及生长情况标签。草莓生长阶段大致可以分为以下几个阶段:生长期、开花期、结果期、成熟期。一、整理数据集#导入库 import os import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.image as mpimg basedir="strawberry" train_csv="train.csv" classnames=["growth","flowering","fruit","seed"] #读取数据集 data=pd.read_csv(os.path.join(basedir,train_csv))#data.head() #随机乱序 data=data.sample(frac=1).reset_index(drop=True) #拆分训练集和测试集 train_data=data.iloc[:int(0.8*len(data))] val_data=data.iloc[int(0.8*len(data)):] # 统计每个类别的数量 classnum=data.groupby("label").count() print(classnum) trainnum=train_data.groupby("label").count() valnum=val_data.groupby("label").count() print(trainnum,valnum) #运行结果:每种情况分类数量 image label 0 146 1 145 2 146 3 120 image label 0 117 1 114 2 120 3 94 image label 0 29 1 31 2 26 3 26#根据类别把图片分类,并复制到对应的文件夹 import shutil for d in data.label.unique(): if not os.path.exists(os.path.join(basedir,"crops",str(d))): os.mkdir(os.path.join(basedir,"crops",str(d))) for i in data[data.label==d].index: shutil.copy(os.path.join(basedir,"train",data.iloc[i][0]),os.path.join(basedir,"crops",str(d)))#随机取1条数据,并显示 idx=np.random.randint(0,len(train_data),size=1) plt.figure(figsize=(10,10)) imgfile=os.path.join(basedir,"train",train_data[idx][0][0]) img=mpimg.imread(imgfile) label=classnames[train_data[idx][0][1]] plt.imshow(img) plt.title(label) plt.axis("off") plt.show()
二、模型训练
这里还是选择PPLCNet轻量级型分类模型作为演示。#模型训练 import paddlex as pdx from paddlex import transforms as T #定义训练和验证时的transforms train_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()]) #定义训练和验证时的数据集 train_dataset=pdx.datasets.ImageNet( data_dir="strawberry/crops", file_list="strawberry/crops/train_list.txt", label_list="strawberry/crops/labels.txt", transforms=train_transforms, shuffle=True ) eval_dataset=pdx.datasets.ImageNet( data_dir="strawberry/crops", file_list="strawberry/crops/val_list.txt", label_list="strawberry/crops/labels.txt", transforms=eval_transforms ) #初始化模型,并进行训练 num_classes=len(train_dataset.labels) model=pdx.cls.PPLCNet_ssld(num_classes=num_classes) model.train( num_epochs=20, pretrain_weights="IMAGENET", train_dataset=train_dataset, train_batch_size=64, eval_dataset=eval_dataset, lr_decay_epochs=[5, 10, 15], learning_rate=0.01, save_dir="output/pplcnet-crops", log_interval_steps=10, label_smoothing=.1, use_vdl=False)#最后训练数据: [TRAIN] Epoch 20 finished, loss=0.41098955, acc1=0.9869792, acc4=1.0 . [INFO] Start to evaluate(total_samples=111, total_steps=2)... [INFO] [EVAL] Finished, Epoch=20, acc1=0.963098, acc4=1.000000 . [INFO] Current evaluated best model on eval_dataset is epoch_2, acc1=0.984375 [INFO] Model saved in output/pplcnet-crops/epoch_20.三、模型预测
测试数据#模型预测,并预测结果写入csv文件 import paddlex as pdx import matplotlib.pyplot as plt import matplotlib.image as mpimg #创建推理对象 predictor=pdx.deploy.Predictor("output/pplcnet-crops/inference_model",use_gpu=True) res=[] #存放预测结果 #遍历测试数据文件夹 for f in os.listdir(os.path.join(basedir,"test")): fname=os.path.join(basedir,"test",f) img=mpimg.imread(fname) result=predictor.predict(img) #print(f,classnames[int(result[0]["category"])]+":"+str(result[0]["score"])) res.append([f,classnames[int(result[0]["category"])]]) #结果写入csv文件,加表头 import pandas as pd pd.DataFrame(res).to_csv(os.path.join(basedir,"submit.csv"),index=False,header=["image","label"])
6s备用机升级15系统桌面布局心动的瞬间6s备用机升级15系统桌面布局昨晚刚给用了很久的小6s从11系统大跃进升到了iOS15以前一直没升级过除了下载的时候很烫以外升级后丝滑升级系统换了新手机壳钢化膜新的壁纸可
液晶拼接屏逐渐迈向大众化随着科技的快速发展,高清技术是显示大屏的主要发展方向。在未来的发展,液晶大屏的应用将会越来光广泛,如办公会议商用显示等场合都会转向高清时代,在此人们也在不断提出更高的要求,而高清液
SpringBoot项目鉴权的4种方法文章介绍了springboot中实现通用auth的四种方式,包括传统AOP拦截器参数解析器和过滤器,并提供了对应的实例代码,最后简单总结了下他们的执行顺序。前言最近一直被无尽的业务
每日一题移动零(双指针)题目给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。解题(Java)classSolut
老年人怎么购买新智能手机现在越来越多的老年人开始购买新的智能手机了,大部分老年人觉得购买新智能手机要比子女换新后退下了的智能手机要好,可是自己买新智能手机的时候又觉得不能卖的太贵了,新的怎么也比旧的强,买
2022年性价比最高的手机推荐一,购机指南1处理器(处理器是手机的核心部位,处理器越好,手机越流畅。)旗舰处理器骁龙8Gen1高通骁龙888Plus麒麟9000苹果A15中高端处理器骁龙865骁龙865骁龙87
Lazada将开启预售政策,亚马逊美国站增添新功能2。14跨境早报新闻直通车01hrLazada发布新公告,平台将对本土卖家开启预售政策。目前该政策处于测试阶段,第一批仅限官方孵化群内的卖家参与,不限制站点,后期会逐步向符合要求的卖家开放。2月1
2。用end结束代码不少编程语言,循环判断代码块需要用end标明结束,这样在一定程度上会使代码逻辑更加清晰。但是其实在Python这种严格缩进的语言里并没有必要这样。如果你想用,也是可以的,具体看下面
明起汽车消费可申领补贴啦本报讯(记者李静)2月15日起,我市晋情消费悦享生活汽车消费补贴可申领啦!只要是1月29日起从我市各汽车销售商处购置国六标准及以上乘用车微型或轻型货车的个人消费者,均可通过云闪付A
元宇宙新鲜事网易音乐理想汽车申请元宇宙商标被驳回啫喱暂停新用户进入财联社区块链日报14日讯今日元宇宙新鲜事有米哈游宣布创立元宇宙品牌HoYoverse元宇宙社交APP啫喱暂停新用户进入网易音乐元宇宙及理想汽车元宇宙商标申请被驳回。原神开发商米哈游
未来行程少不了新能源手机导航除了输入目的地,点击导航,告诉你左转右转这种最基本的用法之外,其实还有一些挺实用的小功能小技巧。就好像说蛋炒饭,除了把鸡蛋和米饭一起倒在锅里,chuachuachua这么炒