您的位置:首页 > 其它

PaddlePaddle视频分类

jerrism 2020-05-11 04:13 106 查看 https://blog.csdn.net/jerrism/

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.listcd ../.. && time python3 predict.py --weights=pdparams/AttentionCluster_final.pdparams --filelist=test/pkl.list

要运行时直接执行

./predict.sh

YouTube8M数据集(若需自己训练和验证则下载)

使用网页中的提供脚本下载Frame-level features dataset

可在该页的label list链接中下载类别序号对应的标签

jerrism 原创文章 16获赞 1访问量 442 关注 私信
标签: 
相关文章推荐