白癜风工程 http://m.39.net/pf/a_4480890.html
Python基于resnet32网络—实现智能岩样识别(一)
“Lifeisshort,youneedPython”
在使用pytorch框架搭建resnet32网络之前,我们首先要把数据进行预理,转换成resnet网络可以处理的数据格式。
一:数据形式
首先介绍一下我们的数据格式,数据为图片类别,分为bmp和jpg两种类型,现有样本数据是采用工业相机在录井现场对岩屑和岩心样品进行拍照所得到的数据。共有张图片,如下图所示:
图片数据:
图片数据对应的标签如下:
其中图片数据中所有种类的样本都混在一起,而我们resnet网络所需要的数据格式目录如下所示:
--data
--train
--classA
--classB
.
--test
--classA
--classB
因此我们需要将每一类的样本对应的图片按照对应的标签进行分类。
二:数据处理
1将样本类别由文字映射至数字
比如:深灰色泥岩—0
这里我们使用字典来实现:
importpandasaspd
a_dict={深灰色泥岩:0,黑色煤:1,灰色细砂岩:2,浅灰色细砂岩:3,深灰色粉砂质泥岩:4,灰黑色泥岩:5,灰色泥质粉砂岩:6}input_file=pd.read_csv(rock_label.csv,encoding=gbk)#读取标签文件,文件编码为gbk格式data=pd.read_csv(rock_label.csv,encoding=gbk)forkey,valueina_dict.items():input_file=input_file.replace(key,value)print(input_file.iloc[:,1])data[分类]=input_file.iloc[:,1]#将数字映射写至csv文件的label列data.to_csv(rock_label0.csv,mode=a,index=False,encoding=utf-8)#将数据写入rock_label0.csv文件,编码为utf-8形式2.将相应的样本编号及样本类别对应的图片名也保存到csv文件:
importpandasaspdimportglob#glob模块的主要方法就是glob,该方法返回所有匹配的文件路径列表(list);fromnatsortimportnatsorted#自然数排序库data=pd.read_csv(rock_label0.csv,encoding=gbk)name=[]#由于glob读取文件路径时不是按照文件的顺序读取,因此这里我们使用natsorted对读取的路径进行自然数排序forimage_file_nameinnatsorted(glob.glob(../Rock/*-1.*)):name.append(image_file_name)data[name]=pd.DataFrame(name)#将数据写入到rock_label1.csv,编码为gbk形式data.to_csv(rock_label1.csv,mode=a,index=False,encoding=gbk)
处理完成后csv文件数据如下:
3.最后我们将图片根据标签来分到不同的文件夹
importpandasaspdimportosimportshutil#用于移动文件#打开表格文件并读取f=open("rock_label1.csv","rb")#输入表格所在路径+名称list=pd.read_csv(f,encoding=gbk)#创建文件夹a_dict=[深灰色泥岩,黑色煤,灰色细砂岩,浅灰色细砂岩,深灰色粉砂质泥岩,灰黑色泥岩,灰色泥质粉砂岩]foriina_dict:os.mkdir(str(i))#文件名称依次为a_dict中的名字#进行分类foriinrange(0,7):listnew=list[list["分类"]==i]l=listnew["name"].tolist()j=a_dict[i]foreachinl:shutil.move(each,j)
实现的效果:
--------------------------------------------------------------
到此为止我们的数据预处理就完成了。
最最重要的就是数据了,若想要获取数据,请私信小编哦
大家读完顺手点个右下角的“在看”就是对小编的鼓励和支持了。
预览时标签不可点收录于话题#个上一篇下一篇