下面我们会做这三个步骤,以体现从头开始和使用预训练的网络之间的差异,同时也展示如何使用 Caffe 和 DIGITS 上最常用的两个预训练的网络 AlexNet、 GoogLeNet。 对于我们的训练,我们将使用一个海豚(Dolphins)和海马(Seahorses)图像的小数据集。这些图像放置在 data/dolphins-and-seahorses。你至少需要两个类别,可以更多(有些我们将使用的网络在 1000 多个类别上进行了训练)。我们的目标是:给我们的网络展示一张图像,它能告诉我们图像中的是海豚还是海马。 准备数据集 dolphins-and-seahorses/ dolphin/ image_0001.jpg image_0002.jpg image_0003.jpg ... seahorse/ image_0001.jpg image_0002.jpg image_0003.jpg ... 最简单的开始方式就是将你的图片按不同类别建立目录: 在上图中的每一个目录都是按将要分类的类别建立的,所建文件夹目录下是将以用于训练和验证的图片。 问:所有待分类和验证的图片必须是同样大小吗?文件夹的命名有影响吗? 回答都是「否」。图片的大小会在图片输入神经网络之前进行规范化处理,我们最终需要的图片大小为 256×256 像素的彩色图片,但是 DIGITS 可以很快地自动裁切或缩放(我们采用缩放)我们的图像。文件夹的命名没有任何影响——重要的是其所包含的图片种类。 问:我能对这些类别做更精细的区分吗? 当然可以。详见 https://github.com/NVIDIA/DIGITS/blob/digits-4.0/docs/ImageFolderFormat.md。 我们要用这些图片来创建一个新的数据集,准确的说是一个分类数据集(Classification Dataset)。
我们会使用 DIGITS 的默认设置,并把我们的训练图片文件路径设置到 data/dolphins-and-seahorses 文件夹。如此一来,DIGITS 将会使用这些标签(dolphin 和 seahorse)来创建一个图像缩放过的数据集——图片的大小将会是 256×256,其中 75% 的为训练图片,25% 的为测试图片。 给你的数据集起一个名字,如 dolphins-and-seahorses,然后鼠标点击创建(Create)。
通过上面的步骤我们已经创建了一个数据集了,在我的笔记本上只需要 4 秒就可以完成。最终在所建的数据集里有 2 个类别的 92 张训练图片(其中 49 张 dolphin,43 张 seahorse),另外还有 30 张验证图片(16 张 dolphin 和 14 张 seahorse)。不得不说这的确是一个非常小的数据集,但是对我们的示范试验和 DIGITS 操作学习来说已经足够了,因为这样网络的训练和验证就不会用掉太长的时间了。 你可以在这个数据库文件夹里查看压缩之后的图片。
训练尝试 1:从头开始 回到 DIGITS 的主页,我们需要创建一个新的分类模型(Classification Model):
我们将开始用上一步所建立的 dolphins-and-seahorses 数据集来训练模型,仍然使用 DIGITS 的默认设置。对于第一个神经网络模型,我们可以从提供的神经网络架构中选取一个既有的标准模型,即 AlexNet。AlexNet 的网络结构在 2012 年的计算机视觉竞赛 ImageNet 中获胜过(ImageNet 为计算机视觉顶级比赛)。在 ImageNet 竞赛里需要完成 120 万张图片中 1000 多类图片的分类。 (责任编辑:本港台直播) |