视频序列与单帧图片检测的区别在于输入通道数的改变,但是不改变网络结构情况下还是在提取二维特征,并且由于输入通道数的改变导致预训练权重无法使用,训练收敛的难度很高。 使用视频序列进行检测的本质原因是单帧特征较弱,希望利用物体的运动特征进行检测。因此必须利用时序特征,常见的convlstm,c3d和c2p1 结构。对于convlstm,手头数据集较小,先不考虑。尝试了c3d的分类模型,结果很差,其特征的定位非常不准,属于是拿全局特征硬分类,并没有关注到运动物体。
c3d想试试的话,建议跟这个项目,整个代码写的很好,比较容易读懂:
https://blog.csdn.net/Wen_yaaaaa/article/details/?ops_request_misc=%257B%2522request%255Fid%2522%253A%%2522%252C%2522scm%2522%253A%3..pc%255Fall.%2522%257D&request_id=68&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-6--null-null.142^v93^control&utm_term=UCF101%E5%8A%A8%E4%BD%9C%E8%AF%86%E5%88%AB%E6%95%B0%E6%8D%AE%E9%9B%86&spm=1018.2226.3001.4187
这里主要尝试c2p1,c2p1最主要的特点是先卷一遍2d再卷一遍时序,是可以使用2d的预训练权重的。这种方法其实与convlstm的思路比较像,跑通了这个可以对比一下效果。因为不存在c21d 的分割预训练权重,本项目最重要的任务就是将原分割模型中的conv2d换成conv2p1d,并用上预训练的conv2d权重,训练一个c2p1时序分割模型
基于官方小改,conv2p1d
同参数对比权重,代码如下
结果可见:
conv21d,0层的weight是2d权重,1层是bn参数不用管,2层relu无参数,3层1d权重不用管
尝试替换,由于是把conv2d当预训练权重,在2d的weight前加一个 0. ,key的名字就对上离,tensor也只需再加一个【】增加维度即可:
相关代码:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/196129.html