引言
本文主要介绍使用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`.