SegNet

一.Caffe原版

  1. 论文,官方教程(文件组织方式、训练、测试),官方资源库,训练好的模型。
  2. 下载SegNet-Tutorial,命名为SegNet。包含训练数据和列表。
  3. 下载caffe-segnet,如果出现cudnn错误可以下载caffe-segnet-cudnn5。命名为caffe-segnet,放入上面的SegNet。
  4. 为了编译Caffe,安装OpenCV是要选中BUILD_TIFF=ON,或使用cmake .. -DBUILD_TIFF=ON。
  5. 编译Caffe:进入caffe-segnet,创建build文件夹编译,或按照教程。
  6. 按照官方教程训练测试。

二.Tensorflow复现版

  1. 下载源码。
  2. 可以把Caffe版的数据集拿来用。
  3. 错误及解决:
    #错误
    ".../tensorflow/python/ops/gradients_impl.py", line 459, in gradients
        (op.name, op.type))
    LookupError: No gradient defined for operation 'pool4' (op type: MaxPoolWithArgmax)
    #解决
    from tensorflow.python.framework import ops
    from tensorflow.python.ops import gen_nn_ops
    @ops.RegisterGradient("MaxPoolWithArgmax")
    def _MaxPoolWithArgmaxGrad(op, grad, unused_argmax_grad):
      return gen_nn_ops._max_pool_grad(op.inputs[0],
                                       op.outputs[0],
                                       grad,
                                       op.get_attr("ksize"),
                                       op.get_attr("strides"),
                                       padding=op.get_attr("padding"),
                                       data_format='NHWC')
    
    #错误
    InvalidArgumentError (see above for traceback): No OpKernel was registered to support Op 'MaxPoolWithArgmax' with these attrs.  Registered devices: [CPU], Registered kernels:
      device='GPU'; Targmax in [DT_INT64]; T in [DT_HALF]
      device='GPU'; Targmax in [DT_INT64]; T in [DT_FLOAT]
    
    	 [[Node: pool1 = MaxPoolWithArgmax[T=DT_FLOAT, Targmax=DT_INT64, ksize=[1, 2, 2, 1], padding="SAME", strides=[1, 2, 2, 1]](conv1/Relu)]]
    #原因:缺少GPU

     

  4. 第四

你可能感兴趣的:(深度学习)