python图像识别算法_用101000张图片实现图像识别(算法的实现和流程)-python-tensorflow框架...

一个月前,我将kaggle里面的food-101(101000张食物图片),数据包下载下来,想着实现图像识别,做了很长时间,然后自己电脑也带不动,不过好在是最后找各种方法实现出了识别,但是准确率真的非常低,我自己都分辨不出来到底是哪种食物,电脑怎么分的出来呢?

在上一篇博客中,我提到了数据的下载处理,然后不断地测试,然后优化代码,反正过程极其复杂,很容易出错。

再说下代码流程吧:

关于数据集的处理,我上篇博客写道:将其灰度处理,实际上是应该二值化,将彩色图片转化为(0,1)的范围里面,首先是读取每一个文件的数据(这里的每张图片都有一个标签),然后将其随机分为80%的训练集,20%的测试集:

for filename indir:

img= np.multiply(img, 1.0/255.0)

size= int(config.size * len(images))

这里采用循环的方式,每一张都进行二值化,然后存入列表,再根据我设置的大小进行选择。

神经网络训练,我将图片二值化后,下一步需要将我得图片数据传入我得训练中,循环训练,分批传入,我采用卷积操作实现其识别:

defjj():

conv= tf.nn.relu(tf.nn.conv2d(input, filter, [1, 1, 1, 1], padding="SAME")+b)

pool= tf.nn.max_pool2d(conv, [1, 2, 2, 1], [1, 2, 2, 1], padding="SAME")

我这里采用的是相同大小卷积,所以我在全连接层的地方就需要注意我的神经元个数,最后通过激励函数得出结果。

prediction = tf.nn.softmax(fc2,name="y_pred")

loss= tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=fc2,labels=labels_batch))

optimizer= tf.compat.v1.train.AdamOptimizer(learning_rate=1e-4).minimize(loss)

correct_prediction= tf.equal(tf.argmax(prediction,1), tf.argmax(labels_batch,1))

accuracy= tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

数据训练的方法:当我们建立神经网络后,需要让机器自动去训练,所以我们需要将模型保存在电脑中,同时需要电脑能够停止训练(当损失函数的值处于某一最小值的时候)。

if loss < 0.01:print("迭代收敛,结束训练")break

这里我们上传数据为50一个批次,具体多少按照自己处理。

服务器中跑代码时,需要注意的是肯定需要大型cpu/gpu计算机,不然容易崩溃,然后也没有什么需要注意的地方了。

其实每个神经网络的训练处理方式都不一样,但是大致流程都差不多:数据处理-网格搭建-数据训练-网格优化。根据自己数据的不同和侧重点不同,需要建立不同的卷积算法。

总结下遇到的问题:

图片处理:在处理图片的时候我发现有的图片格式,大小,色彩都不相同,所以我在这里将其分类和处理,主要是分开除黑白图和彩色图

defimage(url):

im=Image.open(url)

pix=im.convert('RGB')

width=im.size[0]

height=im.size[1]

type="黑白Image"is_color=[]for x inrange(width):for y inrange(height):

r,g,b=pix.getpixel((x,y))

r=int(r)

g=int(g)

b=int(b)if (r==g) and (g==b):pass

else:

type='彩色 Image'

return type

数据处理其实是这里面最好做的。

在神经网络搭建中,需要避免过拟合和欠拟合的问题,图片数据不能太少,同时神经元不能太多,需要考虑到多个问题,以及卷积操作的方式,这里都需要自己摸索

虽然大型服务器好用,但是贫民学生不配拥有,借用个服务器真是太难了,真的太难了!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值