cnn-crf-stereo测试-----stereo-net安装编译方法

打开stereo文件夹

sudo mkdir build
cd build

打开build文件夹

sudo cmake ../../stereo

出现错误

CMake Error at /home/jennifer/stereoCode/cnn-crf-stereo/dependencies/imageutilities/ImageUtilitiesConfig.cmake:157 (find_package):
  Found package configuration file:

    /usr/local/opencv310/cmake/OpenCVConfig.cmake

  but it set OpenCV_FOUND to FALSE so package "OpenCV" is considered to be
  NOT FOUND.
Call Stack (most recent call first):
  CMakeLists.txt:38 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/jennifer/stereoCode/cnn-crf-stereo/stereo/build/CMakeFiles/CMakeOutput.log".
See also "/home/jennifer/stereoCode/cnn-crf-stereo/stereo/build/CMakeFiles/CMakeError.log".

原因是没有指定opencv的路径,打开stereo文件夹中的CMakeLists.txt文件,加入:

set(OpenCV_DIR "/usr/local/opencv310/build")
顺利进行
link dirs /home/jennifer/stereoCode/cnn-crf-stereo/dependencies/imageutilities/lib/libiumath.so;/usr/local/cuda/lib64/libcufft.so;/usr/local/lib/libHalf.so;/usr/local/lib/libIex.so;/usr/local/lib/libIlmImf.so;/usr/local/lib/libIlmThread.so;/usr/local/lib/libImath.so;opencv_core;opencv_highgui;opencv_videoio;opencv_core;opencv_imgcodecs;opencv_imgproc;opencv_highgui;opencv_core;opencv_highgui;opencv_videoio;opencv_core;opencv_imgcodecs;opencv_imgproc;opencv_highgui;/home/jennifer/stereoCode/cnn-crf-stereo/stereo/../dependencies/slackprop/lib/libslack_prop.so;cnpy
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jennifer/stereoCode/cnn-crf-stereo/stereo/build
Cmake顺利,但是sudo make -j4出现错误:

CMakeFiles/stereo_img.dir/stereo_img.cpp.o:在函数‘main’中:
/home/jennifer/stereoCode/cnn-crf-stereo/stereo/stereo_img.cpp:139:对‘iu::imread_32f_C4(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’未定义的引用
/home/jennifer/stereoCode/cnn-crf-stereo/stereo/stereo_img.cpp:140:对‘iu::imread_32f_C4(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’未定义的引用
libstereo.so:对‘iu::copy(iu::LinearHostMemory<float, 1u> const*, iu::LinearDeviceMemory<float, 1u>*)’未定义的引用
libstereo.so:对‘iu::copy(iu::ImageCpu<float, iuprivate::ImageAllocatorCpu<float> > const*, iu::ImageGpu<float, iuprivate::ImageAllocatorGpu<float> >*)’未定义的引用
libstereo.so:对‘iu::copy(iu::LinearDeviceMemory<float, 1u> const*, iu::LinearHostMemory<float, 1u>*)’未定义的引用
libstereo.so:对‘iu::filterGauss(iu::ImageGpu<float, iuprivate::ImageAllocatorGpu<float> > const*, iu::ImageGpu<float, iuprivate::ImageAllocatorGpu<float> >*, float, int, iu::ImageGpu<float, iuprivate::ImageAllocatorGpu<float> >*)’未定义的引用
libstereo.so:对‘iu::copy(iu::ImageGpu<float, iuprivate::ImageAllocatorGpu<float> > const*, iu::ImageCpu<float, iuprivate::ImageAllocatorCpu<float> >*)’未定义的引用
libstereo.so:对‘iu::copy(iu::ImageCpu<float4, iuprivate::ImageAllocatorCpu<float4> > const*, iu::ImageGpu<float4, iuprivate::ImageAllocatorGpu<float4> >*)’未定义的引用
libstereo.so:对‘iu::copy(iu::ImageGpu<int, iuprivate::ImageAllocatorGpu<int> > const*, iu::ImageCpu<int, iuprivate::ImageAllocatorCpu<int> >*)’未定义的引用
libstereo.so:对‘iu::copy(iu::ImageGpu<float, iuprivate::ImageAllocatorGpu<float> > const*, iu::ImageGpu<float, iuprivate::ImageAllocatorGpu<float> >*)’未定义的引用
collect2: error: ld returned 1 exit status
CMakeFiles/stereo_img.dir/build.make:124: recipe for target 'stereo_img' failed
make[2]: *** [stereo_img] Error 1
CMakeFiles/Makefile2:142: recipe for target 'CMakeFiles/stereo_img.dir/all' failed
make[1]: *** [CMakeFiles/stereo_img.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

原因在于缺失关于iuio的链接,因此修改CmakeLists.TXt文件:

SET(EXTERN_LIBS ${EXTERN_LIBS} ${ImageUtilities_DIR}/lib/libiuio.so)

cuda_include_directories(${IMAGEUTILITIES_INCLUDE_DIR})
include_directories(${IMAGEUTILITIES_INCLUDE_DIR})
SET(EXTERN_LIBS ${EXTERN_LIBS} ${IMAGEUTILITIES_LIBRARIES})
SET(EXTERN_LIBS ${EXTERN_LIBS} ${ImageUtilities_DIR}/lib/libiuio.so)
include(../cmake/compiler_settings.cmake.txt)

顺利进行make

jennifer@Jennifer:~/stereoCode/cnn-crf-stereo/build$ sudo make -j4
[  5%] Building NVCC (Device) object CMakeFiles/cudnn_stereo.dir/operators/cudnn_stereo_generated_stereocorrelation.cu.o
[ 10%] Building NVCC (Device) object CMakeFiles/cudnn_stereo.dir/cudnn_stereo_generated_utils.cu.o
[ 15%] Building CXX object CMakeFiles/cudnn_stereo.dir/stereonet.cpp.o
[ 21%] Building CXX object CMakeFiles/cudnn_stereo.dir/operators/operator.cpp.o
[ 26%] Building CXX object CMakeFiles/cudnn_stereo.dir/colorstereonet.cpp.o
[ 31%] Building CXX object CMakeFiles/cudnn_stereo.dir/utils.cpp.o
[ 36%] Building CXX object CMakeFiles/cudnn_stereo.dir/operators/bias.cpp.o
[ 42%] Building CXX object CMakeFiles/cudnn_stereo.dir/operators/activation.cpp.o
[ 47%] Building CXX object CMakeFiles/cudnn_stereo.dir/operators/softmax.cpp.o
[ 52%] Building CXX object CMakeFiles/cudnn_stereo.dir/operators/convolution.cpp.o
[ 57%] Building CXX object CMakeFiles/cudnn_stereo.dir/operators/stereocorrelation.cpp.o
[ 63%] Building CXX object CMakeFiles/cudnn_stereo.dir/operators/slackprop.cpp.o
[ 68%] Linking CXX shared library libcudnn_stereo.so
[ 68%] Built target cudnn_stereo
[ 73%] Building NVCC (Device) object CMakeFiles/stereo.dir/stereo_generated_stereo.cu.o
[ 78%] Building CXX object CMakeFiles/stereo.dir/tools.cpp.o
[ 84%] Building CXX object CMakeFiles/stereo.dir/stereo.cpp.o
/home/jennifer/stereoCode/cnn-crf-stereo/stereo/tools.cpp: In function ‘void saveMatPython2(std::__cxx11::string, iu::LinearDeviceMemory_32f_C1*, int, int, int)’:
/home/jennifer/stereoCode/cnn-crf-stereo/stereo/tools.cpp:90:53: warning: narrowing conversion of ‘height’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
     const unsigned int shape[] = {height,width,depth};
                                                     ^
/home/jennifer/stereoCode/cnn-crf-stereo/stereo/tools.cpp:90:53: warning: narrowing conversion of ‘width’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
/home/jennifer/stereoCode/cnn-crf-stereo/stereo/tools.cpp:90:53: warning: narrowing conversion of ‘depth’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
[ 89%] Linking CXX shared library libstereo.so
[ 89%] Built target stereo
[ 94%] Building CXX object CMakeFiles/stereo_img.dir/stereo_img.cpp.o
SET(EXTERN_LIBS ${EXTERN_LIBS} ${ImageUtilities_DIR}/lib/libiuio.so)[100%] Linking CXX executable stereo_img
[100%] Built target stereo_img

在build文件夹中生成可执行文件stereo_img, 运行可执行文件 ,计算视差图

jennifer@Jennifer:/media/jennifer/SOFTWARE/gitCode/cnn-crf-stereo/build$ ./stereo_img --im0 ../data/im0.png --im1 ../data/im1.png

terminate called after throwing an instance of 'IuCudaException'
  what():  IuException: CUDA Error: unknown error
      where: /home/jennifer/stereoCode/cnn-crf-stereo/dependencies/imageutilities/include/iu/iucore/image_allocator_gpu.h | alloc:21
已放弃 (核心已转储)
jennifer@Jennifer:/media/jennifer/SOFTWARE/gitCode/cnn-crf-stereo/build$ sudo ./stereo_img --im0 ../data/im0.png --im1 ../data/im1.png
[sudo] jennifer 的密码:
jennifer@Jennifer:/media/jennifer/SOFTWARE/gitCode/cnn-crf-stereo/build$
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用CNN-CRF模型进行命名实体识别的代码示例: ```python import tensorflow as tf import numpy as np class CNN_CRF(object): def __init__(self, sequence_length, num_classes, vocab_size, embedding_size, filter_sizes, num_filters, hidden_dim, l2_reg_lambda=0.0): self.input_x = tf.placeholder(tf.int32, [None, sequence_length], name="input_x") self.input_y = tf.placeholder(tf.int32, [None, sequence_length], name="input_y") self.dropout_keep_prob = tf.placeholder(tf.float32, name="dropout_keep_prob") self.sequence_length = sequence_length l2_loss = tf.constant(0.0) with tf.name_scope("embedding"): self.W = tf.Variable(tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0), name="W") self.embedded_chars = tf.nn.embedding_lookup(self.W, self.input_x) self.embedded_chars_expanded = tf.expand_dims(self.embedded_chars, -1) pooled_outputs = [] for i, filter_size in enumerate(filter_sizes): with tf.name_scope("conv-maxpool-%s" % filter_size): filter_shape = [filter_size, embedding_size, 1, num_filters] W = tf.Variable(tf.truncated_normal(filter_shape, stddev=0.1), name="W") b = tf.Variable(tf.constant(0.1, shape=[num_filters]), name="b") conv = tf.nn.conv2d( self.embedded_chars_expanded, W, strides=[1, 1, 1, 1], padding="VALID", name="conv") h = tf.nn.relu(tf.nn.bias_add(conv, b), name="relu") pooled = tf.nn.max_pool( h, ksize=[1, sequence_length - filter_size + 1, 1, 1], strides=[1, 1, 1, 1], padding='VALID', name="pool") pooled_outputs.append(pooled) num_filters_total = num_filters * len(filter_sizes) h_pool = tf.concat(pooled_outputs, 3) self.h_pool_flat = tf.reshape(h_pool, [-1, num_filters_total]) with tf.name_scope("dropout"): self.h_drop = tf.nn.dropout(self.h_pool_flat, self.dropout_keep_prob) with tf.name_scope("output"): W = tf.get_variable( "W", shape=[num_filters_total, hidden_dim], initializer=tf.contrib.layers.xavier_initializer()) b = tf.Variable(tf.constant(0.1, shape=[hidden_dim]), name="b") self.hidden_output = tf.nn.xw_plus_b(self.h_drop, W, b, name="hidden_output") self.hidden_output_expanded = tf.expand_dims(self.hidden_output, -1) with tf.name_scope("crf"): self.transition_params = tf.Variable(tf.random_uniform([num_classes, num_classes], -0.1, 0.1), name="transition_params") self.log_likelihood, self.transition_params = tf.contrib.crf.crf_log_likelihood( self.hidden_output, self.input_y, self.sequence_length, self.transition_params) self.loss = tf.reduce_mean(-self.log_likelihood) with tf.name_scope("accuracy"): self.prediction = tf.argmax(self.hidden_output, 1, name="prediction") correct_predictions = tf.equal(self.prediction, tf.argmax(self.input_y, 1)) self.accuracy = tf.reduce_mean(tf.cast(correct_predictions, "float"), name="accuracy") self.params = [param for param in tf.trainable_variables() if 'embedding' not in param.name] l2_reg_lambda = tf.constant(l2_reg_lambda) l2_loss += tf.nn.l2_loss(W) l2_loss += tf.nn.l2_loss(b) self.loss += l2_reg_lambda * l2_loss ``` 这里使用的是TensorFlow框架,模型结构包括了卷积神经网络和条件随机场。其中,卷积神经网络用于提取输入句子中的特征,而条件随机场则用于对提取到的特征进行标注,得到最终的命名实体识别结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值