微软Microsoft Azure 机器学习工作室的案例之Image Classification using DenseNet
点击上方蓝字
关注我们
(本文阅读时间:10分钟)
Microsoft Azure Machine Learning Studio是微软强大的机器学习平台,在设计器中,微软内置了15个场景案例,但网上似乎没有对这15个案例深度刨析的分析资料,所以我就计划写一个系列来完成。
既然是深度刨析,就不再是简单的介绍操作,而是深入每一个细节,宁愿过度详细扩展,也不简单扫过。
微软MVP实验室研究员
这次我们刨析的案例是:使用 DenseNet 进行的图像分类。
预备知识
▌PIL
Python Image Library,是 python 的第三方图像处理库,PIL 库支持图像存储,显示和处理,几乎能够处理几乎所有的图片格式,所以已经算得上是 Python 平台事实上的图像处理标准库了。但是由于 PIL 仅支持到 Python 2.7,所以在3.X Python下,你应该使用 PIL 的硬分叉 Pillow ,由于 Pillow 兼容 PIL 的绝大多数语法同时因为 PIL 的巨大影响力,所以我们一般还是叫 PIL 图片处理。还有一点要注意 Pillow 和 PIL 不能共存在相同的环境中。
使用PIL可以帮我们对训练样本进行扩充,这意思就是使用PIL库对样本文件随机调整大小的裁剪、随机裁剪、随机水平翻转、随机垂直翻转、随机旋转、随机仿射、随机灰度、随机透视、随机擦除。▌DenseNet密集连接的卷积网络(Densely Connected Convolutional Networks),一种监督学习的分类算法。在 DenseNet 出现之前,CNN 的进化一般通过层数的加深(ResNet)或者加宽(Inception)的思想进行,。2017年的 DenseNet脱离了加深网络层数(ResNet)和加宽网络结构(Inception)来提升网络性能的定式思维,从特征的角度考虑,通过特征重用和旁路(Bypass)设置,既大幅度减少了网络的参数量,又在一定程度上缓解了梯度消亡(gradient vanishing)问题的产生。结合信息流和特征复用的假设,DenseNet当之无愧成为2017年计算机视觉顶会(CVPR)的年度最佳论文(Best Paper)。简单的说,在DenseNet之前,有一个问题:有没有一种方法可以让网络又深梯度又不会消失?DenseNet给出了一个简单优雅的答案:直接通过将前面所有层与后面的层建立密集连接来对特征进行重用来解决这个问题。作者主要提出了四种网络架构分别是DenseNet121、DenseNet169、DenseNet201以及DenseNet264,现在已经有了大概11中网络架构,densenet121, densenet161, densenet169, densenet201, resnet18, resnet34, resnet50, resnet101, resnet152, vgg16, vgg19。Microsoft Azure Machine Learning Studio 提供的是原始恶4种网络结构,一般我们选择 DenseNet201 或者 DenseNet169。▌PyTorch
pytorch是一个基于Python的科学计算包,它主要有两个用途:
类似于Numpy但是能利用GPU加速
一个非常灵活和快速用于深度学习的研究平台
深入分析
这个节点是数据的输入,核心有两个信息
Datastore name:azureml_globaldatasets是一个链接,点击可以跳转到数据存储的位置
Relative path:描述在Datastore中当前文件的位置,默认是Images/Animals_Images_Dataset