caffe,好高端的东西,2012年开始出现的时候,满世界都在玩。到了2015年的时候,还仅仅时1/3的人死磕配置,1/3跑demo,剩下的人才是真正的研究者。不过即使现在,相信很多人也仅仅能入门而已。
近期围绕SSD,对caffe的外貌有一些了解,当然自己也走了好多弯路。写此文章的目的,仅仅是总结一下正确的学习方法。
1.首先时caffe的配置:
https://github.com/BVLC/caffe这个网址,大家都不陌生,几乎被背出来了。里边的安装教程,我们都不去看,却在baidu里各种google,仅仅因为是英文,想偷懒,结果欲速则不达。
应该吸取教训,先把教程全部浏览一遍,不懂的时候,在baidu等啥的。
1.1makefile.config和makefile的关系
这么像,当然有关系。前者是后者的配置文件。写过makefile的,认真读一下,应该知道怎么修改配置文件。
1.2make pycaffe
玩pycaffe的人,虽然不知道具体的干了啥事,但是应该知道编译出来的东西在哪儿,要不怎么照猫画虎的写python啊,都在caffe/python中
2.caffe的内容
caffe写好模块,我们只需要根据自己的需要增加或修改。然后冲编译。这个内容参见:http://caffe.berkeleyvision.org/中的Tutorial Docementation,里边内容不多,可以大概浏览一遍是干啥的,不过都有翻译版的,直接看中文吧。
3.关于ssd的内容
第一次玩caffe,看了论文,然后看代码,找不到半毛钱的关系。
模型中定义了一些额外的层,然后时干嘛的,鬼知道啊。然后百度啊什么的。
以上都是错误的方法。
看论文,确保看懂,理解论文的核心东西;
看模型,虽然没有半毛钱关系,但是仔细去深究那几个多加的层,就发现有关系了。真心不要看代码,直接看头文件,因为有说明信息。caffe/include/layer
尤其时看到prior_box,不知道有没有和我一样感觉无助,明明输出的是loc/predic,但是这个东西干啥的,不想去问同事,结果被卡了很久,直接今天看了一下multiloss和detection_out层之后,感觉心里才像明镜似的,对整体流程有了清晰的认识。
现在还剩一个步骤:
关于各个层的参数的含义。及其真正理解ssd的核心。
4.最后补充点东西
你是不是还不会写caffe层,那么多example,自己去找吧caffe/python/caffe/test/test_net_spec.py
【今天天气好好,无限阳光,只可惜不属于我,88】
【近期想吃蛋糕】