当前位置:网站首页 > C++编程 > 正文

conv1d和conv2d的区别(convlstm2d)



视频序列与单帧图片检测的区别在于输入通道数的改变,但是不改变网络结构情况下还是在提取二维特征,并且由于输入通道数的改变导致预训练权重无法使用,训练收敛的难度很高。 使用视频序列进行检测的本质原因是单帧特征较弱,希望利用物体的运动特征进行检测。因此必须利用时序特征,常见的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也只需再加一个【】增加维度即可:

相关代码:

到此这篇conv1d和conv2d的区别(convlstm2d)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • c++合并数组(c++中数组合并)2026-05-10 11:36:04
  • tomcat解决乱码问题(tomcat启动有乱码)2026-05-10 11:36:04
  • c++ 条件变量使用(c++11条件变量)2026-05-10 11:36:04
  • tomcat 启动 乱码(tomcat10启动中文乱码)2026-05-10 11:36:04
  • c++单向链表(c++单向链表反转)2026-05-10 11:36:04
  • excel文件比较工具(excel文件工具选项里的拆分表格)2026-05-10 11:36:04
  • CAN报文解析(cantest报文解析)2026-05-10 11:36:04
  • MSVCP140.dll是什么意思(msvcp140.dll是干什么用的)2026-05-10 11:36:04
  • ceph存储中osd的作用(ceph osd数量)2026-05-10 11:36:04
  • msvcp140 dll丢失修复(msvcp140.dll丢失怎样修复视频)2026-05-10 11:36:04
  • 全屏图片