图神经网络GNN的简单理解

2019年的时针开始转动,在CNN、RNN、LSTM、GAN、GNN、CAP的潮起潮落中,带来了这篇博客。放上一篇参考引用。 其实个人认为理解GNN的核心问题就是理解图怎么做傅里叶变换。CNN的核心操作时卷积,GNN也是。CNN计算二维矩阵的卷积,GNN计算图的卷积。那么我们定义好图的傅里叶变换和图的卷积就可以了,其媒介就是图的拉普拉斯矩阵。

好了,这篇博客将简要介绍图神经网络的原理,但是不会设计太多数学细节(因为博主数学很烂啦)。通过理解图神经网络的卷积操作,来理解其流程,再会配合代码来做简单解释。…

MatConvNet进行FCN语义分割

      FCN语义分割算法已经在很多主流深度学习平台上实现了,包括Caffe、TenserFlow、MatConvNet等。这篇博客主要介绍如何在MatConvNet上运行起FCN语义分割,包括CPU和GPU版本。博主的平台是Matlab2017a+Cuda8.0。…

图像跟踪(九)FCNT语义跟踪

        刚有一个idea,用语义分割来做图像跟踪,搜了一下发现已经有人做过了,细细的看了下Paper,和自己相当还不一样。FCN是深度学习语义分割的鼻祖,而这片Paper的名字叫做FCNT,看了之后发现我误会了,此FCN非彼FCN,由于是比较早的算法了,性能和MEEM处于同一层次,不过考虑到这是深度学习方法用于跟踪的重要实践,还是做个笔记好了。

        博主认为图像跟踪过程的本质就是语义的跟踪(我是这么理解的),所以,使用语义分割来完成图像跟踪是自然而然想到的。事实上深度学习用于图像跟踪,也就是利用了其深层特征中的语义信息。这篇博客就主要介绍这篇文献:Visual Tracking with Fully Convolutional Networks。…

视频图像跟踪算法综述

cf2_teaser        图像跟踪一直都是计算机视觉领域的难题,事先知道第一帧中的目标位置,然后需要在后续帧中找到目标。先验知识少,目标被遮挡、目标消失、运动模糊、目标和环境的剧烈变化、目标的高速运动、相机的抖动都会对目标跟踪造成影响,图像跟踪一直都是CV领域的难题。

        深度学习用于图像跟踪有两大要解决的问题,一是图像跟踪一般使用在线学习,很难提供大量样本集,二是深度学习使用CNN时,由于卷积池化,最后一层的输出丢失了位置信息,而图像跟踪就是要输出目标的位置。

        2013年以来,深度学习开始用于目标跟踪,并且为这些问题提供了一些解决思路。这篇博客首先阐述图像跟踪今年来的研究进展,然后再介绍深度学习用于图像跟踪近年来的研究,最后附上一些学习资料和相关网站。…

MatConvNet深度学习框架简介及GPU使用注意事项

        MatConvNet是一个基于Matlab的深度学习框架,在计算部分,最底层混编了C/C++或者CUDA C,这使得其速度并不是特别慢。就使用体验来说,MatConvNet是非常优秀的,借助于Matlab,定义网络,使用现有模型以及数据可视化都非常方便。

        由于MatConvNet文档和Demo都比较完备,所以这篇博客主要介绍一些GPU的配置细节。…

MIT-Deeplearning 学习笔记

        今年是DeepLearning诞生十周年,这项技术已相对成熟。这个月,有两本史诗级教科书出炉,这十年的成果做了教科书式的总结,上周MIT的deeplearning教科书定稿,由Ian Goodfellow、Yoshua Bengio、Aaron Courvilla主编,几乎所有深度学习大牛参与其中。初学者学习Deep Learning四处搜集资料和Paper,四处修补知识体系的过程行将成为历史,博主将长期更新博客,对这本书的要点进行阐述。…

深度学习综述(三)深度学习工具介绍

        随着深度学习的兴起,诞生了许多优秀的深度学习框架,借助深度学习框架完成理论研究、实验和深度学习开发已成为深度学习研究的重要手段。深度学习框架加快了研究的速度,并且使得一般的深度学习研究者也可以轻松设计自己的深度神经网络。由于深度学习框架灵活、多样、高性能、分布式等特点,当前的许多深度学习技术都是基于深度学习框架进行开发的。这篇博客主要介绍TensorFlow、Torch、Theano、Caffe四种深度学习开源框架的特点。…

深度学习综述(一)神经网络的发展历史

        深度学习的概念源于人工神经网络的研究。含多隐层的多层感知机就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。…

深度学习综述(二)深度学习用于目标检测

        目标识别、目标检测、目标分割、目标跟踪是计算机视觉领域最热门的方向之一。传统机器学习方法中较为常见的做法是在滑动窗口中手工提取特征(例如Hog、SIFT等),然后将提取的特征送入分类器(例如SVM、Adaboost等)中,训练分类器预测输出。而每一类物体都有不同的特征,我们也很难提前知道哪种特征更加优秀,于是近年来目标识别的研究方向转向了深度学习。

        目标识别(检测)问题与分类问题不同,识别或检测要求精准定位目标。一种解决问题的思路是将其看作一个回归问题,这种思路解决问题的效果可能并不理想,另一种更为普遍的做法还是使用滑动窗口进行检测。…

Caffe源码精读笔记(一)之caffe.cpp

        博客正式进入caffe源码精读系列,博主会在阅读源码的过程中将自己认为重要的部分记录下来,整理成笔记。由于博主之前粗略浏览过一遍源码,对caffe的架构和caffe中使用的库有了了解,这些笔记介绍整体工作流程和框架的同时,还将偏重于源码的细节。第一篇博客主要由程序入口开始介绍caffe训练的流程。…

Caffe的图像转换工具convert_imageset源码分析

        caffe提供了将图像转换为lmdb或者leveldb格式的工具,在tool文件夹下的convert_imageset中可以找到对应文件,这个工具在很多例子中都有用到,比如mnist和imagenet,由于caffe默认使用lmdb这种又快又小的格式,我们在处理大量图像时也会用到,而我们如果要根据自身需求进行修改,那就需要读源码了。…

利用python生成供给Caffe的hdf5数据

        caffe中需要将数据存储为lmdb、hdf5等数据库格式,caffe自带的convert_image工具可以完成lmdb数据格式的转换,但是遇到浮点数,这个工具就不行了,所以,只有存成hdf5了。对于python存储hdf5,本文分析多个demo的数据生成代码,并作出总结(主要就是贴代码了):…

使用Caffe训练非图像数据

        上一节,我们介绍了使用Caffe训练我们自己的图像用于分类,由于我们有ImageNet的例子,所以一切显得非常自然。那么,如果我们要用裸数据来训练网络(用于分类或者回归),那我们应该怎么做呢?这篇博文进行了详细的介绍。…

使用Caffe进行图像分类

我们参考caffe中ImageNet的例子来完成图像分类,我们的流程如下

1.参考ImageNet的代码,构建我们自己的数据集,jpg格式的图像分为train和val,即训练集和测试集

2.在文本文件中列出图像和标注

3.修改create_convert脚本,将图像转化为lmdb格式,注意,一定是jpg格式的图像,如果没有进行大小归一化,最好在脚本中进行缩放操作

4.使用make_mean脚本,计算图像均值

5.修改solver_prototxt文件和train_val_prototxt文件中的参数,进行训练…

Ubuntu下Caffe的编译、配置、导入eclipse

        Caffe的作者是贾扬清(伯克利大学博士期间成果),其在深度学习科学研究中有着非同一般的地位,尤其是其代码在github上开源,以及CUDA加速的使用,使得普通学者也可以较为轻松的进行训练,介绍就不多说了,作为Caffe的第一课,首先就是Caffe环境配置、编译以及导入IDE中方便调试了,我们开始吧。…