计算机视觉

图像分类

MNIST 数字分类

使用卷积神经网络在手写数字的 MNIST 数据库上培训数字识别.
首先,获取培训和验证数据:
定义接受 28×28 灰度图像作为输入的卷积神经网络:
为 3 轮培训培训网络. NetTrain 会使用提供给解码器的同样的类自动附加 CrossEntropyLossLayer
直接在从验证集合中随机采样的图像上培训网络:
获取特殊输入的所有类的概率估计:
使用 NetMeasurements 测试在测试集上被训练的网络的分类性能:

CIFAR-10 对象分类

使用标签图像的 CIFAR-10 数据库,培训卷积网络预测每个对象的类. 首先,获取培训数据:
提取唯一的类:
创建卷积网络预测给定图像的类:
在训练数据上培训网络:
为一组图像预测最可能的类:
对于指定的范例,给出最可能的标签分配概率:
从随机样本中选择图像,其中神经网络会产生最高和最低熵预测. 高熵输入会被诠释为其中的网络对于正确的类大部分是不确定的:
学习嵌入
学习 MNIST 数据集中数字的嵌入.
首先,导入数据并只接受标签在 0 与 4 之间的范例:
通过采用图像对创建培训集,如果标签不同,则用 True 关联,标签相同,则用 False
定义卷积网络并用作嵌入网络:
构建嵌入网络:
培训网络:
把网络应用于数字对列表中并在嵌入中计算距离. 带有同样标签的数字具有小距离:
提取嵌入网络:
计算数字的嵌入:
采样 500 数字并按标签分组:
计算它们的嵌入并绘图. 同样标签下的数字在学习嵌入下被聚类:
样式传递
用一个图像的内容和另一图像的样式创建一个新的图像. 该应用遵循 Gatys et al., "A Neural Algorithm of Artistic Style" 中描述的方法.
范例内容和样式图像:
创建这些图像的混合,通过获取预培训的图像分类网络开始:
获取将被用作样式和内容图像的特征提取器的层:
使用了三个损失函数. 第一种损失确保合成图像的内容类似于内容图像:
第二种损失确保合成图像的样式类似于那幅样式图像. 样式类似性被定义为输入和目标间的 γ 矩阵的均方差:
第三种损失确保合成图像中相邻像素的强度幅度变化较小. 这样可以使合成图像看上去更自然:
定义一个函数为任何内容和样式图像创建一个最后培训网络. 该函数也创建一个随机初始图像:
为可视化预测图像创建一个 NetDecoder
培训数据包括来自于内容和样式图像的特征提取. 定义一个特征提取函数:
创建一个培训集包括内容和样式特征的单个范例:
创建一个培训网络,它的输入维度对应于内容和样式图像的维度:
当培训时,三种损失的权重是不同的,以设定内容和样式的相对重要性. 这些值可能需要使用不同的内容和样式图像进行更改. 创建一个损失指标,将最终损失定义为三种损失的组合:
使用 NetTrain 优化图像. LearningRateMultipliers 冻结网络中的所有参数,除了 NetArrayLayer. 培训最好是在 GPU 上进行,用 CPU 培训会使用 1 个多小时才会获取好的结果. 可以通过 Evaluation Abort Evaluation 在任何时候停止培训:
从培训网络的 NetArrayLayer 提取最终的图像:
语义分割(像素分类)

玩具文本数据集上的语义分割

训练一个网络,将字词图像中的每个像素分类为背景的一部分或者字母 a 至 z 之一的一部分.
首先,产生培训好测试数据,包括字词图像和对应的标签每个像素的掩膜整数矩阵:
获取类的数目:
为每个类索引分配颜色:
获取培训集中输入图像的随机样本:
可视化单个范例的掩膜数组,其中每个颜色表示一个特殊的类:
定义一个卷积网络,接受一幅图像并返回图像中每个像素的概率向量:
推荐 GPU 培训,因为 CPU 培训会花近一个小时. 培训网络:
创建一个预测函数给出每个像素最可能的类索引:
根据测试集预测图像的像素类:
绘制范例的实际目标掩膜:
获取某种类的特殊像素的概率排序列表:
定义一个函数,光栅化一个字符串,然后应用到培训的网络,给出对应于每个像素最可能类的索引的矩阵:
某些字符很容易与其他字符区别:
更难的其他字符:
获取测试集上培训网络的像素级精度: