2015CVPR:MatchNet_ Unifying Feature and Metric Learning for Patch-Based Matching

主要是基于patch的图像特征匹配,基于patch的论文有很多了,例如:

Learning to Compare Image Patches via Convolutional Neural Network(也是15年CVPR)

Image Patch Matching Using Convolutional Descriptors with Euclidean Distance

于是打算利用keras实现,但是没有利用这些论文都使用的benchmark data,即含有3个子set的patchdata:Multi-view Stereo Correspondence Dataset

大体上说,这些文章的思路都是利用一对CNN来提取一对图像特征,然后通过欧氏距离(经典如Saimese网络)或者通过全连接网络(Matchnet)来实现特征的对比,最后通过交叉熵函数来完成优化。

论文很好懂,然后文中也有作者训练好的caffe模型,但是并没有训练过程,所以借此机会利用keras练练手。

先说遇到的问题,keras(0.8.2的theano和1.0.7的keras,目前最新大约是0.9的theano和2.0的keras)利用GPU时总是出现损失为NAN的情况,一开始以为是参数问题,所以修改了权重初始化和Dropout等网络结构,发现任然如下图:

而且当我跑keras自带的examples:mnist_cnn时竟然损失一路为NAN(笑哭/(ㄒoㄒ)/~~),我赶紧换成CPU跑了下,一切正常,正确率又飙到了99%多。我想是不是.theanoc.txt出了问题,我把optimizer=fast_compile删掉(PyCharm跑总是提醒内存问题。。PyCharm确实很占地儿,所以转战Spider),同时把device=gpu改成了gpu0.结果正常了。。如下图:

还没有进一步调参,一直被NAN所困。。而且网络也被我改得面目全非(因为只是测试数据量只有15000),和MatchNet作者的网络出入很大。但是基本思路都是CNN+全连接。。

增大了卷积核,loss下降到0.26,同时训练正确率也在90%以上:

将原数据的10%作为验证集:

再利用keras的模型可视化工具将模型结构可视化,方法见keras中文文档博客

from keras.utils.visualize_util import plot
plot(model, to_file='model.png')

如图:

或者如果要在ipython中展示图片:

from IPython.display import SVG
from keras.utils.visualize_util import model_to_dot SVG(model_to_dot(model).create(prog='dot', format='svg'))

效果和上图一样。

keras例子-matchnet的更多相关文章

  1. 通过keras例子理解LSTM 循环神经网络(RNN)

    博文的翻译和实践: Understanding Stateful LSTM Recurrent Neural Networks in Python with Keras 正文 一个强大而流行的循环神经 ...

  2. Keras官方中文文档:常见问题与解答

    所属分类:Keras Keras FAQ:常见问题 如何引用Keras? 如何使Keras调用GPU? 如何在多张GPU卡上使用Keras "batch", "epoch ...

  3. 【Keras学习】常见问题与解答

    Keras FAQ:常见问题 如何引用Keras? 如果Keras对你的研究有帮助的话,请在你的文章中引用Keras.这里是一个使用BibTex的例子 @misc{chollet2015keras, ...

  4. 转:深度学习斯坦福cs231n 课程笔记

    http://blog.csdn.net/dinosoft/article/details/51813615 前言 对于深度学习,新手我推荐先看UFLDL,不做assignment的话,一两个晚上就可 ...

  5. keras神经网络三个例子

    keras构造神经网络,非常之方便!以后就它了.本文给出了三个例子,都是普通的神经网络 例一.离散输出,单标签.多分类 例二.图像识别,单标签.多分类.没有用到卷积神经网络(CNN) 例三.时序预测, ...

  6. keras 修仙笔记二(ResNet算法例子)

    对于牛逼的程序员,人家都喜欢叫他大神:因为大神很牛逼,人家需要一个小时完成的技术问题,他就20分钟就搞定.Keras框架是一个高度集成的框架,学好它,就犹如掌握一个法宝,可以呼风唤雨.所以学keras ...

  7. Keras学习~第一个例子~跑MNIST

    import numpy as npimport gzip import struct import keras as ks import logging from keras.layers impo ...

  8. Keras手写识别例子(1)----softmax

    转自:https://morvanzhou.github.io/tutorials/machine-learning/keras/2-2-classifier/#测试模型 下载数据: # downlo ...

  9. 基于Keras实现mnist-官方例子理解

    前言 久闻keras大名,最近正好实训,借着这个机会好好学一下. 首先推荐一个API,可能稍微有点旧,但是写的是真的好 https://keras-cn.readthedocs.io/en/lates ...

随机推荐

  1. LCT总结——应用篇(附题单)(LCT)

    为了优化体验(其实是强迫症),蒟蒻把总结拆成了两篇,方便不同学习阶段的Dalao们切换. LCT总结--概念篇戳这里 题单 灰常感谢XZY巨佬提供的强力资磁!(可参考XZY巨佬的博客总结) 题单对于系 ...

  2. 树剖模板(洛谷P3384 【模板】树链剖分)(树链剖分,树状数组,树的dfn序)

    洛谷题目传送门 仍然是一个板子. 不过蒟蒻去学了一下BIT维护区间修改区间求和,常数果真十分优秀 设数列为\(a_i\),差分数组\(d_ i=a_ i-a_ {i-1}\),前缀和\(s_i=\su ...

  3. 自学Zabbix3.12-动作Action

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix3.12-动作Action介绍 1. 动作action 在配置好监控项和触发器之后 ...

  4. 【转】C语言中,为什么字符串可以赋值给字符指针变量

    本文是通过几篇转帖的文章整理而成的,内容稍有修改: 一. C语言中,为什么字符串可以赋值给字符指针变量 char *p,a='5';p=&a;                     //显然 ...

  5. 框架&样式表

    框架   <frameset rows上下拆分,cols左右拆分><fram src选择文件></frameset>. 样式表:“div style”写在body内 ...

  6. CrossFire Round #481 div.3 978 打后感

    虚拟赛,头一次打div.3感觉好TM水啊...... 一共7道题,我A了6道,第7题有思路但是没时间了. 结果还是排在700多名,可能其他人也觉得太水了吧. 逐一解析题目: A好简单,因为不想离散化我 ...

  7. 【POJ3585】Accumulation Degree 二次扫描与换根法

    简单来说,这是一道树形结构上的最大流问题. 朴素的解法是可以以每个节点为源点,单独进行一次dp,时间复杂度是\(O(n^2)\) 但是在朴素求解的过程中,相当于每次都求解了一次整棵树的信息,会做了不少 ...

  8. asp <----> vb(com,dll) <---> c 来回的调用,生命在于折腾

    最近想改进一个两年前写的小程序,原因是最近将运行在托管服务器上的asp程序迁移到阿里云主机上运行. 初次使用阿里云主机,买了一个配置较低的主机(1核,1G内存,年付:1500左右吧) 原来使用的托管的 ...

  9. Java: 在不同windows主题下,JFrame窗口设置最佳高度的解决方案

    //设置窗口的大小,无论使用怎样的windows主题,都能灵活的应对,显示合适的窗口大小,一定要在JFrame.setVisible(true)之前调用, //替代传统的frame.setSize(w ...

  10. 和我一起使用postcss+gulp进行vw单位的移动端的适配

    随着iphoneX的出现,新的一轮适配大法应该又出现了吧?不论是使用flex布局或者媒体查询,好似都不能完全解决新加的刘海带来的适配问题. 但是有一个单位vw就神奇的解决了这个问题.vw和vh是相对于 ...