kaggle猫狗大战

kaggle猫狗大战
kaggle上的猫狗大战,即对猫狗图片的分类预测,没有特征数据,只有图片,所以只能运用神经网络对其训练预测。看了大量的kaggle上的公开例子,大多运用TensorFlow或者Keras创建神经网络,因为最近在学习Torch,因此,想用Torch创建卷积神经网络进行建模预测。但整个过程遇到了很多坑,下面记录总结一下自己在第一次做图片识别时的坑。
一、数据预处理
对于图片肯定要进行预处理,不能直接输入模型,并且训练数据中图片的大小不一样,就用torchvision.datasets.Imagefolder模块加载数据,但直接加载显示文件中没有任何图片文件,顿时懵逼,明明全是图片,为什么会显示没有呢?查阅各种博客,原来要分开图片变成文件夹,也就是把训练集再分类,读取数据后Torch会对数据数据标签自动分类标数。数据预处理期间花费大量的时间精力,但感觉很值得,因为理解了Torch的数据处理的一些东西,对后期的图片识别有很大的帮助。但是考虑如何运用cv2库或者PIL库对图片进行处理再用torchvision.datasets.Imagefolder进行读取呢?后续继续研究。。。
二、网络搭建
创建CNN网络,直接用nn.Model继承类创建卷积网络,中间卷积层的参数数据比较难算,还没有特别搞清楚,直接用网上的参数设置,或者用迁移学习,用比较著名的图像识别算法。改变全连接层的参数,最后设置为2分类,效果也是比较好的。
训练模型时如果用GPU要对网络设置cuda让他成为GPU参数,还有Variable创建变量时再参数后加.cuda()转换数据,不然会出错,对预测结果也对Tensor数据转换为numpy数据如果CPU训练的模型直接加.numpy(),如果GPU训练的模型则先转换为CPU数据再转换numpy即加.cpu().numpy()。
此次猫狗大战图片识别做了好几天,实际应用和理论还是有些许脱节,代码写的比较烂就不贴代码了。。。。。

发布了9 篇原创文章 · 获赞 2 · 访问量 3082

猜你喜欢

转载自blog.csdn.net/xiaokan_001/article/details/89357497