美文网首页大数据 爬虫Python AI SqlPython小哥哥
使用Python Matplotlib绘制用于CNN训练图片的方

使用Python Matplotlib绘制用于CNN训练图片的方

作者: 14e61d025165 | 来源:发表于2019-06-10 15:17 被阅读2次

图片识别是属于分类问题,例如工业设备运行工况,包括正常、供液不足等等数据分析图,用计算机模拟人学习分析图像,首先需要收集待学习的图片,并对图片进行分类管理,对于这些分类需要在计算机文件系统上分别建立目录,把对应分类的图片存储到相应的目录下,由于有些Python工具对中文支持的不好,建议最好直接使用数字建立目录,便于操作并省去麻烦。

对于训练学习的图片,考虑计算资源及响应速度等要求,要求图片尽可量的小,使用有限的像素表述清楚特征供计算机学习就足够了。

Python学习交流群:1004391443,这里是python学习者聚集地,有大牛答疑,有资源共享!小编也准备了一份python学习资料,有想学习python编程的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。

目前,图像识别主要是自然景物,例如人脸、动物、物体等方向等识别,而对于决策分析等方向的图表分析,几乎是空白,通过研究、实践总结出一点小经验,分享一起讨论。

工业大数据、人工智能中,有决策分析等方向等需求,例如学习人类看曲线图、饼图、直方图、帕特图等等。这类图像有个共同的特点,有坐标系!

坐标系是非常重要的参照特征,下面通过实验来进行验证。

  1. 创建目录

目录样式如下:

在这里插入图片描述

示例代码如下:

def mkdir(path):

去除首位空格

path=path.strip()

去除尾部 \ 符号

path=path.rstrip("\")

判断路径是否存在,存在——True;不存在——False

isExists=os.path.exists(path)

判断结果

if not isExists:

# 如果不存在则创建目录,创建目录操作函数

os.makedirs(path)  

return True

else:

# 如果目录存在则不创建,并提示目录已存在

return False
  1. 从数据库中提取绘图数据

略。

  1. 绘制图形并保存为图片

3.1. 创建画板

每画一幅图片时,需要先创建新的空白画板,并定义好图片尺寸,语法自己网上百度去,这里先给出简单的样例。

plt.figure(figsize(1.92, 1.2)) # 设置 figsize 192*120

3.2. 设置画板

首先,定义最大坐标视窗。例如 plt.axis([0,4,0,50]),二维的坐标系;

其次,增加图片中网格,方便分析曲线,语句是plt.grid()。

3.3. 画图

plt.plot(x,y,color="Blue")

plt.plot(upx,upy,color="Red")

plt.plot(downx,downy,color="Red")

3.4. 保存图片

使用pythonplt.savefig()保存图片到指定目录中。

为了提高CNN的性能,最直接的是减小图片尺寸,需要把图片四周空白去掉,并保留坐标系(可以不要刻度值)。

在这里插入图片描述

在这里插入图片描述

对比效果,最后采用temp2的方案——去白边留刻度。示例代码如下:

在这里插入图片描述

3.5. 关闭画板

保存图片到磁盘中,应关闭画板(如果是少量图片,无所谓了,但是,大量图片的情况下,如果不关闭画板,则很快耗尽资源而崩溃),使用方法:plt.close()。

最后,分享关键代码片段如下:

while row < c:

tmp_data = data_X[row]

......

1.创建画板

plt.figure(figsize(1.92, 1.2)) # 设置 figsize 192*120

plt.rcParams['savefig.dpi'] = 300 #图片像素

plt.rcParams['figure.dpi'] = 300 #分辨率

默认的像素:[6.0,4.0],分辨率为100,图片尺寸为 600&400

plt.axis(ax)

plt.grid()

plt.plot(x,y,color="Blue")

plt.plot(upx,upy,color="Red")

plt.plot(downx,downy,color="Red")

去掉图片四周的空白,减少图片像数

plt.gca().xaxis.set_major_locator(plt.NullLocator())

plt.gca().yaxis.set_major_locator(plt.NullLocator())

plt.subplots_adjust(top=1,bottom=0.05,left=0.05,right=1,hspace=0,wspace=0)

plt.subplots_adjust(top=1,bottom=0,left=0,right=1,hspace=0,wspace=0)

plt.margins(0,0)

plt.show()

mkdir(str(data_Y[row]))

plt.savefig(str(data_Y[row]) + "\" + str(row)+".jpg")

紧凑图像,会改变图像尺寸,在此不适用

plt.savefig(str(data_Y[row]) + "\" + str(row)+".jpg",bbox_inches='tight')

plt.close() # 关闭画板

row = row + 1

通过CNN两层神经网络分析、测试,总结如下:

1、图像在坐标系位置准确,坐标轴、网格(grid)对预测结果没有(显著)影响;

2、图像尺寸由192×120缩减到160×100,对预测结果没有(显著)影响。

相关文章

网友评论

    本文标题:使用Python Matplotlib绘制用于CNN训练图片的方

    本文链接:https://www.haomeiwen.com/subject/eupzxctx.html