- 博客(353)
- 资源 (2)
- 收藏
- 关注
原创 symbol lookup error: xxx undefined symbol xxx
我在编译一个小工程时,编译过程并没有报错,但是在运行报了如下错误:undefined symbol N2cv3Mat20updateContinuityFlagEv。解决此类问题的思路可以从如下几个方面入手:库没有正确连接,但如果是这个问题,我们在编译时往往就会报错。库的版本不对,比如我们使用的第三方库其依赖的是OpenCV2,但是我们自己的工程使用的时OpenCV3,这时也会有这个问题。...
2019-12-09 19:04:23
1820
原创 OpenCV : undefined reference to cv::imread()
最近在编译一个小工程时遇到了一个OpenCV的问题,如标题所示找不到函数接口。其实,我们一般遇到“undefined reference to”的错误首先想到的肯定是相关的库没有正确连接。但是我遇到的问题要比这个奇怪的多。下面记录下我的解决思路,做个笔记防止后面在遇到相同的问题。检查库是否正确连接ldd ****.so可检查某个库的依赖情况,重点看那些找不到的库。如果我们发现某个库找不到,...
2019-12-09 14:10:25
12797
原创 Caffe2填坑系列(10)----编译成功,在python中使用时报”key already registered. Offending key: ImageInput“
原因:ImageInput这个Op被注册了多次,我在编写自己的.cc文件时,是以image_input.cc为模板,前面我都改成了自己Op的名字,包括REGISTER_CPU_OPERATOR(),OPERATOR_SCHEMA().唯独没有改NO_GRADIENT(),造成了上述错误。具体代码可参考core/register.h...
2019-05-20 23:11:22
1151
原创 Caffe2填坑系列(9)----错误提示“undefined reference to caffe2::CUDAContext::“
一般出现”undefined reference to…“的错误是找不到相应的库造成的,但我自己在编写完一个Op后编译时出现了这个问题,经过一天的查找终于找到了根源所在,知道原因后自己都无语了,原来在caffe2中文件的命名是有规则了,不能胡乱起名。我错将_op_gpu.cc,写成了_gpu_op.cc首先,看一下在image/CMakeLists.txt中的设置if(USE_OPENCV ...
2019-05-14 23:50:12
696
原创 Caffe2填坑系列(8)----获得Op输入和输出blob的个数的两种方法
构造函数中,任何一个Op都是公有继承Operator,构造函数一般是 C++:Operator<Context>(def,ws),…可以看到每一个构造函数里都有一个OperatorDef的对象def,OperatorDef在protot里进行定义,主要时组着里一个Op的一些信息,我们可以调用def.input_size()或def.output_size()获得输入输出的...
2019-05-12 22:22:34
538
原创 Caffe2填坑系列(7)----make时“cannot find -lopencv_dep_cudart”
在CmakeList.txt 中OpenCV之前,加上set(CUDA_USE_STATIC_CUDA_RUNTIME OFF)或则在make时make -D CUDA_USE_STATIC_CUDA_RUNTIME=OFF
2019-05-08 23:18:16
572
原创 Caffe2填坑系列(6)----gcc编译报错:程序中有游离的“\357”、"\273"、"\277"等
原因一:程序中使用了中文的标点符号程序(*.c,*.h)中使用了中文的标点符号(全角),比如;,},+。改成英文的标点半角符号就行了。甚至有时候空格也会出现类似错误,删掉该空格 重新输入。vim里面做类似替换还是很容易的。如何看到报错的符号?od -c hello.c > log.txt在log中就能看到符号了原因二:文件存储格式有问题如果替换成了英文标点还出错的话,还...
2019-05-05 23:28:31
373
原创 Caffe2填坑系列(5)----获取输入输出数据----CPU与GPU稍有不同
CPUconst auto& a = Input(0)获取第一个输入给a,a的类型是Tensorauto* b = Output(0)获取第一个输入的指针赋给b获取指向Tensor内数据的指针:const auto* a1 = a.template data(),需要注意两点1.data()前的template ;2、输入一般是只读,我们不希望改变起内部数据,data()返回的是...
2019-05-02 12:03:01
527
原创 Caffe2填坑系列(4)----指定梯度计算时的输入和输出
class GetInterpGradient : public GradientMakerBase{ using GradientMakerBase::GradientMakerBase; vector<OperatorDef> GetGradientDefs() override{ return SingleGradientDef( ...
2019-04-29 23:43:56
380
原创 Caffe2填坑系列(3)----OPERATOR_SCHEMA()
operator_schema.hNumInputs()// Functions to set the property of the operator schemas. // Sets the number of inputs, either a fixed number or a min and a max. /** * @brief A single in...
2019-04-25 23:34:41
338
原创 Caffe2填坑系列(2)----获取数据或参数的方法
pad_end_(OperatorBase::template GetSingleArgument(“pad_end”,0))如果参数“pad_end”没有提供,则采用0为默认值获取Op的输入和输出const auto& X = Input(0):获取第一个输入,注意输入一般为常量类型,因为我们一般只读不更改数据。auto* Y = Output(0): 指向第一个输出,不能为常...
2019-04-24 22:23:21
357
原创 Caffe2填坑系列(1)----三个头文件
已经有将近一年的时间没有写博客了。过去的一年了,学习了很多新的东西,在这里和大家分享一下,希望对你有所帮助。特别声明:我在这个系列中所使用的Caffe2,不是已经合并进Pytorch的Caffe2,而是为合并前的。这两者的差别还是很大的。今天,作为第一讲,内容可以说非常少。- #include "caffe2/core/context.h"选择是CPU或者GPU- #include "...
2019-04-19 23:29:18
403
原创 Caffe To Caffe2 Python脚本caffe_translator.py详细注释
将Caffe的模型转换成Caffe2模型,官方提供了一个caffe_translator.py脚本。在此我做了详细的注释。## @package caffe_translator# Module caffe2.python.caffe_translator#!/usr/bin/env python2import argparseimport copyimport loggingim...
2019-01-06 11:20:53
1063
原创 对一般分类CNN的FC2层中的权值W的一点儿思考
最近又重新看了L-Softmax Loss 和 A-Softmax Loss.对对一般分类CNN的FC2层中的权值W,有了自己的一点想法,与大家分享一下。如果大家对我提出的第6,7的两个问题,有自己的想法,希望给我留言,大家相互学习。 邮箱451413025@qq.com...
2018-05-30 16:27:34
1191
原创 利用sklearn画ROC曲线python代码个人理解
参考链接: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html#sphx-glr-auto-examples-model-selectio
2018-01-13 18:43:09
6237
原创 LMDB To Picture by Python
自己写的一个小代码,稍后会传到GitHub上,这里分享给大家!# coding: utf-8import lmdbimport numpy as npimport caffe_pb2import cv2dataDir = '***_lmdb'#lmdb文件夹env = lmdb.open(dataDir,readonly=True,lock=True)datum = c
2018-01-13 18:38:09
634
原创 glog和gflags两个模块的使用实例
在Caffe中convert_imageset.cpp中有这两个模块的使用,我只是做了一点注释。我觉得学习别人的代码,是一个很好的方法。 算了废话不多说了,直接上代码吧!// This program converts a set of images to a lmdb/leveldb by storing them// as Datum proto buffers.// Usage://
2018-01-13 18:28:57
1516
原创 Boost-python封装Cpp代码供Python调用
好久没有写博客了,今天把自己有道云笔记上东西分享给大家。Boost::python的使用可以参考我的一篇博客,这里只列举几个简单的例子,对该篇博客的补充。封装一个单一的函数#include<iostream>#include<boost/python/def.hpp>#include<boost/python/module.hpp>#include<boost/python/args.hpp>
2018-01-13 18:18:42
1634
2
原创 Caffemodel之C++修改参数
对Caffemodel的解析,更直接的说是对protobuf的解析。对Protobuf来说最重要的有三个文件,***.proto,***.pb.h,和***.pb.cc。基本的操作流程是首先写***.proto文件,然后编译出***.pb.h和***.pb.cc两个文件,我们就可以对Protobuf进行读写和修改了。今天这里,我只想总结一下我在修改Caffemodel时遇到的一些坑,以及解
2017-12-09 15:29:31
1602
原创 RCNN个人的几点见解
已经有将近一年的时间没有写博客了,说来真是惭愧。最近想学习一点目标检测的东西,今天看了RCNN,请教了同事一些不懂得地方,在这里做一个简短的总结。其实,网上种总结已经非常多了,我这里只想写点我个人的理解。方便以后回归使用。废话少说,直接进入正题。1、选择候选区域的算法,论文中使用的是“selective search”,我记得很久之前看这篇论文时,我还在网上找到过这个算法的源码,跑了一下,效果
2017-11-17 19:42:40
579
原创 把Vim打造成一个酷炫的C++编辑器
说实话,我也是按照http://blog.youkuaiyun.com/doc_sgl/article/details/47205779这个教程一步步打造的。在这之前也按照其他教程尝试过,但是没有成功。现在的这个教程是我尝试过最简单而且效果也最好的,因此值得推荐。 如果你想一步步折腾(如果你是第一次打造Vim,强烈建议你这样做,因为里面有一些插件的具体操作。)可以按照教程一步步安装,但是网络一定要
2016-12-24 15:54:58
3106
原创 Ubuntu16.04 改造成 Mac OX
哎,没钱买Mac只能借助Ubuntu改造一个了。还是很不错的。我主要是根据http://www.linuxidc.com/Linux/2016-06/131947.htm这篇教程安装的。如果你的英语比较好可以看官方教程http://www.noobslab.com/2016/04/macbuntu-1604-transformation-pack-for.html。当然两者对比看效果更佳。只根据教
2016-12-22 20:17:22
34768
2
原创 Could not get lock /var/lib/dpkg/lock -open (11: Resource temporarily unavailable)
我在虚拟机上安装的Ubuntu16.04后,经常出现这个问题,以前没有碰到过。具体错误如下:查阅资料(http://www.2cto.com/os/201305/213648.html)后得知解决方法很简单。之所以写这篇博客,就是省的下次再去网上瞎找了。解决方法如图,输入两行代码就搞定了sudo rm /var/cache/apt/archives/lock sudo rm
2016-12-22 16:51:11
798
原创 Caffe中学习率策略应如何选择
今天,在训练网络时想换一种学习策略试试,因此重新研究了一下Caffe中提供的各种学习率策略,在这里和大家聊聊我使用时的一些经验教训。我们先来看看和学习率策略有关的参数,以下的内容来自caffe.proto中:// The learning rate decay policy. The currently implemented learning rate // policies are
2016-12-11 00:28:05
16896
原创 Caffe-Windows下画loss与accuracy曲线
本篇博客主要讲述怎样在Windows下利用Caffe提供的脚本程序和Caffe训练日志画loss曲线与accuracy曲线。如果你是在Linux下使用Caffe可以参考这篇博客:http://blog.youkuaiyun.com/fx409494616/article/details/53197209?ref=myread。如果你还没有Caffe训练日志,请参考上一篇博客http://blog.csdn
2016-12-09 18:03:39
7802
13
原创 Caffe-Miscoroft无训练日志解决方法
Caffe的训练日志就是我们在命令窗口中看到的训练时打印出来的信息,我们可以利用这些信息画训练时lossaccruacy图,至于怎么利用这些信息画出这两个图是下一篇将要讲述的问题。我们先来看看这些保存在什么地方。如果你是使用的Caffe-Windows版本是happynear大神编译的老版本,那你应该会在bin文件下发现一个log文件夹,里面保存的就是我们需要的训练文件,文件名上有时间,可以很
2016-12-09 01:32:02
4389
2
原创 Check failed:error == cudaSuccess(30 vs. 0) unkown error
今天被这个问题折腾惨了。昨天Caffe使用还一切正常,今天就突然出现了这个问题,如下图所示:我尝试重新安装CUDA,重新编译安装Caffe,都没有成功解决。后来灵机闪现,想到是不是显卡驱动的问题(其实我就应该想到的,哎!)右击我的电脑->管理->设备管理->显示适配器如图(现在是正常状态),GT 730M显卡驱动前面应该是一个黄色小三角内部有个小叹号。右击->卸载。成功
2016-12-06 20:07:24
12923
2
原创 Ubuntu16.04下安装DDD(Data Display Debugger)
前两天在Linux公社论坛偶然间看到了DDD这个软件,根据介绍是一个gdb界面化的调试软件,这正是我找了好长时间的东西,有一个有界面的调试工具了,于是乎今天抽了个时间整了整,里面碰到了不少坑,下面一一说明一下。我使用的Ubuntu16.04,如果你使用的是CentOS可以参考:http://blog.youkuaiyun.com/unix21/article/details/8450040,本人也是参考这篇博
2016-11-27 23:20:13
6147
7
原创 Caffe训练网络时的点点滴滴
以前主要是微调网络,所以参数的设计非常简单,我们只需要注意转换数据时把参数--shuffle=true,loss收敛就不会有什么问题。但是最近我重新训练网络,发现参数调试真的是一个麻烦的事情。在这里总结一下,供大家参考。 通过我不断的试验和大神的提点,我调节的主要是学习率。我们可能已经听说了很多,如果loss不收敛就将学习率降低。但是,这在重新训练时是个误区,尤其是在训练的开始阶段。在开
2016-11-25 13:40:59
7955
2
原创 Mxnet学习系列4----Caffe模型转换成Mxnet模型
这已经是Mxnet学习系列的第五篇了,感谢大家的支持!本篇博客主要讲一下在Caffe环境下搭建和训练好的模型怎样转换到Mxnet下使用。我觉得这一点是十分重要的:首先,这样做节省了我们很多时间和精力。在这个与时间赛跑的年代这一点很重要。另外就是现在大部分论文还是利用Caffe实现的,Caffe是我现在看到的使用最广泛的深度学习框架,所以如果我们想移植到Mxnet下,学习这一点也是很重的。
2016-11-06 16:06:20
6086
原创 sklearn 使用过程中遇到的问题和解决方法
Sklearn是Python下非常优秀的机器学习模块,相信大家有所耳闻。本篇博客是我在平常使用中遇到的一些问题和解决方法的记录,也可以看做是一个笔记。仅供参考。1、加载Mnist数据时报错from sklearn.datasets import fetch_mldatamnist = fetch_mldata('MNIST original') 很多地方都是利用上面两条语句加载MN
2016-11-04 14:25:50
10621
1
原创 Mxnet学习系列3----网络的可视化
网络可视化的重要性不言而喻,我们可以利用图的形式更好的观察网络的结构。记得以前写过一篇关于Caffe下的网络的可视化的博客点击打开链接,其实有一个在线的Caffe网络结构工具:http://ethereon.github.io/netscope/#/editor。 那么在Mxnet下怎么画出网络结构图呢?其实过程还是很简单的,因为Mxnet已经为我们写好了函数,我们只要简单调用即可
2016-11-04 12:16:19
13668
原创 Mxnet学习系列2----如何制作image.rec(新版本)
看过我Mxnet学习系列1的同学,肯定有些疑惑,这个问题已经讲过了怎么还讲?对于这个问题我也很无奈。上篇博客已经是很久以前写的了,Mxnet的更新还是很快的,没办法只能在写一篇博客。先说一下新版本(2016/10/26)较老版本的变化在于将老版本中的make_list.py和im2rec.py两个文件的功能合并到im2rec.py一个文件中去了,使用参数--list=True(make_lis
2016-10-26 17:40:30
6872
1
原创 Mxnet学习系列0----问题汇总及解决方法
这是我在使用Mxnet过程遇到的一些问题,有的是我自己解决,有的是参考他人的解决方法。在这里做个总结,帮助他人少走些弯路。1、im2rec.py中参数--exts的问题我是使用过程中发现,如果使用默认值输出结果是正确的,如果我们在命令行中自己输入参数就无法输出结果。经过研究发现是im2rec.py源码有问题,作者在使用argparse模块是忽视了一个参数:原始代码如下:cgroup
2016-10-26 17:18:48
10455
原创 Caffe中crop_layer层的理解和使用
前段时间一直忙着找工作博客已经很久没有写了,看到了很多人的留言没有回复,在这里和大家说声抱歉。Caffe也是很久没有使用了,前天突然发现Caffe更新了,出现了一些新层,于是就挑着在论文中使用到的新层研究了一下。 本片博客主要是说明crop_layer(我叫他剪裁层)的理解和使用。在此申明博客中的内容部分引用其他博客我会给出连接地址,大家可以详细看原博客。 1、Crop_
2016-10-23 11:03:13
11359
4
转载 OpenCV基础篇之图像的DFT频域变换
本文转自:http://xiahouzuoxin.github.io/notes感谢博主!转载请注明出处:http://xiahouzuoxin.github.io/notes程序及分析/* * FileName : fft2.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * D
2016-06-29 11:31:00
1786
原创 Windows下C++程序移植到Linux上的几个问题及解决方法
今天帮朋友从Windows下移植一个小程序到Linux下,遇到了两个问题,在这里分享一下解决方法。 刚开始觉得,移植应该很简单,就是重新再Linux下编译一次就可以了。但是遇到了,不少问题。下面一一说明。 1、fopen_s()函数报错。 原因是,fopen_s()这个函数并不是标准的C++库中的函数,是微软特有的,也就是说如果你用VS编译不会有问题,但是如果你
2016-06-24 14:11:07
5250
原创 OpenBlas库----cblas_dgemm()函数
在Caffe的源码中有很多地方使用OpenBlas库进行矩阵运算,今天就简单讲一下我在使用cblas_dgemm()函数的使用时遇到的问题。 在网上查到的资料很多都是简单的说了下cblas_dgemm()函数的参数和功能,具体怎么用没有给出相应的代码,而且我对里面的转置也是很迷惑。先给大家几个博客地址:官方例子:https://github.com/xianyi/OpenBLAS/w
2016-06-21 17:53:13
13264
1
原创 PyQt4及py2exe使用时的一些错误及解决方案
昨天尝试使用PyQt4为Caffe测试程序写了一个界面程序,又把这个python程序转换成了.exe.这过程遇到了不少问题,有的已经解决,有的没有解决,还希望高手帮忙。先贴出我的界面吧,忙了一天看看成果:一、使用PyQt4开发界面还是很容易的,大的问题遇到了两个一个解决一个未解决。先说没有解决的问题吧,望高手指点1、我们看到界面有很多相似的地方如第一行,第二行,第五行,第六行,
2016-05-31 10:51:19
3272
Caffe-Windows下画loss和accuracy曲线python代码
2016-12-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人