sp4.4 Face recognition Neural style transfer

人脸验证:输入照片以及id 1v1的问题看是否相符即可 这里比如需要扫描的ID卡 他1V1比对
人脸识别:拥有多人数据库,这里不需要ID卡 直接人走过来 看在不在数据库里 1v多 错误率放大N倍
 
 
一次学习one-shot learning,因为比如人脸识别 往往只有一个照片
需要通过一个样例就来学习 只有这人一张照片在数据库 现在判断来的是不是这个人
一种方法 照片--CNN--Softmax(总数据库人数 )判断是每个人的概率 但训练样本只有1个 太少了
而且会有新员工加入
 
改进方法: 关键就是学习到这个 比较函数
FaceNet learns a neural network that encodes a face image into a vector of 128 numbers.
By comparing two such vectors, you can then determine if two pictures are of the same person.
依次让来的人照片和数据库的每个照片作对比 看相似度 利用siamese网络
 
利用Siamese 网络 相当于学习了如何给图片编码 然后你平方差算就行了
这有点像word2vec啊
全连接层算出来后 假设128维
用相同的参数算出来另外一张图片 全连接层 也是128维度
这里定义两个算出来的误差 平方差
 
 
如何训练呢
 
目标函数:三元组损失函数 triplet loss
目标就是让一个人的照片算出来差异小 不同人算出来差别大
一组三张 两张同一个人的 一张另外的
α相当于间距参数 相似的照片得数小 不相似的得数大 如果所有输出都是0也满足这式子 所以让他们的差值小于一个负数 也是为了避免函数有可能让所有的都是0
 
代价函数 每次能让差值小于0 损失就是0 说明分对了
 
 
一组三张 两张同一个人的 一张另外的 需要成对的A和P 同一个人的照片
(遵循AP是一个人 N不是)随机选择的话这个原则很容易满足 一般差异都挺大的 这样学不到东西
所以尽可能要选相差小的照片 d(AP) 接近d(AN)
还要保证每个人都有多张照片 比如每个人10个照片
 
另外的方法 上述是转为三元问题
人脸验证转为二分类逻辑回归问题 关键还是这个SIAMESE网络
比如还利用上面的Siamese 网络 计算两个图片的 嵌入 比如128维
对这两列再用个逻辑回归
用蓝的或者绿的公式算都可以
到时候只用计算新进门的人 进来个新人 丢进去算这128维就行了
 
人脸识别:
从数据库找到和他距离最小的图片 整个循环一遍 然后看和数据库图片的最小距离是否满足 阀值
 
 
神经风格迁移:
深度卷积到底在学习什么 刚开始卷积出来是简单的线条 深层部分 识别出更复杂的部分
 
可视化神经网络
 
风格转换的代价函数:判断生成图像的好坏 这里需要定义两个
Jcontent表示生成图片G的内容与原内容C多相似
Jstyle表示生成图片G与风格图片S的相似度
 
先随机生成一个图片 然后一直迭代
 
内容代价函数:用一个训练好的比如VGG 算出在某一层(也是试的)的相似度 作为代价
 
 
 
 
 
风格代价函数:如何定义风格 其实就是个GRAM矩阵 这里定义为某层各个通道之间的相关度
他其实算的时候 算了好几层的 不只一层
假设5个通道数 比如看红色和黄色之间关联度 这两面数字之间关联度
比较 生成图片 这两层的关联度 看这两组是否接近
 
别忘了 神经网络算的是下图这样的 在网络初期 他其实每层 对应整个图片一块最初的纹理之类的
如果这两小块一直同时出现 证明 这两种材质也是同时出现吧 在更深层次映射
 
当一个通道检测出的比如垂线 另一个通道橙色 同时出现或者不出现的频率
定义两个阵,风格的a 得出的G
 
 
自己乘自己
 
 
 
 
 
整个流程
 
 
 
CNN关于1维 3维的 之前几周学的都是二维的
心电图可以看成一维的 时间序列 也可以用RNN LSTM
 
 
数据本身是三维的 看成无数二维组合 一层一层切片
过滤器也是三维的

猜你喜欢

转载自www.cnblogs.com/hellodantong/p/9965260.html
今日推荐