我的AI之路(51)--用自己的UCF101数据集训练3D识别模型video-caffe

1 篇文章 0 订阅
1 篇文章 0 订阅

C3D(C3D project website)的初始版本https://github.com/facebookarchive/C3D太老了,下载一个比较新的版本的源码:

     https://github.com/chuckcho/video-caffe

安装video-caffe的编译环境支持包:

     apt install libopencv-dev 

    apt-get install git cmake
     apt install cmake-qt-gui  #optional
     apt-get install libprotobuf-dev  protobuf-compiler libleveldb-dev libsnappy-dev libhdf5-serial-dev libgflags-dev  \
             libgoogle-glog-dev  install liblmdb-dev  libatlas-base-dev   gfortran
     apt-get install libopenblas-dev   # optional
     apt-get install libssl-dev    # cmake依赖它
     apt-get install --no-install-recommends libboost-all-dev
     apt-get install python-dev
     apt-get install python-numpy  #caffe依赖于python2版的numpy,安装python3-numpy不起作用

     pip install scikit-build            #先单独安装
     pip install opencv-python     #jetson arm64不用
     pip install python-dateutil
     pip install pytest  #optional 仅供测试验证使用

修改Makefile.config和Makefile:

   cd video-caffe
   vi Makefile.config

      USE_CUDNN := 1

      OPENCV_VERSION := 3

      CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
                -gencode arch=compute_20,code=sm_21 \
                -gencode arch=compute_30,code=sm_30 \
                -gencode arch=compute_35,code=sm_35 \
                -gencode arch=compute_50,code=sm_50 \
                -gencode arch=compute_52,code=sm_52 \
                -gencode arch=compute_60,code=sm_60 \
                -gencode arch=compute_61,code=sm_61 \
                -gencode arch=compute_70,code=sm_70 \
                -gencode arch=compute_70,code=compute_70

       PYTHON_LIBRARIES := boost_python3 python3.6
       PYTHON_INCLUDE := /usr/include/python3.6 \
                 /usr/local/lib/python3.6/dist-packages/numpy/core/include

        WITH_PYTHON_LAYER := 1   #optional, if you want call caffe by python script

       INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
       LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/aarch64-linux-gnu /usr/lib/aarch64-linux-gnu/hdf5/serial

   vi Makefile

        LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

然后编译:

mkdir build && cd build
cmake ..        

make all -j8     
make install     #在build/install/下生成发布部署用的全部文件
make runtest   #optional, 验证编译和安装

注意: 假如不是第一次编译,video-caffe/examples/某些文件夹下面有前面上一次编译出的可执行二进制文件了,会导致在执行 cmake .. 这里出错生成不了Makefile,从而后面进行不下去,这时需先把生成了可执行文件的文件夹移到外面去或者删掉,再执行cmake ..即可

假如你需要使用C++代码调用video-caffe,那么编译完后,还需执行:

   cp include/caffe/proto  ../include/caffe   # to get caffe.pb.h for application compiling

不然编译C++调用代码时会报错。

如果上面执行cmake .. 时报错:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_cublas_device_LIBRARY (ADVANCED)

这是因为cmake版本低了,下载源码安装比较新的版本的cmake:

    apt remove cmake
    wget https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3.tar.gz
    tar xf cmake-3.17.3.tar.gz
    cd cmake
    ./bootstrap
    make
    make install

然后把cmake加入path路径(也可以在上面用bootsrap设置make install时把cmake 安装到/usr/bin/下去,这样不用做下面的设置)

    vi ~/.bashrc
    export PATH=$PATH:/usr/local/bin
    source ~/.bashrc
然后再在video-caffe/build/下执行cmake ..即可解决上面的错误。

 

如果在安装opencv4了的环境下编译,可能会发生类似下面的错:

   /root/video-caffe/src/caffe/util/io.cpp   /root/video-caffe/src/caffe/layers/window_data_layer.cpp:293:42: error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope

解决办法是:编辑/home/user/caffe/src/caffe/util/io.cpp和 /root/video-caffe/src/caffe/layers/window_data_layer.cpp
   将CV_LOAD_IMAGE_COLOR 改成cv::IMREAD_COLOR
   将CV_LOAD_IMAGE_GRAYSCALE  改成  cv::IMREAD_GRAYSCALE

   在/root/video-caffe/src/caffe/util/io.cpp里面还需做下面的改动:
      CV_CAP_PROP_FRAME_COUNT  ->CAP_PROP_FRAME_COUNT
      CV_CAP_PROP_POS_FRAMES   ->CAP_PROP_POS_FRAMES

生成自己的UCF101数据集后面再补充。

在UCF101数据集准备好并且生成相关的list文件并修改examples/c3d_ucf101/c3d_ucf101_solver.prototxt等配置文件后,修改exmaples/c3d_ucf101/train_ucf101.sh:

   cd video-caffe
   vi exmaples/c3d_ucf101/train_ucf101.sh

   #!/usr/bin/env sh
   set -e

   ./build/tools/caffe \
    train \
     --solver=examples/c3d_ucf101/c3d_ucf101_solver.prototxt \
     --weights=pretrained-c3d_ucf101_iter_20000.caffemodel  \
     $@ \
     2>&1 | tee examples/c3d_ucf101/c3d_ucf101_train.log

执行训练:

    nohup ./examples/c3d_ucf101/train_ucf101.sh &

如果训练中途中断,为了从中断处附近开始resume训练(例如从iteration 17100处resume训练),创建一个脚本文件./examples/c3d_ucf101/train_resume_ucf101.sh :
   vi ./examples/c3d_ucf101/train_resume_ucf101.sh
   #!/usr/bin/env sh
   set -e

   ./build/tools/caffe \
     train \
     --solver=examples/c3d_ucf101/c3d_ucf101_solver.prototxt \
     --snapshot=examples/c3d_ucf101/c3d_ucf101_iter_17100.solverstate  \
     $@ \
     2>&1 | tee examples/c3d_ucf101/c3d_ucf101_train.log
  再执行这个脚本即可resume训练:
    nohup ./examples/c3d_ucf101/train_resume_ucf101.sh &

关于如果制作自己的UCF101数据集以及修改训练用的配置文件,后面有空再补充。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arnold-FY-Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值