PAI平台提供视频分类相关算法,支持千万级别超大规模的视频样本训练。本文为您介绍如何基于短视频数据生成视频分类模型。
您可以将生成的视频分类模型部署至PAI-EAS形成Restful API服务,其调用方式可以使用MaxCompute Console或Dataworks SQL节点,详情请参见服务方式。
您可以下载本实验提供的测试数据、训练模型及配置文件,详情请参见视频分类相关下载。
数据说明
视频分类相关算法支持.avi及.mp4等常见视频格式的原始数据,本文进行视频分类模型训练的数据分别为eyemakeup和lipsmakeup,详情请参见视频分类相关下载。
数据格式转换
数据格式转换模块可以将原始视频文件转换为TFRecord格式,该格式的文件可以提高模型训练速度。数据转换的命令格式如下。
pai -name easy_vision_ext
-project algo_public
-Dbuckets='oss://{bucket_name}.{oss_host}/{path}/'
-Darn='acs:ram::*******:role/aliyunodpspaidefaultrole'
-DossHost='{oss_host}'
-Dcmd convert
-Dconvert_config='{bucket_name}.{oss_host}/{path}/{config_file}'
-Dlabel_file='{bucket_name}.{oss_host}/{path}/{config_file}/{label_file}'
-Doutput_tfrecord='{bucket_name}.{oss_host}/{path}/'
具体的数据转换示例如下。pai -name easy_vision_ext
-project algo_public
-Dbuckets='oss://demo-yuze.oss-cn-beijing-internal.aliyuncs.com/vip/'
-Darn='acs:ram::******:role/aliyunodpspaidefaultrole'
-DossHost='oss-cn-beijing-internal.aliyuncs.com'
-Dcmd convert
-Dconvert_config='oss://demo-yuze.oss-cn-beijing-internal.aliyuncs.com/vip/ucf101_qince.config'
-Dlabel_file='oss://demo-yuze.oss-cn-beijing-internal.aliyuncs.com/vip/vip.csv'
-Doutput_tfrecord='oss://demo-yuze.oss-cn-beijing-internal.aliyuncs.com/vip/'
其中:Dbuckets
:OSS地址的根目录。Darn
:访问OSS的授权,其获取方式请参见PAI-TF任务参数介绍的IO相关参数说明部分。DossHost
:OSS的Host地址。Dconvert_config
:配置文件,需要标记类别种类。本文的数据说明部分提供了下载地址,配置文件的示例如下。class_map { label_name: "ApplyEyeMakeup" } class_map { label_name: "ApplyLipstick" } model_type: VIDEO_CLASSIFICATION converter_class: "QinceConverter" write_thread_num: 8 part_record_num: 64 test_ratio: 0.0
Dlabel_file
:训练视频所在的OSS地址。需要将视频上传至OSS并在文件中注明路径,示例如下。
文件中的路径需要替换为实际OSS路径。#数据ID,原始数据,融合答案 1,"{""tfspath"": ""oss://demo-yuze/data/eye/public_v_ApplyEyeMakeup_g01_c01.avi""}","{""option"": ""ApplyEyeMakeup""}" 2,"{""tfspath"": ""oss://demo-yuze/data/eye/public_v_ApplyEyeMakeup_g02_c03.avi""}","{""option"": ""ApplyEyeMakeup""}" 3,"{""tfspath"": ""oss://demo-yuze/data/eye/public_v_ApplyEyeMakeup_g02_c04.avi""}","{""option"": ""ApplyEyeMakeup""}" 4,"{""tfspath"": ""oss://demo-yuze/data/eye/public_v_ApplyEyeMakeup_g03_c01.avi""}","{""option"": ""ApplyEyeMakeup""}" 5,"{""tfspath"": ""oss://demo-yuze/data/eye/public_v_ApplyEyeMakeup_g04_c01.avi""}","{""option"": ""ApplyEyeMakeup""}" 6,"{""tfspath"": ""oss://demo-yuze/data/lips/public_v_ApplyLipstick_g04_c02.avi""}","{""option"": ""ApplyEyeMakeup""}" 7,"{""tfspath"": ""oss://demo-yuze/data/lips/public_v_ApplyLipstick_g05_c01.avi""}","{""option"": ""ApplyLipstick""}" 8,"{""tfspath"": ""oss://demo-yuze/data/lips/public_v_ApplyLipstick_g07_c04.avi""}","{""option"": ""ApplyLipstick""}" 9,"{""tfspath"": ""oss://demo-yuze/data/lips/public_v_ApplyLipstick_g01_c02.avi""}","{""option"": ""ApplyLipstick""}"
Doutput_tfrecord
:TFRecord的输出路径。
视频分类模型训练
基于数据转换生成的数据,训练视频分类模型,其命令格式如下。
pai -name ev_video_classification_ext
-project algo_public
-Dbackbone='resnet_3d_50'
-Dnum_epochs=50
-Ddecay_epochs=5
-Dsave_checkpoints_epochs=1
-Dmodel_dir='{bucket_name}.{oss_host}/{output_model_path}/'
-Duse_pretrained_model=true
-Dpretrained_model='{bucket_name}.{oss_host}/{model_path}/resent_3d_50_model.ckpt'
-Dtrain_data='{bucket_name}.{oss_host}/{path}/data_train_0_0.tfrecord'
-Dtest_data='{bucket_name}.{oss_host}/{path}/data_train_0_0.tfrecord'
-Dlabel_map_path='{bucket_name}.{oss_host}/{path}/data_label_map.pbtxt'
-Dnum_test_example=10
-Dtrain_batch_size=2
-Dtest_batch_size=2
-Dbuckets='{bucket_name}.{oss_host}/{path}'
-Darn='acs:ram::*********:role/aliyunodpspaidefaultrole'
-DossHost='{oss_host}'
-Dinitial_learning_rate=0.0001
-Dstaircase=false
-DgpuRequired=100
-Dnum_classes=2
具体的视频分类训练示例如下。pai -name ev_video_classification_ext
-project algo_public
-Dbackbone='resnet_3d_50'
-Dnum_epochs=50
-Ddecay_epochs=5
-Dsave_checkpoints_epochs=1
-Dmodel_dir='oss://demo-yuze.oss-cn-beijing-internal.aliyuncs.com/model/'
-Duse_pretrained_model=true
-Dpretrained_model='oss://demo-yuze.oss-cn-beijing-internal.aliyuncs.com/model/resent_3d_50_model.ckpt'
-Dtrain_data='oss://demo-yuze.oss-cn-beijing-internal.aliyuncs.com/vip/data_train_0_0.tfrecord'
-Dtest_data='oss://demo-yuze.oss-cn-beijing-internal.aliyuncs.com/vip/data_train_0_0.tfrecord'
-Dlabel_map_path='oss://demo-yuze.oss-cn-beijing-internal.aliyuncs.com/vip/data_label_map.pbtxt'
-Dnum_test_example=10
-Dtrain_batch_size=2
-Dtest_batch_size=2
-Dbuckets='oss://demo-yuze.oss-cn-beijing-internal.aliyuncs.com/vip/'
-Darn='acs:ram::********:role/aliyunodpspaidefaultrole'
-DossHost='oss-cn-beijing-internal.aliyuncs.com'
-Dinitial_learning_rate=0.0001
-Dstaircase=false
-DgpuRequired=100
-Dnum_classes=2
其中:Dbackbone
:选用的网络类型。Dmodel_dir
:输出的模型地址。Dpretrained_model
:上传的预训练模型地址。Dtrain_data
:训练数据转换生成的TFRecord文件。Dtest_data
:测试数据转换生成的TFRecord文件。Dlabel_map_path
:数据转换生成的.pbtxt文件。Dnum_test_example
:测试的样本数。Dtrain_batch_size
:每次参与训练的样本数。Dbuckets
:根目录。Darn
:访问OSS的授权,其获取方式请参见PAI-TF任务参数介绍的IO相关参数说明部分。Dnum_classes
:分类数量。
视频分类最终生成的模型为TensorFlow SaveModel格式,存储在Dmodel_dir
路径下。您可以将该模型部署至PAI-EAS形成Restful API,详情请参见服务部署。