引言

图像分类一直是神经网络的重要应用,热度居高不下,但是其相对复杂的代码量以及复杂的调试让很多小白望而却步。

其实,Mathematica里面内置的Classify功能可以极其简单的实现这样的功能,直接展示如下

图像分类的代码 图片分类代码_分类

代码解释

  • 第一行使用FileNames,第一个参数是文件后缀,用来确定文件类型,第二个参数是绝对路径,获得所有文件的名字。
  • 第二行**Map[Import,filename]**是为了导入数据,即将第一行代码载入的名字对应的图片加载到mathematica内核里面。
  • 第三行Import函数加路径,以及格式“List”,因为List格式可以操作,0818.txt是我对文件夹下的图片依次做的标记,每一行做的标记与第一行存放图片的文件夹下的图片一一对应。(我读空间物理研究生,这些标记其实都是电离图是否有偶发E层与扩展F以及是否存在遮蔽现象,不展开叙述)

图像分类的代码 图片分类代码_人工智能_02

  • 第四行FeatureExtraction是为了提取特征,减少电脑负荷,第一次没用这个特征提取,跑了20多h之后直接提示内存不够用。
  • 第五行是重点,Classify功能里面,用箭头将图像与标记建立对应,同时规定特征提取FeatureExtractor是feTrainingProgressReport为**“Panel”**是为了规定如何显示进度条,这个可以不要。
  • 第六行、第七行就可以用第一行和第二行的导入图片的方法,导入未被标记的图片啦!!!
  • 第八行,Classify功能自己命名的函数esesf,就可以训练啦。

不用调参,只需耐心等待,本人电脑8G内存,跑起来真的是其余功能完全不可以使用,CPU长期98%使用率,中途还崩了两三次。不过最后在我的不懈坚持以及分配了虚拟内存之后,跑了近30小时,终于出结果了(**五千张图,近1个G,**同时mathematica又是出奇的慢)

**正确率80.8%**多,其实还好,还有很大的提升空间。

图像分类的代码 图片分类代码_分类_03

建立电脑配置更低的uu,谨慎使用以及小心选择你的数据量