Caffe学习日记5

1. 基于Caffe的艺术迁移学习 [1]

解析:

(1)从https://github.com/fzliu/style-transfer下载代码,需要安装好pycaffe库,并且pip install progressbar。

(2)解压style-transfer-master文件夹,运行\scripts下的download_models.sh下载模型(caffenet、vgg16、vgg19、

googlenet)。

(3)运行代码python style.py -s <style_image> -c <content_image> -m <model_name> -g 0。

(4)更改默认输出图像宽度length,如下所示:

parser.add_argument("-l", "--length", default=512, type=float, required=False, help="maximum image length")
def transfer_style(self, img_style, img_content, length=512, ratio=1e5, n_iter=512, init="-1", verbose=False, callback=None)


2. 迁移学习 [2]

解析:

(1)样本迁移,即将任务A中部分适合任务B的数据抽取出来,与其它数据一起针对任务B进行训练。

(2)特征迁移,比如用于识别小轿车的神经网络,那些用来识别车轮车窗的网络参数,可以直接迁移到卡车识别的

神经网络,再辅以卡车图像数据,就能事半功倍地训练出卡车识别网络。

(3)模型迁移,这个跟特征迁移类似,但是更简单粗暴,不光是特征被迁移用来类似任务,而且是这个模型都被迁

移。这个模式的实际案例非常多,很多研究成果都是将AlexNet、GoogLeNet等模型迁移到特定的任务。当然也会根

据需求略作改进和添加新的辅助功能,但是总体上看,节省了大量的开发时间、也节省了大量用于学习的计算资源,

还能取得相当甚至更好的效果。

(4)关系迁移,即将事物间的相互关系类推到类似事物。这个可能在NLP等有具体规则的机器学习领域更为常见,

比如man->woman,可以类推到king->queen,还可以推广到更多词汇的机器理解。


3. 强化学习 [3][4][5][6]

解析:强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。其灵感来源于心理

学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利

益的习惯性行为。这个方法具有普适性,因此在其他许多领域都有研究,例如博弈论、控制论、运筹学、信息论、仿

真优化、多主体系统学习、群体智能、统计学以及遗传算法。在运筹学和控制理论研究的语境下,强化学习被称作“近

似动态规划”(approximate dynamic programming,ADP)。


4. 生成对抗网络(GANs)[7][8]     

解析:概率生成模型的目的,就是找出给定观测数据内部的统计规律,并且能够基于所得到的概率分布模型,产生全

新的,与观测数据类似的数据。现在比较流行的三类生成模型,如下所示:

(1)生成对抗网络(GANs):GANs是一种概率生成模型。

(2)变分自动编码模型(VAE):它依靠的是传统的概率图模型的框架,通过一些适当的联合分布的概率逼近,简

化整个学习过程,使得所学习到的模型能够很好地解释所观测到的数据。

(3)自回归模型(Auto-regressive):在这种模型里,我们简单地认为,每个变量只依赖于它的分布,只依赖于它

在某种意义上的近邻。例如,将自回归模型用在图像的生成上,那么像素的取值只依赖于它在空间上的某种近邻。现

在比较流行的自回归模型,包括像素CNN或者像素RNN,它们可以用于图像或者视频的生成。

说明:如果我们把生成模型比作是一个 伪装者的话,那么判别模型就是一个警察的角色。伪装者的目的,就是通过不

断的学习来提高自己的伪装能力,从而使得自己提供的数据能够更好地欺骗这个判别模型。而判别模型则是通过不断

的训练来提高自己判别的能力,能够更准确地判断数据来源究竟是哪里。


5. #error incompatible with your Protocol Buffer headers

解析:

$ git clone https://github.com/google/protobuf.git

$ sudo apt-get install autoconf automake libtool curl make g++ unzip

$ ./autogen.sh

$ ./configure --prefix=/usr

$ make

$ make check

$ sudo make install

$ sudo ldconfig

说明:装新版本的Protocol Buffers即可。


6. /usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory

解析:export CPLUS_INCLUDE_PATH=/usr/include/python2.7


7. python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: No such file or directory

解析:sudo apt-get install python-numpy


8. deploy.prototxt,test.prototxt,trainval.prototxt,train.prototxt,val.prototxt区别


9. 图像语义分割 [9][10][11][12][13]

解析:

(1)PASCAL VOC models

(2)NYUDv2 models

(3)SIFT Flow models

(4)PASCAL-Context models

说明:FCN,PSPnet,DeepLab等。


10. “无法打开包括文件: “gpu/mxGPUArray.h”: No such file or directory”

解析:<IncludePath>$(MatlabDir)\extern\include;$(MatlabDir)\toolbox\distcomp\gpu\extern\include;$(IncludePath)

</IncludePath>。


11. Windows运行Faster RCNN(Matlab版本)

解析:按照参考文献[14]即可运行成功。


12. Windows运行MatConvNet [15][16]

解析:

(1)CPU版编译:mex -setup C++;vl_compilenn;vl_testnn。

(2)GPU版编译:将cudnn64_5.dll复制到MatConvNet/matlab/mex中,执行命令vl_compilenn('enableGpu', true, 

'cudaRoot', 'C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5', 'cudaMethod', 'nvcc', 'enableCudnn', 

'true', 'cudnnRoot', 'local/cudnn-rc5.1');vl_testnn(‘gpu’, true)。


13. Windows运行RefineNet [17]

解析:nnbilinearsampler_cudnn.cu(24) : fatal error C1021: 无效的预处理器命令“warning” 

说明:最简单的解决方法是注释nnbilinearsampler_cudnn.cu的第24行。


14. 神经元与偏置项之间是如何连接呢?

解析:一个神经元一个偏置项,连接按1计数。卷积层连接数等于参数乘以特征图大小。


15. LeNet-5中S2下采样层参数如何计算呢?

解析:S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。因此,参数的个数为

(1+1)×6=12。


16. epoch,stepsize和gamma [18]

解析:

(1)1个epoch表示将所有的训练图像全部通过网络训练一次。

(2)stepsize是lr的衰减步长。

(3)gamma是lr的衰减系数。


17. [libprotobuf ERROR google/protobuf/descriptor_database.cc:57] File already exists in database: caffe.proto

解析:

(1)重新编译protobuf,并修改configure。[19]

(2)重新编译caffe,并修改Makefile。[20]


18. mirror和LRN

解析:

(1)mirror: horizontal flip,是一种数据扩增的方法,防止过拟合。其中,1表示开启镜像,0表示关闭,也可用ture

和false表示。  

(2)LRN(Local Response Normalization):具体实现在CAFFE_ROOT/src/caffe/layers/lrn_layer.cpp和同一目录

下的lrn_layer.cu中。


参考文献:

[1] 基于caffe的艺术迁移学习style-transfer-windows+caffe:http://www.cnblogs.com/love6tao/p/5894389.html

[2] 用两个使用Caffe的小项目案例演示迁移学习的实用性:http://www.infoq.com/cn/news/2016/12/Two-Caffe-

practical-migration

[3] 深度强化学习软件包总结:https://zhuanlan.zhihu.com/p/24392239

[4] 深度强化学习资源:http://www.open-open.com/lib/view/open1428540547338.html

[5] 深度强化学习导引:https://zhuanlan.zhihu.com/p/21498750

[6] OpenAI深度强化学习教程:http://www.jianshu.com/p/44a2f0be6400

[7] 生成对抗网络(GANs)主要技术进展:http://www.dlworld.cn/YeJieDongTai/2783.html

[8]深度学习新星:GANs的基本原理、应用和走向:http://mt.sohu.com/20170109/n478116673.shtml

[9] 使用训练好的模型完成语义分割任务:http://www.cnblogs.com/xuanxufeng/p/6240659.html?winzoom=1

[10] FCN网络的训练以SIFT-Flow数据集为例:http://www.cnblogs.com/xuanxufeng/p/6243342.html

[11] 基于FCN的图像语义分割-CVPR 2015:http://blog.csdn.net/hjimce/article/details/50268555

[12] 十分钟看懂图像语义分割技术:https://www.52ml.net/19124.html?utm_source=tuicool&utm_medium=referral

[13] 关于图像语义分割的总结和感悟:http://m.blog.csdn.net/article/details?id=52434826

[14] Windows下配置Faster RCNN:http://www.cnblogs.com/love6tao/p/5820172.html 

[15] 深度学习入门级框架MatConvNet环境配置:http://blog.csdn.net/michaelliang12/article/details/51336709

[16] MatConvNet: CNNs for MATLAB:http://www.vlfeat.org/matconvnet/

[17] RefineNet:https://github.com/1000sprites/refinenet

[18] Caffe的solver参数设置:http://www.cnblogs.com/CarryPotMan/p/5343692.html

[19] Linux下使用静态google protocl buffer:http://yleesun.blog.163.com/blog/static/29413402201301311441329/

[20] Problem with dynamic loading and caffe.proto:https://github.com/BVLC/caffe/issues/1917

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NLP工程化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值