点击azureml_globaldatasets将跳转到Datastore浏览器,您可以在这个浏览器下观察到您存储的数据。大致的界面如下

点击这些图片可以预览
Cat:前缀为0的是各种喵星人的玉照,各种颜色,各种卖萌。其中还有一只和人类一起同框的一脸惊讶的黑色喵星人。(10张图片)
Dog:前缀为1的是汪星人,同样是各种姿态各种萌。(10张图片)
Frog:前缀为2的生物以我浅薄的生物知识我一下子无法归纳,不知道是青蛙,还是癞蛤蟆还是蟾蜍。反正就是蛙类生物就行了。(10张图片)
合计一共30张图片样本。这些文件在存储的时候是以如下命名结构方式存储:
Your_image_folder_name/Category_1/xxx.pngYour_image_folder_name/Category_1/xxy.jpgYour_image_folder_name/Category_1/xxz.jpeg
Your_image_folder_name/Category_2/123.pngYour_image_folder_name/Category_2/nsdf3.pngYour_image_folder_name/Category_2/asd932_.png
文件夹的名称被视为图像分类等任务的标签。目前支持“.jpg”,“.jpeg”,“.png”,“.ppm”,“.bmp”,“.pgm”,“.tif”,“.tiff”,“.webp”类型文件,可以在一个文件夹中拥有多种类型的图像。不必在每个类别文件夹中包含相同数量的图像。
对了,你还可以使用扩展名为“.zip”,“.tar”,“.gz”和“.bz2”的文件夹或压缩文件。▌Convert to Image Directory节点
将图像数据集转换为“图像目录”数据类型,这是 Azure 机器学习设计器中的图像分类等与图像相关的任务中的标准化数据格式。
这个节点是把所有的图片文件放到一个目录下,不在通过目录名称将图片分类
但会用images.lst的文件描述了图片的标签,类似这样的信息
{"image_info": {"file_name": "image/1_134.jpg"}, "category": "dog", "id": 134}{"image_info": {"file_name": "image/0_91.jpg"}, "category": "cat", "id": 91}{"image_info": {"file_name": "image/0_74.jpg"}, "category": "cat", "id": 74}{"image_info": {"file_name": "image/0_60.jpg"}, "category": "cat", "id": 60}{"image_info": {"file_name": "image/0_14.jpg"}, "category": "cat", "id": 14}{"image_info": {"file_name": "image/1_197.jpg"}, "category": "dog", "id": 197}{"image_info": {"file_name": "image/1_172.jpg"}, "category": "dog", "id"
: 172}
这个工作你可以看成是Convert to Image Directory组件将指定位置的图片读取并输入给之后的处理。
Split Image Directory节点有两个,分布用于训练模型和验证
这两次拆分非常重要,请认真理解两次拆分的目的。经过这两次拆分,真正最后用于测试的样本占比在81%。
▌Init Image Transformation节点初始化图像转换是一个非常重要的工作,因为采集大量的图片样本是一个成本很高的工作,所以通过将PIL图片做各种变形转换,相当于我们又给样本集加入了很多样本。比如我们对原始图片进行放大,缩小,裁剪部分,旋转,变成黑白等等。要注意的是,Init Image Transformation对我们刚才拆分的三份样本都做了转换,这样我们就得到了很多新的样本。图像转换就是使用PIL帮助我们完成。对图像做大量随机转换,是图像机器学习种重要初始化工作,图片样本进行了大量的扩充后才提交给DenseNet训练。▌Apply Image Transformation节点我们存储图片的目录也有了,转换图片的能力也有了,现在可以通过Apply Image Transformation指出每一个目录如何使用Image Transformation。我们有两种定义- 用于训练(For training):被设定的目录里的图形将全面使用nit Image Transformation设置的能力。
- 用于推理(For inference):被设定的目录里的图形将排除随机创建新样本等转换。这是因为随机创建新样本(如“随机水平翻转”)的转换操作用于训练中的数据增强,这应该在推理中删除,因为推理样本需要固定以进行准确的预测和评估。
Apply Image Transformation节点有三个,分布对应了Split Image Directory拆分出的三部分图片。
有了预备知识中的DenseNet内容,你就非常容易理解这个节点的任务。使用DenseNet模型对样本进行训练。- 模型名称(Model name):内置了121、161、169和201.一般我们可以选择201或者161.
- 预训练(Pretrained):指定是否使用在 ImageNet 上预先训练的模型。建议选择True。
- 内存效率(Memory efficient):指定是否使用检查点,检查点的内存效率要高得多,但速度较慢。模式是False。
总体来说,DenseNet不需要我们做很多干预。
▌Train PyTorch Model节点
Train PyTorch Model节点要求三个输入:模型、训练数据集和验证数据集。其中模型只接受DenseNet 或 ResNet(这一点如果有错误,我以后会修正)评估模型。评估模型返回的指标取决于您正在评估的模型类型:真实情况 | 预测结果 |
正例 | 反例 |
正例 | 真正例(TP) | 假反例(FN) |
反例 | 假正例(FP) | 真反例(TN) |
- 总体准确率(Overall Accuracy):每个类别的每个准确度的平均值
- 多分类微观查准率(Micro Precision):所有类别预测对的数目/测试集的总数
- 多分类微观召回率(micro recall):所有类别预测对的数目/测试集的总数
- 宏观查准率(macro precision):该类别预测对的数目/预测为该类别的所有数目
- 宏观召回率(macro recall):该类别预测对的数目/该类别所有的数目
到这里,Image Classification using DenseNet案例的分析我们完成了,在这个过程中,我们详细的了解到各个节点的核心信息和相关的概念。从数据源、图片分类、图片预处理到训练。也同时接触到了大量的机器学习概念,本篇非常值得推荐作为Microsoft Azure Machine Learning Studio和机器学习的入门和深入读物。
在这之后,我将继续编写其他Microsoft Azure Machine Learning Studio案例。每一篇案例都可以独立阅读,因此有些概念会重复出现在每一篇中。