码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • warp和grid_sample的一些理解


    grid_sample

    grid的shape为[B,H,W,2],首先不用去考虑batch,那就是[H,W,2],这个2存储的是input的坐标值,取值为-1~1。
    实际上grid就是一个map,这个map告诉你output的某个点 ( x o , y o ) (x_o,y_o) (xo​,yo​)来自于input的某个点 ( x i , y i ) (x_i,y_i) (xi​,yi​)

    生成一个grid的代码如下

    B, C, H, W = x.size()
    # mesh grid 
    xx = torch.arange(0, W).view(1,-1).repeat(H,1)
    yy = torch.arange(0, H).view(-1,1).repeat(1,W)
    xx = xx.view(1,1,H,W).repeat(B,1,1,1)
    yy = yy.view(1,1,H,W).repeat(B,1,1,1)
    grid = torch.cat((xx,yy),1).float()
    vgrid = grid
    
    vgrid[:,0,:,:] = 2.0*vgrid[:,0,:,:].clone()/max(W-1,1)-1.0 
    #取出光流v这个维度,原来范围是0~W-1,再除以W-1,范围是0~1,再乘以2,范围是0~2,再-1,范围是-1~1
    vgrid[:,1,:,:] = 2.0*vgrid[:,1,:,:].clone()/max(H-1,1)-1.0 #取出光流u这个维度,同上
    
    vgrid = vgrid.permute(0,2,3,1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    举个简单的例子
    比如 grid的shape是 224 × 224 × 2 224\times224\times2 224×224×2,input要从 200 × 200 200\times200 200×200插值到 224 × 224 224\times224 224×224
    grid[0,0,:]=[-1,-1],那就表示output在坐标(0,0)位置点的值来源于input坐标为(-1,-1)的点(左上角)
    grid[223,223,:]=[1,1],那就表示output在坐标(223,223)位置点的值来源于input坐标为(1,1)的点(右下角)

    得到input和output的对应关系后,即可选择插值方式,双线性插值or最邻近插值

    torch.nn.functional.grid_sample(input, 
    								grid, 
    								mode='bilinear', 
    								padding_mode='zeros', 
    								align_corners=None)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    warp

    光流法的亮度恒定假设为同一目标在不同帧间运动时,其亮度不会发生改变,因此可以通过找到亮度不变的点来对相邻帧图片的点进行对应,所谓warp操作就是在原来的对应关系上加上偏移量使得亮度不变的点得到对应。
    比如原来[112,112]的点插值到[224,224]的点,用的是grid,现在我得到了一个光流flow,我就可以进行warp操作,然后再进行grid_sample

    grid = grid + flow
    output = nn.functional.grid_sample(x, vgrid,align_corners=True)
    
    • 1
    • 2
  • 相关阅读:
    Electron之单例+多窗口
    从零开始写 Docker(八)---实现 mydocker run -d 支持后台运行容器
    从CNN到Transformer:基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分割和点云分类
    JUC-Semaphore基础篇
    ubuntu20.04升级到22.04
    SOHO如何做外贸独立站?
    七、克隆虚拟机、常见错误及解决方案
    K最邻近法KNN分类算法(多点分类预测)
    web网页设计期末课程大作业:动漫主题网站设计——关于我转生史莱姆这件事(6页)HTML+CSS
    windows10提权
  • 原文地址:https://blog.csdn.net/weixin_44823313/article/details/127792373
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号