关于2018AIchallenger植物病害程度图⽚数据集的发现
(python下根据jso。。。
最近看论⽂发现有使⽤植物病害程度来做实验的,查了⼀下,这个数据集是AI challenger在2018年的⼀个⽐赛,是将plant village的数据集,根据不同的病害程度来划分种类。
全局变量修改AI challenger病害程度数据集,开始我没有到每个标签的信息,就⾃⼰分⽂件夹,对照plant village数据集来⾃⼰打的标签(因为有些图⽚的命名和原plant village数据集的命名是⼀样的,所以能够直接搜⽂件名看再哪个⽂件夹⾥),⾃⼰总结了⼀圈下来,⼜再⽹上到了⼀个标签信息表,但是发现其中有些信息是错误的!也就是⽐赛数据的种类就分错了,虽然这个对分类是没什么影响的,但是如果⽤这个数据集做叶⽚分类的话就有影响了呀~下⾯说⼀下哪⾥错误
⾸先说⼀下知乎上的信息:
2018ai_challenger之农作物病害检测⽐赛总结 - 燕⼩花的⽂章 - 知乎
先来说下数据集的⼤概情况,官⽅前后总共发布了两次⽐赛数据集.第⼀次数据集有很多图像存在标签交叉的情况(即相同的图像存在不同的标签,特别是病害程度⼀般和严重存在交叉情况),训练图像总数为32768张,验证图像总数为4992张,测试集A图像总数为4959张;因为⽐赛社区很多⼈反馈数据交叉的现象,官⽅在⽐赛的⼜发布了第⼆次⽐赛数据,第⼆次发布的数据是对存在标签交叉部分的进⾏更新,训练图像总数为31718张,验证图像总数为4540张,测试集A图像总数为4514张,测试集B图像总数为4513张.
作者:燕⼩花
链接:zhuanlan.zhihu/p/50178745
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,⾮商业转载请注明出处。
我下载的数据集是第⼀次和第⼆次的数据集都有。整理第⼀次数据集的时候我还纳闷呢,为啥有⼏个类是重复的数据。后来第⼆个数据集把重复的去掉了。也就是标签44,45的训练集测试集都变成了⼀张图(44,45和标签52,53重复!)
但是第⼆次数据集依然没有解决三个问题:1、就是标签33,详细信息上说它是马铃薯健康叶,但其实
是⼤⾖的健康叶。⽽原数据集其实是有马铃薯健康叶的(不知道为什么会犯这种错误)2、标签42,43是南⽠的⽩粉病,却被归类到番茄的⽩粉病!3、标签16说是⽟⽶花叶病,但是图⽚是⽟⽶的健康叶⽚,不同的是16⾥的图⽚属于plant village数据集,是实验室采集图,⽽9是在⽥⾥采集的图,⽽且有的还虚焦了很模糊。
以上就是我对AI challenger这个病害数据集的质疑了~有没有同样有疑惑的⼩伙伴呢?
下⾯对数据集的下载地址,和对数据集的整理代码进⾏说明。
数据集在这个博主的⽂末给出了百度云⽹盘,有训练集验证集和测试集,测试集没有标签,所以⾃⼰实验⽤的话只能使⽤训练集和验证集了。
根据python操作json⽂件、创建⽂件夹、复制⽂件的相关博客,写了本⽂的代码来处理数据,参考博客分别是:python解析json文件
python数据分析之json⽂件:
python创建⽂件和⽂件夹:
Python⽂件名匹配,⽂件复制:
以训练集⽂件夹为例,先说⼀下⽬录结构
——ai_challenger_pdr2018_trainingset_20181023
————AgriculturalDisease_trainingset
——————images
——————AgriculturalDisease_train_annotations
在AgriculturalDisease_trainingset⽂件夹下创建⼀个新的class⽂件夹和⼀个demo.py⽂件
——ai_challenger_pdr2018_trainingset_20181023
————AgriculturalDisease_trainingset
——————images
——————AgriculturalDisease_train_annotations
——————class
—
—————demo.py
redis模式配置下⾯在demo.py⽂件中写⼊⼀下代码运⾏:
import json
import os
import shutil
def mkdir(path):
folder = ists(path)
if not folder: #判断是否存在⽂件夹如果不存在则创建为⽂件夹
os.makedirs(path) #makedirs 创建⽂件时如果路径不存在会创建这个路径 #print("--- ---")
# print("--- OK ---")
#else:
#print("--- There is this folder! ---")
source_dir='./images/'
img=os.listdir(source_dir) #得到⽂件夹下所有⽂件名称
with open("AgriculturalDisease_train_annotations.json",'r') as load_f:
load_dict = json.load(load_f)
#print(load_dict)
for pop_dict in load_dict:
path="./class/"+str(pop_dict['disease_class'])
mkdir("./class/"+str(pop_dict['disease_class'])) #根据类别创建⽂件夹
html带滚动文本框代码#print(path)
for fileNum in img:
if not os.path.isdir(fileNum): #判断是否是⽂件夹,不是⽂件夹才打开
if fileNum == pop_dict['image_id']:
print(fileNum) #打印出⽂件名
imgname= os.path.join(source_dir,fileNum)
ant下载
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论