特征逆推图像
github: https://github.com/Gary11111/02-Inversion
研究背景
ONNX
很多优秀的视觉模型都是用caffe写的, 很多新的研究论文使用Pytorch写得,而更多的模型用TF写成,因此如果我们要测试它们就需要对应的框架环境,ONNX交换格式时我们能够在同一环境下进行不同模型的测试。
VGGNET结构py实现
13个卷积层 + 3个全连接层
卷积层
- conv2d+bias
- batchnorm正则化
- relu激活
def conv_layer(self, bottom, name, stride = 1):
with tf.variable_scope(name):
filt = self.get_conv_filter(name)
conv = tf.nn.conv2d(bottom, filt, [1, stride, stride, 1], padding='SAME')
conv_biases = self.get_bias(name)
bias = tf.nn.bias_add(conv, conv_biases)
mean = self.get_mean(name)
variance = self.get_variance(name)
offset = self.get_beta(name)
scale = self.get_gamma(name)
norm = tf.nn.batch_normalization(bias, mean, variance, offset, scale, 1e-20 )
relu = tf.nn.relu(norm)
return relu
HOG 方向梯度直方图
HOG+SVM是行人检测的主要方法
- 主要思想:在一副图像中,局部目标的表象和形状能够被梯度或边缘方向密度分布很好描述(梯度的统计信息主要集中在边缘部分)
- 具体实现方法:把图像分成很小的联通区域,称为细胞单元,然后采集细胞单元中各像素点的梯度或者边缘方向的直方图,然后把直方图组合起来构成特征描述器。
- 优点:
- HOG在图像的局部单元上进行操作,所以对图像的几何和光学形变都能保持很好的不变性,这两种形变只会出现在更大的空间领域上。
- 在粗的空域抽象、精细方向抽样以及较强的局部光学归一化等条件下,只要行人大题能够保持直立姿势,可以忽略一些细微动作带来的影响。
SIFT 尺度不变特征转化
用来侦测与描述影像中的局部特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量。
应用范围:物体辨识、机器人地图感知与导航、影像追踪、手势辨识等。
局部影像特征帮助辨识物体:
- SIFT特征是基于物体上的一些局部外观特征兴趣点而与影像大小和旋转无关,对于光线、噪声、些微视角改变的容忍度页相当高。基于这个特性,高度显著且容易撷取,在庞大的特征数据库中,很容易辨识物体且鲜有误认。
- 使用SIFT描述特征对部分物体遮蔽的侦测率页相当高,甚至只需要三个以上的SIFT物体特征就足以计算出位置与方位。辨识速度可以接近即时运算。
作业的思路
VGGNET16已经准备好(参数已经训练好了)。
- 使用原图构建一个VGG16计算图 — bottom
- 使用noise构建一个VGG16计算图
- 指定计算图的某一层,比如conv3_1, 目的就是看在这一层神经网络学到了什么内容。
- bottom在构建的时候只初始化一次,不会更新,作为noise学习的target;使用欧几里得距离来计算误差【损失函数】
- 使用ADAM作为优化器,对损失函数进行优化。
记录TF优化器内置方法
用来计算loss对val_list中每一项的偏导