NVCaffe
昌山小屋
917
展开
-
Check failed: status == CURAND_STATUS_SUCCESS (203 vs. 0)
最近在跑一个同时用到pytorch和caffe的程序框架中报了下面这个错误:F0910 16:10:31.709767 5616 common.cpp:153] Check failed: status == CURAND_STATUS_SUCCESS (203 vs. 0) CURAND_STATUS_INITIALIZATION_FAILED*** Check failure stack trace: ***Aborted (core dumped) 搞了半天,发现跟imp...原创 2020-09-10 16:24:38 · 598 阅读 · 2 评论 -
【NVCaffe源码解析】MultiBoxLossLayer(Ing)
NVCaffe中MultiBoxLossLayer的代码说真的不是那么好容易理解,有很多细节的地方最好是结合 SSD的论文反复推敲,方得真谛。在深入解读源码之前,还是先给一个訪层的参数配置样例。在后文中对代码进行推演的时候以訪样例为参考。layer { name: "mbox_loss" type: "MultiBoxLoss" bottom: "mbox_l...原创 2020-04-19 00:12:10 · 374 阅读 · 0 评论 -
【NVCaffe源码分析】PriorBoxLayer
因为是着重于源码分析,所以假定读者对于 PriorBox(也有叫 Anchor、DefaultBox)已有基本的认识,此文只是从代码的角度来补充一些细节。且看以下我自己在训练某任务时关于 PriorBoxLayer的一段设置,虽并未覆盖全部参数,但作为后面代码分析时的参考已然够用。layer { name: "conv5_cc_relu_mbox_priorbox" type...原创 2020-04-14 00:24:29 · 357 阅读 · 0 评论 -
【NVCaffe源码分析】数据增量之batch_sampler
batch_sampler是生产随机样本patch的方法,一种常用的数据增量(DataAugment)策略。具体说来,它从训练数据图像中随机选取一个满足限制条件的区域。这里有两点,一个是随机选取,另一个就是得满足限制条件。限制条件在后文中将做具体说明,下面先看一个AnnotatedDataLayer层中有关batch_sampler一个配置参数样例。annotated_data_pa...原创 2020-04-09 15:40:38 · 1910 阅读 · 0 评论 -
【NVCaffe源码分析】数据增量之DistortImage
distort image作为NVCaffe一项常用的数据增量策略,其参数(distort_param)配置大体如下:distort_param { brightness_prob: 0.5 brightness_delta: 32 contrast_prob: 0.5 contrast_lower: 0.5 contrast_up...原创 2020-04-06 23:37:38 · 556 阅读 · 0 评论 -
【NVCaffe源码分析】SigmoidCrossEntropyLossLayer
交叉熵 loss 用于度量两个概率分布之间的相似性(度量两个概念分布之间相似性的方法有很多,交叉熵是其中之一),放在我现在所做的深度学习具体项目中来说就是要度量模型预测出来的概率分布与gt分布之间的相似性。其中为预测概率分布,是通过sigmoid函数将输入Xn映射输出为1时的概率:NVCaffe在实现SigmoidCrossEntropyLossLayer的时候理所当然地包...原创 2020-03-06 14:11:53 · 441 阅读 · 0 评论 -
NVCaffe使用cmake编译时指定变量
大多数情况下使用cmake编译caffe-jacinto,只需要简单的这么几步:$ cd caffe-jacinto$ mkdir build #创建build目录$ cd build $ cmake .. #创建编译环境$ make -j8 #开始编译....编译成功....用得久了经常也会出现一些需要定制化编译的需求,这时候就可以在cmake时通过-...原创 2020-01-09 22:53:18 · 454 阅读 · 0 评论 -
【NVCaffe源码分析】AnnotatedDataLayer(3)
load_batch在上一篇文章中谈到 BasePrefetchingDataLayer 中的线程函数借助 load_batch 函数从 data reader 中取得数据并进行一系列操作。现在就来看看 AnnotatedDataLayer 中的 load_batch 具体都做了哪些事情。/ This function is called on prefetch threadtempl...原创 2019-11-17 20:25:54 · 468 阅读 · 0 评论 -
【NVCaffe源码分析】AnnotatedDataLayer(2)
LayerSetUp 上一篇讲了 AnnotatedDataLayer 的构造函数部分,在完成对象的初始化后紧接着会调用每一层的LayerSetUp(...)函数来对各层进行相应的设置。注意到 AnnotatedDataLayer以及其直接父类 DataLayer都没有重写 LayerSetUp函数,所以责任自然就落到了 爷爷类 BasePrefetchingDataLayer 身上了...原创 2019-11-17 15:04:13 · 471 阅读 · 0 评论 -
【NVCaffe源码分析】AnnotatedDataLayer(1)
对NVCaffe数据读取与处理部分的解读并不像直接解读某个 layer 一样结构清晰,需要拨开几层迷雾才能见到真相。我对数据部分的了解直接从解读 AnnotatedDataLayer这一 层的源代码开始,并以下面这份参数配置作为参考进行推理。layer { name: "data" type: "AnnotatedData" top: "data" top: "lab...原创 2019-11-17 00:33:02 · 473 阅读 · 0 评论 -
NVCaffe中detection_output_layer多卡训练过程中保存测试结果的问题
我们通常在训练过程会设置每隔一定的迭代次数(test_interval)就跑一次valid,如果你使用的是多卡,查看训练日志你会发现有多条测试结果,他们出来不同的solver。最近在用caffe-jacinto跑ssd的时候突然想着把valid的结果保存下来,这个在detection_output_layer中可以通过配置相应的参数来指定,大体如下:layer{name: "det...原创 2019-10-31 00:20:51 · 391 阅读 · 0 评论 -
NVCaffe训练过程中设置多个test文件
多test,what?通常我们在使用caffe训练模型的时候会设定一个测试间隔(test_interval),也就是每test_interval次迭代就跑一次验证集,观察一下loss的变化情况。最近在训练一个睁闭眼检测的小模型,为了应付各种头部姿态,例如:抬头、低头等,我建立了若干个分类验证集,在训练过程中期望能独立的test这些分类验证集,得到在各分类验证集上的loss,而不是一个整体的...原创 2019-09-09 23:47:05 · 351 阅读 · 0 评论 -
notebook上使用py-caffe训练调试模型
最近在使用caffe的prototxt设计一个新网络,写了一些骚操作,自己也不是很确定计算过程是否符合预期,所以想在训练若干步之后抽出我设计的那几层,观察一下输出值。直接在代码或日志层来检查指定层的输出值当然也是可以的,但是不直观,也不灵活,于是想到了py-caffe结合notebook的方式。查阅了一下发现还真可以直接在notebook调用py-caffe的接口跑训练,操作也异常简单,嘿...原创 2019-06-27 10:42:10 · 331 阅读 · 0 评论 -
caffe增加新分支后固定参数进行finetuning
caffe训练时正常的finetuning只需要在调用训练脚本时通过--weights选项指定好caffemodel即可,这种方式在finetuning的过程中会更新所有参数。我现在有个需求,要在已训练好的网络结构中增加一个新的分支,而finetuning时固定已经训练好的参数,只单独训练这个新分支的参数,怎么做? 方式一:首先,你需要这个新网络的初始caffemodel,这个...原创 2019-04-24 19:27:48 · 581 阅读 · 0 评论