Python库多如牛毛,但是不得不说有一些库他妈的奇坑
搞DL?选择一个图像处理库吧
有时候我搞不懂为什么现在很多人搞深度学习一上来就研究CNN,RNN,这些可以说是最简单的,真正细节的东西你直接就忽略了。你可能会否认,那我问你一个很简单的问题?VGG官方的版本对图片是怎么进行预处理的?如果我改变一种预处理方式准确率会发生什么样的变化?
这些问题很少有人思考,或者说,大佬们做东西从来不讲究这些细节问题,我敢说他们自己也没有研究,夏菊巴乱搞了一同就说这个牛逼,这个可以搞。
那作为一个饮水思源,喜欢刨根问底的人,也可以理解我智商比较低,我搞不明白那么高大上的东西,咱能不假大空,老老实实一步一步搞东西么?这就是说为什么现在深度学习这么浮夸,不像我们写一个程序,一五一十的一步步来,啥事都有一个标准,你标准不对了就搞不成。所以现在DL面临的一个问题是过于分散,你看聚吧一个图像分类的东西,至少有上千种实现方法,我说的方法不同定义在除了网络以外,包括库的不同,预处理的不同,以及其他很多不同。没有人思考过或者写过这些东西。今天我就说一下把。
如果你喜欢skimage,那么请不要看下去了,我不喜欢skimage
很多人用过scikit-learn这个库,觉得很简单,机器学习超级简单,一个函数就可以解决,确实是,机器学习方法本来就是一个函数的事情。由此很多人推断出skimage这个框架也应该很牛逼。但是,根据我的实际使用,skimage功能确实丰富,我们来看一段代码:
image = skimage.io.imread('dog.jpg')
skimage.io.imshow(image)
plt.show()
这是skimage读取图片并显示,要三行代码,这尼玛能叫python库?能两行代码解决的问题你就不要三行好么?再来看看PIL:
image = Image.open('dog.jpg')
image.show()
就两行。很多人就会说了,你个无脑喷子,知道skimage的强大么?我没有说过这个观点,skimage确实很丰富我前面提到过,但是请允许我邀请大家多运行一下skimage的这个函数:
# 没有错,还必须导入这么一堆,不然没有方法提示
from skimage import io, transform
skimage.transform.rescale((80, 80))
我他妈MacbookPro直接死机了好吗?沃日,不要问我为什么喷skimage了,垃圾垃圾垃圾垃圾,草尼玛,skimage毁我人生,葬送我清纯。。。。此处省略一万个蔡妮马。。
你心中的目标
喷完了,我们改思考一下为什么一个图像预处理工具很重要了。很多人说opencv也可以啊,opencv非常快,强大,但是要编译,你很少在一个裸机上能够找到它,PIL就是 pip install pillow的事情,而且PIL是python默认官方的图片处理库了。我们pythoner以简约为上,我最看不惯很多人写python代码跟写c++ c# 似的。
选好了一个预处理库,以后进行深度学习网络搭建之前先想好自己怎么处理吧
不仅是处理,想好为森么这么处理。这也是本文的目标,个人炸鸡,轻拍。