图片识别是属于分类问题,例如工业设备运行工况,包括正常、供液不足等等数据分析图,用计算机模拟人学习分析图像,首先需要收集待学习的图片,并对图片进行分类管理,对于这些分类需要在计算机文件系统上分别建立目录,把对应分类的图片存储到相应的目录下,由于有些Python工具对中文支持的不好,建议最好直接使用数字建立目录,便于操作并省去麻烦。
对于训练学习的图片,考虑计算资源及响应速度等要求,要求图片尽可量的小,使用有限的像素表述清楚特征供计算机学习就足够了。
Python学习交流群:1004391443,这里是python学习者聚集地,有大牛答疑,有资源共享!小编也准备了一份python学习资料,有想学习python编程的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。
目前,图像识别主要是自然景物,例如人脸、动物、物体等方向等识别,而对于决策分析等方向的图表分析,几乎是空白,通过研究、实践总结出一点小经验,分享一起讨论。
工业大数据、人工智能中,有决策分析等方向等需求,例如学习人类看曲线图、饼图、直方图、帕特图等等。这类图像有个共同的特点,有坐标系!
坐标系是非常重要的参照特征,下面通过实验来进行验证。
- 创建目录
目录样式如下:
在这里插入图片描述
示例代码如下:
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
- 从数据库中提取绘图数据
略。
- 绘制图形并保存为图片
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,对预测结果没有(显著)影响。
网友评论