概述
PaddlePaddle视频分类模型的使用
环境配置
安装paddlepaddle相关模块:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple paddlepaddle-gpu
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple wget
克隆代码:
git clone https://github.com/PaddlePaddle/models.git
cd
models/PaddleCV/PaddleVideo/
读取特征的reader/feature_reader.py文件存在bug,将脚本中record的key从bytes类型改为string:
sed -i "s:[b':[':" reader/feature_reader.py
若要保存预测结果,则需修改metrics/metrics_util.py的finalize_and_log_out方法。
创建目录保存权重文件:
mkdir pdparams
wget https://paddlemodels.bj.bcebos.com/video_classification/AttentionCluster_final.pdparams
创建目录存放原始视频文件,提取特征后的tfrecord文件,tfrecord文件转化后的pkl文件
mkdir test && cd test && mkdir video tf pkl
将待预测视频文件存入video目录,生成视频文件的.list文件。需要在第二列写视频标签,多个标签用分号分割。这里我们只作预测,将标签预设为1即可。
ls | sed -e "s:^:`pwd`/:"
-e "s:$:,1:" > ../video.list
执行预测
提取特征
可使用两种方法提取特征,YouTube8M Feature Extractor只能提取图像特征,MediaPipe YouTube8M feature extractor可同时提取音频特征。
YouTube8M Feature Extractor
克隆代码:
git clone https://github.com/google/youtube-8m.git
cd youtube-8m/feature_extractor
提取特征,frames_per_second默认为1:
python3 extract_tfrecords_main.py --input_videos_csv /data6/PaddleVideo/test/video.list --output_tfrecords_file /data6/PaddleVideo/test/tf/test.tfrecord
若出现could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR错误,则是显存不够,修改feature_extractor.py,将其中的*self.session = tf.Session()*改为:
config = tf.ConfigProto(gpu_options=tf.GPUOptions(allow_growth=True))
self.session = tf.Session(config=config)
即刚开始分配少量GPU资源,然后按需逐渐增加。
MediaPipe YouTube8M feature extractor
按说明文档执行第三步获取VGGish frozen graph时,可能会出现ImportError: No module named ‘vggish_slim’。这时可以先执行该行代码之前的git clone代码,把所需的模块先下载下来。
安装Bazel(Using Bazel’s APT repository)
安装opencv:
sudo apt-get install libopencv-core-dev libopencv-highgui-dev
libopencv-imgproc-dev libopencv-video-dev
安装ffmpeg:
sudo apt-get install ffmpeg
开始预测
将tfrecord文件转换为pkl文件,tf和pkl为输入和输出目录
cd test &&python3 ../data/dataset/youtube8m/tf2pkl.py tf pkl
生成pkl文件的.list文件
cd pkl && ls | sed "s:^:`pwd`/:" > ../pkl.list
开始预测
cd ../.. && python3 predict.py --weights=pdparams/AttentionCluster_final.pdparams --filelist=test/pkl.list
一次性执行上述命令的脚本:
在PaddleVideo目录下新建predict.sh,写入以下命令:
cd test/videos && ls | sed -e "s:^:`pwd`/:" -e "s:$:,1:" > ../video.list
time python3 ../../../youtube-8m/feature_extractor/extract_tfrecords_main.py --input_videos_csv ../video.list --output_tfrecords_file ../tf/test.tfrecord
cd .. && time
python3 ../data/dataset/youtube8m/tf2pkl.py tf pkl
cd pkl && ls | sed "s:^:`pwd`/:" > ../pkl.list
cd ../.. && time python3 predict.py --weights=pdparams/AttentionCluster_final.pdparams --filelist=test/pkl.list
要运行时直接执行
./predict.sh
YouTube8M数据集(若需自己训练和验证则下载)
使用网页中的提供脚本下载Frame-level features dataset
可在该页的label list链接中下载类别序号对应的标签
最后
以上就是矮小蛋挞为你收集整理的PaddlePaddle视频分类PaddlePaddle视频分类模型的使用YouTube8M数据集(若需自己训练和验证则下载)的全部内容,希望文章能够帮你解决PaddlePaddle视频分类PaddlePaddle视频分类模型的使用YouTube8M数据集(若需自己训练和验证则下载)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复