栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

OpenCV+CUDA支持下的TV-L1光流计算加速

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenCV+CUDA支持下的TV-L1光流计算加速

OpenCV+CUDA支持下的TV-L1光流计算加速
  • 引言
  • 依赖环境与安装脚本
  • 光流提取

引言

本文主要介绍使用OpenCV的TV-L1算法提取视频的光流。近年来很多SOTA视频动作识别模型都采用RGB-光流的两线架构,能为动作特性的捕捉带来可观的提升。然而在像UCF101这样数以万计的视频数据集上提取光流则需要非常大的计算量。博主试图用纯python脚本,在CPU上8线程提取时,一整晚只能完成不到1%的视频提取。因此,利用GPU进行加速则非常有必要。用conda和pip安装的opencv-python默认是不使用CUDA的,因此需要从C++源代码编译。本文参考mmlab的denseflow代码,介绍安装带有CUDA支持的OpenCV并加速提取光流的方法。

依赖环境与安装脚本

在按照repo中的脚本进行安装前,首先保证机器上已经有CUDA环境mmlab的denseflow给予OpenCV和Boost,repo中提供了shell脚本。
然而博主在运行时发现频频报错,主要原因是将脚本拆开分别执行的原因。建议创建install_cv.sh一次性执行:

# ZZROOT is the root dir of all the installation
# you may put these lines into your `.bashrc` or `.zshrc`.
export ZZROOT=$HOME/app
export PATH=$ZZROOT/bin:$PATH
export LD_LIBRARY_PATH=$ZZROOT/lib:$ZZROOT/lib64:$LD_LIBRARY_PATH

# fetch install scripts
git clone https://github.com/innerlee/setup.git
cd setup

# opencv depends on ffmpeg for video decoding
# ffmpeg depends on nasm, yasm, libx264, libx265, libvpx
./zznasm.sh
./zzyasm.sh
./zzlibx264.sh
./zzlibx265.sh
./zzlibvpx.sh
# finally install ffmpeg
./zzffmpeg.sh

# install opencv 4.3.0
./zzopencv.sh
# you may put this line into your .bashrc
export OpenCV_DIR=$ZZROOT

# install boost
./zzboost.sh
# you may put this line into your .bashrc
export BOOST_ROOT=$ZZROOT

# finally, install denseflow
./zzdenseflow.sh

安装过程中出现任何报错情况时,首先进入报错包的build路径下,寻找CmakeFiles/CmakeOutput.log来确定错误是什么。debug后删除该包的build文件夹,重新执行install_cv.sh。已安装的部分会非常快。

光流提取

在按照repo中的指导执行命令前,环境路径需要赋值。在命令行执行:

$ export ZZROOT=$HOME/app
$ PATH=$ZZROOT/bin:$PATH
$ LD_LIBRARY_PATH=$ZZROOT/lib:$ZZROOT/lib64:$LD_LIBRARY_PATH

然后按照执行命令即可:

denseflow test -b=20 -a=tvl1 -s=1 -if -v
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947937.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号