课程介绍:由百度资深算法工程师与中科院高级研究员联合授课,28天手把手带你亲自复现1篇论文,掌握论文复现全流程。 免费的!免费的!免费! 提供多卡环境!!!还有免费算力等你拿!

pytorch代码地址:https://github.com/kenshohara/3D-ResNets-PyTorch/blob/master/main.py

论文及课程体会: 最大的感受是,通过学习,体会到了如何讨论科研问题和改进模型结构的方法 如何高效和深度理解高质量论文。 算法本身不是很复杂,适合基础一般的同学(比如本人)拿来完整的复现。(百度还送算力) 通过几篇论文的学习,对3D ResNet 的发展有了一个整体的了解。 百度请的大咖们,讲的真的很好!!! (1)数据准备: 由百度paddle提供ucf101视频数据。来源为YouTube视频,共计101类动作,13320段视频。共有5个大类的动作:1)人-物交互;2)肢体运动;3)人-人交互;4)弹奏乐器;5)运动. (2)模型结构: 3D-resnet-50残差块结构 (3)训练细节: 训练的时候:优化算法为动量随机梯度下降法,学习率初始化为0.01(不能设置过大,以免准确率波动很大,难以收敛),当验证集的准确率连续下降3次时学习率乘以0.1,动量为0.9,weight decay为0.001,batch size为128(AIStudio)提供两种GPU显存,一种为16G,一种32G)。如果训练时平台出现显存不足,可调小batch size,亦可调小short_size。在数据出来阶段,为避免每次启动项目是除work以外的文件重置,可将视频取帧为图像数据集保存至work文件夹内。测试的时候,视频被分成若干不重叠的16帧的视频段,结果为所有视频段的结果的平均。输入的16帧视频是从原视频中均匀采样得到的,使用了数据增强的方法(不同的数据预处理方式,对模型的准确率影响较大,需要自己不断去尝试和探索。此处有一点疑惑就是原文采取的group_corner_crop增强方式,并不能取得较好的效果)对于训练集,常采用随机裁剪和随机翻转,当然还有其他方式;对于测试和验证集应采取不改变数据的增强方式。加载预训练模型,将预训练模型参数由pytorch转为paddle模型的初始参数,在转化过程中,最好将每一层的参数名称打印出来,一一对照。在最后一层全连接层时,要将模型的输出维度改为自己模型所采用的数据集的种类数量,初始时采用自己设定的正态分布初始化。因为要用到torch模块和torchversion模块,所以最好在本地安装paddle后,同时安装torch和torchversion模块,在本地转好之后再上传至平台。 在将pytorch模型转为paddle模型时,一定要出现api的转换,幸好百度飞桨提供了两种模型的api对照表,在转换的时候,可以一一对照转换。paddle的api具体用法可以参照百度飞桨的官方文档。 在训练时,很容易出现过拟合,训练集的准确率在95-100%,而验证集的准确率只有85-90%.出现这种情况时,可以参照以下步骤逐一检查。 (a) 加载预训练模型后,需要先在ucf-101数据集上fine-tune,再观察测试集与验证集的准确率; (b) 如果出现过拟合,可能原因有很多,建议跟源码对齐下超参数,比如学习率、batch_size等。
在训练时,学习率从大到小逐一设置,一般在6个epochs左右模型收敛,此时可将模型参数保存,然后调小学习率,继续训练模型。

课程链接:https://aistudio.baidu.com/aistudio/loginmid?redirectUri=http%3A%2F%2Faistudio.baidu.com%2Faistudio%2Feducation%2Fgroup%2Finfo%2F1340