【三维重建】【深度学习】NeRF_Pytorch代码--预备基础知识

2023-11-08

【三维重建】【深度学习】NeRF_Pytorch代码–预备基础知识

给定一个场景的多视角的图像,神经辐射场(NeRF)通过图像重建误差优化一个神经场景表征,优化后可以实现逼真的新视角合成效果。NeRF最先是应用在新视点合成方向,由于其超强的隐式表达三维信息的能力后续在三维重建方向迅速发展起来。



前言

在详细解析NeRF代码之前,首要任务是成功运行NeRF代码【win10下参考教程】,后续学习才有意义。本博客讲解Im数据加载模块的代码,不涉及其他功能模块代码。

渲染和逆渲染

渲染和逆渲染是计算机图形学中两个重要的概念,分别涉及将三维场景转换成二维图像和从二维图像中还原出三维场景的过程。

  • 渲染(Rendering))是指将三维场景中的几何形状、纹理、光照等信息转换成二维图像的过程。
  • 逆渲染(Inverse rendering)是指从二维图像中还原出三维场景中的几何形状、纹理、光照等信息的过程。

视角合成方法

通常使用一个中间3D场景表征作为中介来生成高质量的虚拟视角,即首先需要对中间3D场景进行表征,然后再对这个中间3D场景进行渲染,生成照片级的视角。
如何对这个中间3D场景进行表征,分为了“显示3D表征“和”隐式3D表征“

  • 显示3D表征:确地定义物体的几何形状,包括网格(Mesh),点云(PointCloud),体素(Voxel)等,它能够对场景进行显式建模,但是因为其是离散表示的,导致了不够精细化会造成重叠等伪影,更重要的是它存储的三维场景表达信息数据量极大,对内存的消耗限制了高分辨率场景的应用。
  • 隐式3D表征:通过一些数学方程来隐式地定义物体的几何形状,通常用一个函数来描述场景几何,可以理解为将复杂的三维场景表达信息存储在函数的参数中,以更自然地描述一些具有复杂形状的物体。因为往往是学习一种3D场景的描述函数,因此在表达大分辨率场景的时候它的参数量相对于“显示表示”是较少的,并且”隐式表示“函数是种连续化的表达,对于场景的表达会更为精细。

显式是离散的表达,不能精细化,导致重叠等伪影,耗费内存,限制了在高分辨率场景的应用。
隐式是连续的表达,能够适用于大分辨率的场景,而且不需要3D信号进行监督。


四大坐标系

  • 图像坐标系 ( x , y ) \left( {x,y} \right) (x,y) 以相机光轴与成像平面的交点(principal point)为坐标原点,描述物体通过投影投射在成像平面中的位置。
  • 像素坐标系 ( u , v ) \left( {u,v} \right) (u,v) 以成像平面左上顶点为坐标原点,描述像素点(pixel)在数字图像中的坐标位置而引入。
  • 相机坐标系 ( X c , Y c , Z c ) \left( {{X_{\rm{c}}},{Y_{\rm{c}}},{Z_{\rm{c}}}} \right) (Xc,Yc,Zc) 以相机的光心为坐标系原点, X c {{X_c}} Xc, Y c {{Y_c}} Yc轴平行于图像坐标系的 x {x} x, y {y} y轴,相机的光轴为 Z c {{Z_c}} Zc轴,坐标系满足右手法则。相机的光心可理解为相机透镜的几何中心。
  • 世界坐标系 ( X w , Y w , Z w ) \left( {{X_{\rm{w}}},{Y_{\rm{w}}},{Z_{\rm{w}}}} \right) (Xw,Yw,Zw) 用于表示空间物体的绝对坐标,世界坐标系可通过旋转和平移得到相机坐标系。

图像坐标系与像素坐标系


图像坐标系与像素坐标系的转换推导:
u = x d x + u 0 u = \frac{x}{{dx}} + {u_0} u=dxx+u0
v = y d y + v 0 v = \frac{y}{{dy}} + {v_0} v=dyy+v0

( u , v ) \left( {u,v} \right) (u,v)表示图像中像素的行数和列数, ( u 0 , v 0 ) \left( {u_0,v_0} \right) (u0,v0)表示图像坐标系下的原点在像素坐标系中的坐标, d x {{dx}} dx d y {{dy}} dy表示单个像素分别在 x {{x}} x轴和 y {{y}} y轴上的物理尺寸, x d x \frac{x}{{dx}} dxx y d y \frac{y}{{dy}} dyy的单位为像素。

矩阵表示形式:
[ u v ] = [ 1 d x 0 0 1 d y ] [ x y ] + [ u 0 v 0 ] \left[ {\begin{array}{cc} u\\ v \end{array}} \right] = \left[ {\begin{array}{cc} {\frac{1}{{dx}}}&0\\ 0&{\frac{1}{{dy}}} \end{array}} \right]\left[ {\begin{array}{cc} x\\ y \end{array}} \right] + \left[ {\begin{array}{cc} {{u_0}}\\ {{v_0}} \end{array}} \right] [uv]=[dx100dy1][xy]+[u0v0]
齐次坐标表示形式:
[ u v 1 ] = [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ x y 1 ] \left[ {\begin{array}{ccc} u\\v\\1 \end{array}} \right] = \left[ {\begin{array}{ccc} {\frac{1}{{dx}}}&0&{{u_0}}\\ 0&{\frac{1}{{dy}}}&{{v_0}}\\ 0&0&1 \end{array}} \right]\left[ {\begin{array}{ccc} x\\ y\\ 1 \end{array}} \right] uv1 = dx1000dy10u0v01 xy1

相机坐标系与像素坐标系(相机内参)

相机坐标系到图像坐标系是透视关系

根据三角形相似原理可得:

f Z c = x X c = y Y c \frac{f}{{Z{}_c}} = \frac{x}{{X{}_c}} = \frac{y}{{Y{}_c}} Zcf=Xcx=Ycy
变换形式:
{ Z c ⋅ x = f ⋅ X c Z c ⋅ y = f ⋅ Y c \left\{ {\begin{array}{cc} {Z{}_c \cdot x = f \cdot X{}_c}\\ {Z{}_c \cdot y = f \cdot Y{}_c} \end{array}} \right. {Zcx=fXcZcy=fYc
齐次坐标表示形式:
Z c ⋅ [ x y 1 ] = [ f 0 0 0 f 0 0 0 1 ] [ X c Y c Z c ] Z{}_c \cdot \left[ {\begin{array}{cc} x\\ y\\ 1 \end{array}} \right] = \left[ {\begin{array}{cc} {\begin{array}{cc} f&0&0 \end{array}}\\ {\begin{array}{cc} 0&f&0 \end{array}}\\ {\begin{array}{cc} 0&0&1 \end{array}} \end{array}} \right]\left[ {\begin{array}{cc} {X{}_c}\\ {Y{}_c}\\ {Z{}_c} \end{array}} \right] Zc xy1 = f000f0001 XcYcZc
带入像素坐标系与图像坐标系之间的转换公式:
Z c ⋅ [ u v 1 ] = [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ f 0 0 0 f 0 0 0 1 ] [ X c Y c Z c ] Z{}_c \cdot \left[ {\begin{array}{cc} u\\ v\\ 1 \end{array}} \right] = \left[ {\begin{array}{cc} {\begin{array}{cc} {\frac{1}{{dx}}}&0&{{u_0}} \end{array}}\\ {\begin{array}{cc} 0&{\frac{1}{{dy}}}&{{v_0}} \end{array}}\\ {\begin{array}{cc} 0&0&1 \end{array}} \end{array}} \right]\left[ {\begin{array}{cc} {\begin{array}{cc} f&0&0 \end{array}}\\ {\begin{array}{cc} 0&f&0 \end{array}}\\ {\begin{array}{cc} 0&0&1 \end{array}} \end{array}} \right]\left[ {\begin{array}{cc} {X{}_c}\\ {Y{}_c}\\ {Z{}_c} \end{array}} \right] Zc uv1 = dx10u00dy1v0001 f000f0001 XcYcZc
整理可得:
Z c ⋅ [ u v 1 ] = [ f x 0 u 0 0 f y v 0 0 0 1 ] [ X c Y c Z c ] Z{}_c \cdot \left[ {\begin{array}{cc} u\\ v\\ 1 \end{array}} \right] = \left[ {\begin{array}{cc} {\begin{array}{cc} {{f_x}}&0&{{u_0}} \end{array}}\\ {\begin{array}{cc} 0&{{f_y}}&{{v_0}} \end{array}}\\ {\begin{array}{cc} 0&0&1 \end{array}} \end{array}} \right]\left[ {\begin{array}{cc} {X{}_c}\\ {Y{}_c}\\ {Z{}_c} \end{array}} \right] Zc uv1 = fx0u00fyv0001 XcYcZc

f x {{f_x}} fx f y {{f_y}} fy分别表示相机在 x {{x}} x轴和 y {{y}} y轴方向上的焦距

相机内参(Camera Intrinsics) K {{K}} K为:
K = [ f x 0 u 0 0 f y v 0 0 0 1 ] K = \left[ {\begin{array}{cc} {\begin{array}{cc} {{f_x}}&0&{{u_0}} \end{array}}\\ {\begin{array}{cc} 0&{{f_y}}&{{v_0}} \end{array}}\\ {\begin{array}{cc} 0&0&1 \end{array}} \end{array}} \right] K= fx0u00fyv0001

世界坐标系与相机坐标系(相机外参)

绕z轴的旋转

当一个点 P W ( x w , y w , c w ) {P_W}\left( {{x_w},{y_w},{c_w}} \right) PW(xw,yw,cw) z {{z}} z轴旋转 θ \theta θ角得到点 P C ( x c , y c , c c ) {P_C}\left({{x_c},{y_c},{c_c}} \right) PC(xc,yc,cc) z {{z}} z坐标保持不变, x {{x}} x y {{y}} y组成的 x o y {{xoy}} xoy平面( o {{o}} o是坐标原点)上进行的其实可以看作一个二维旋转。

{ X c = X w cos ⁡ θ + Y w sin ⁡ θ Y c = − X w sin ⁡ θ + Y w cos ⁡ θ Z c = Z w \left\{ {\begin{array}{cc} {{X_c} = {X_w}\cos \theta + {Y_w}\sin \theta }\\ {{Y_c} = - {X_w}\sin \theta + {Y_w}\cos \theta }\\ {{Z_c} = {Z_w}} \end{array}} \right. Xc=Xwcosθ+YwsinθYc=Xwsinθ+YwcosθZc=Zw
矩阵形式如下:
[ X c Y c Z c ] = [ cos ⁡ θ sin ⁡ θ 0 − sin ⁡ θ cos ⁡ θ 0 0 0 1 ] [ X w Y w Z w ] = R z [ X w Y w Z w ] \left[ {\begin{array}{cc} {{X_c}}\\ {{Y_c}}\\ {{Z_c}} \end{array}} \right] = \left[ {\begin{array}{cc} {\cos \theta }&{\sin \theta }&0\\ { - \sin \theta }&{\cos \theta }&0\\ 0&0&1 \end{array}} \right]\left[ {\begin{array}{cc} {{X_w}}\\ {{Y_w}}\\ {{Z_w}} \end{array}} \right] = {R_z}\left[ {\begin{array}{cc} {{X_w}}\\ {{Y_w}}\\ {{Z_w}} \end{array}} \right] XcYcZc = cosθsinθ0sinθcosθ0001 XwYwZw =Rz XwYwZw

绕x轴的旋转

当一个点 P W ( x w , y w , c w ) {P_W}\left( {{x_w},{y_w},{c_w}} \right) PW(xw,yw,cw) x {{x}} x轴旋转 α \alpha α角得到点 P C ( x c , y c , c c ) {P_C}\left({{x_c},{y_c},{c_c}} \right) PC(xc,yc,cc) x {{x}} x坐标保持不变, y {{y}} y z {{z}} z组成的 y o z {{yoz}} yoz平面( o {{o}} o是坐标原点)上进行的其实可以看作一个二维旋转。

y {{y}} y轴类似于二维坐标系中的 x {{x}} x轴, z {{z}} z轴类似于 y {{y}} y

{ X c = X w Y c = Y w cos ⁡ α + Z w sin ⁡ α Z c = − Y w sin ⁡ α + Z w cos ⁡ α \left\{ {\begin{array}{cc} {{X_c} = {X_w}}\\ {{Y_c} = {Y_w}\cos \alpha + {Z_w}\sin \alpha }\\ {{Z_c} = - {Y_w}\sin \alpha + {Z_w}\cos \alpha } \end{array}} \right. Xc=XwYc=Ywcosα+ZwsinαZc=Ywsinα+Zwcosα
矩阵形式如下:
[ X c Y c Z c ] = [ 1 0 0 0 cos ⁡ α sin ⁡ α 0 − sin ⁡ α cos ⁡ α ] [ X w Y w Z w ] = R x [ X w Y w Z w ] \left[ {\begin{array}{cc} {{X_c}}\\ {{Y_c}}\\ {{Z_c}} \end{array}} \right] = \left[ {\begin{array}{cc} 1&0&0\\ 0&{\cos \alpha }&{\sin \alpha }\\ 0&{ - \sin \alpha }&{\cos \alpha } \end{array}} \right]\left[ {\begin{array}{cc} {{X_w}}\\ {{Y_w}}\\ {{Z_w}} \end{array}} \right] = {R_x}\left[ {\begin{array}{cc} {{X_w}}\\ {{Y_w}}\\ {{Z_w}} \end{array}} \right] XcYcZc = 1000cosαsinα0sinαcosα XwYwZw =Rx XwYwZw

绕y轴的旋转

当一个点 P W ( x w , y w , c w ) {P_W}\left( {{x_w},{y_w},{c_w}} \right) PW(xw,yw,cw) y {{y}} y轴旋转 β \beta β角得到点 P C ( x c , y c , c c ) {P_C}\left({{x_c},{y_c},{c_c}} \right) PC(xc,yc,cc) y {{y}} y坐标保持不变, z {{z}} z x {{x}} x组成的 z o x {{zox}} zox平面( o {{o}} o是坐标原点)上进行的其实可以看作一个二维旋转。

z {{z}} z轴类似于二维坐标系中的 x {{x}} x轴, x {{x}} x轴类似于 y {{y}} y

{ X c = − Z w sin ⁡ β + X w cos ⁡ β Y c = Y w Z c = Z w cos ⁡ β + X w sin ⁡ β \left\{ {\begin{array}{cc} {{X_c} = - {Z_w}\sin \beta + {X_w}\cos \beta }\\ {{Y_c} = {Y_w}}\\ {{Z_c} = {Z_w}\cos \beta + {X_w}\sin \beta } \end{array}} \right. Xc=Zwsinβ+XwcosβYc=YwZc=Zwcosβ+Xwsinβ
矩阵形式如下:
[ X c Y c Z c ] = [ cos ⁡ β 0 − sin ⁡ β 0 1 0 sin ⁡ β 0 cos ⁡ β ] [ X w Y w Z w ] = R y [ X w Y w Z w ] \left[ {\begin{array}{cc} {{X_c}}\\ {{Y_c}}\\ {{Z_c}} \end{array}} \right] = \left[ {\begin{array}{cc} {\cos \beta }&0&{ - \sin \beta }\\ 0&1&0\\ {\sin \beta }&0&{\cos \beta } \end{array}} \right]\left[ {\begin{array}{cc} {{X_w}}\\ {{Y_w}}\\ {{Z_w}} \end{array}} \right] = {R_y}\left[ {\begin{array}{cc} {{X_w}}\\ {{Y_w}}\\ {{Z_w}} \end{array}} \right] XcYcZc = cosβ0sinβ010sinβ0cosβ XwYwZw =Ry XwYwZw

小结

旋转矩阵 R = R x R y R z R = {R_x}{R_y}{R_z} R=RxRyRz
R = [ c o s β c o s θ c o s β sin ⁡ θ − sin ⁡ β sin ⁡ α sin ⁡ β c o s θ − cos ⁡ α sin ⁡ θ sin ⁡ α sin ⁡ β sin ⁡ θ + cos ⁡ α c o s θ 0 c o s ∂ sin ⁡ β c o s θ + sin ⁡ α sin ⁡ θ c o s ∂ sin ⁡ β sin ⁡ θ − sin ⁡ α c o s θ c o s ∂ c o s β ] R = \left[ {\begin{array}{cc} {{\rm{cos}}\beta {\rm{cos}}\theta }&{{\rm{cos}}\beta \sin \theta }&{ - \sin \beta }\\ {\sin \alpha \sin \beta {\rm{cos}}\theta - \cos \alpha \sin \theta }&{\sin \alpha \sin \beta \sin \theta + \cos \alpha {\rm{cos}}\theta }&0\\ {{\rm{cos}}\partial \sin \beta {\rm{cos}}\theta + \sin \alpha \sin \theta }&{{\rm{cos}}\partial \sin \beta \sin \theta - \sin \alpha {\rm{cos}}\theta }&{{\rm{cos}}\partial {\rm{cos}}\beta } \end{array}} \right] R= cosβcosθsinαsinβcosθcosαsinθcossinβcosθ+sinαsinθcosβsinθsinαsinβsinθ+cosαcosθcossinβsinθsinαcosθsinβ0coscosβ
R R R代入则完成世界坐标系到相机坐标系的转化:

[ X c Y c Z c ] = R [ X w Y w Z w ] + t \left[ {\begin{array}{cc} {{X_c}}\\ {{Y_c}}\\ {{Z_c}} \end{array}} \right] = R\left[ {\begin{array}{cc} {{X_w}}\\ {{Y_w}}\\ {{Z_w}} \end{array}} \right] + t XcYcZc =R XwYwZw +t
齐次坐标系:
[ X c Y c Z c 1 ] = [ R t 0 1 × 3 1 ] [ X w Y w Z w 1 ] \left[ {\begin{array}{cc} {{X_c}}\\ {{Y_c}}\\ {{Z_c}}\\ 1 \end{array}} \right] = \left[ {\begin{array}{cc} R&t\\ {{0_{1 \times 3}}}&1 \end{array}} \right]\left[ {\begin{array}{cc} {{X_w}}\\ {{Y_w}}\\ {{Z_w}}\\ 1 \end{array}} \right] XcYcZc1 =[R01×3t1] XwYwZw1
相机外参 R t {{Rt}} Rt(Camera Extrinsics):
[ R t 0 1 × 3 1 ] \left[ {\begin{array}{cc} R&t\\ {{0_{1 \times 3}}}&1 \end{array}} \right] [R01×3t1]


世界坐标系与像素坐标系

在相机外参基础上加入相机内参进行计算:
Z w ⋅ [ u v 1 ] = [ f x 0 u 0 0 f y v 0 0 0 1 ] [ R t 0 1 × 3 1 ] [ X w Y w Z w 1 ] Z{}_w \cdot \left[ {\begin{array}{cc} u\\ v\\ 1 \end{array}} \right] = \left[ {\begin{array}{cc} {\begin{array}{cc} {{f_x}}&0&{{u_0}} \end{array}}\\ {\begin{array}{cc} 0&{{f_y}}&{{v_0}} \end{array}}\\ {\begin{array}{cc} 0&0&1 \end{array}} \end{array}} \right]\left[ {\begin{array}{cc} R&t\\ {{0_{1 \times 3}}}&1 \end{array}} \right]\left[ {\begin{array}{cc} {{X_w}}\\ {{Y_w}}\\ {{Z_w}}\\ 1 \end{array}} \right] Zw uv1 = fx0u00fyv0001 [R01×3t1] XwYwZw1
完成世界坐标系到像素坐标系的转换。


总结

尽可能简单、详细的介绍关于NeRF_Pytorch的所需的预备基础知识(随时补充新的),后续会根据自己学到的知识结合个人理解讲解NeRF的原理和代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【三维重建】【深度学习】NeRF_Pytorch代码--预备基础知识 的相关文章

  • PyTorch:如何使用 DataLoaders 自定义数据集

    如何利用torch utils data Dataset and torch utils data DataLoader根据您自己的数据 不仅仅是torchvision datasets 有没有办法使用内置的DataLoaders他们使用的
  • PyTorch 中的截断反向传播(代码检查)

    我正在尝试在 PyTorch 中实现随时间截断的反向传播 对于以下简单情况K1 K2 我下面有一个实现可以产生合理的输出 但我只是想确保它是正确的 当我在网上查找 TBTT 的 PyTorch 示例时 它们在分离隐藏状态 将梯度归零以及这些
  • 推导 pytorch 网络的结构

    对于我的用例 我需要能够采用 pytorch 模块并解释模块中的层序列 以便我可以以某种文件格式在层之间创建 连接 现在假设我有一个简单的模块 如下所示 class mymodel nn Module def init self input
  • Win10 64位上CUDA 12的PyTorch安装

    我需要在我的 PC 上安装 PyTorch 其 CUDA 版本 12 0 pytorch 2 的表 https i stack imgur com X13oS png in In 火炬网站 https pytorch org get sta
  • 无法使用 torch.Tensor 创建张量

    我试图创建一个张量 如下所示 import torch t torch tensor 2 3 我收到以下错误 类型错误回溯 最近调用 最后 在 gt 1 a torch tensor 2 3 类型错误 tensor 需要 1 个位置参数 但
  • pytorch通过易失性变量反向传播错误

    我试图通过多次向后传递迭代来运行它并在每个步骤更新输入 从而最小化相对于某个目标的一些输入 第一遍运行成功 但在第二遍时出现以下错误 RuntimeError element 0 of variables tuple is volatile
  • Pytorch:了解 nn.Module 类内部如何工作

    一般来说 一个nn Module可以由子类继承 如下所示 def init weights m if type m nn Linear torch nn init xavier uniform m weight class LinearRe
  • 使用 pytorch 获取可用 GPU 内存总量

    我正在使用 google colab 免费 Gpu 进行实验 并想知道有多少 GPU 内存可供使用 torch cuda memory allocated 返回当前占用的 GPU 内存 但我们如何使用 PyTorch 确定总可用内存 PyT
  • 如何平衡 GAN 中生成器和判别器的性能?

    这是我第一次使用 GAN 我面临着判别器多次优于生成器的问题 我正在尝试重现PA模型来自本文 http openaccess thecvf com content ICCV 2017 papers Sajjadi EnhanceNet Si
  • torchvision.transforms.Normalize 是如何操作的?

    我不明白如何标准化Pytorch works 我想将平均值设置为0和标准差1跨越张量中的所有列x形状的 2 2 3 一个简单的例子 gt gt gt x torch tensor 1 2 3 4 5 6 7 8 9 10 11 12 gt
  • 在pytorch张量中过滤数据

    我有一个张量X like 0 1 0 5 1 0 0 1 2 0 我想实现一个名为的函数filter positive 它可以将正数据过滤成新的张量并返回原始张量的索引 例如 new tensor index filter positive
  • LSTM 错误:AttributeError:“tuple”对象没有属性“dim”

    我有以下代码 import torch import torch nn as nn model nn Sequential nn LSTM 300 300 nn Linear 300 100 nn ReLU nn Linear 300 7
  • 如何使用Python计算多类分割任务的dice系数?

    我想知道如何计算多类分割的骰子系数 这是计算二元分割任务的骰子系数的脚本 如何循环每个类并计算每个类的骰子 先感谢您 import numpy def dice coeff im1 im2 empty score 1 0 im1 numpy
  • Pytorch 损失为 nan

    我正在尝试用 pytorch 编写我的第一个神经网络 不幸的是 当我想要得到损失时遇到了问题 出现以下错误信息 RuntimeError Function LogSoftmaxBackward0 returned nan values in
  • 如何从已安装的云端硬盘文件夹中永久删除?

    我编写了一个脚本 在每次迭代后将我的模型和训练示例上传到 Google Drive 以防发生崩溃或任何阻止笔记本运行的情况 如下所示 drive path drive My Drive Colab Notebooks models if p
  • 在 Pytorch 中估计高斯模型的混合

    我实际上想估计一个以高斯混合作为基本分布的归一化流 所以我有点被火炬困住了 但是 您可以通过估计 torch 中高斯模型的混合来在代码中重现我的错误 我的代码如下 import numpy as np import matplotlib p
  • 保存具有自定义前向功能的 Bert 模型并将其置于 Huggingface 上

    我创建了自己的 BertClassifier 模型 从预训练开始 然后添加由不同层组成的我自己的分类头 微调后 我想使用 model save pretrained 保存模型 但是当我打印它并从预训练上传时 我看不到我的分类器头 代码如下
  • 如何使用 pytorch 同时迭代两个数据加载器?

    我正在尝试实现一个接收两张图像的暹罗网络 我加载这些图像并创建两个单独的数据加载器 在我的循环中 我想同时遍历两个数据加载器 以便我可以在两个图像上训练网络 for i data in enumerate zip dataloaders1
  • Pytorch 与 joblib 的 autograd 问题

    将 pytorch 的 autograd 与 joblib 混合似乎存在问题 我需要并行获取大量样本的梯度 Joblib 与 pytorch 的其他方面配合良好 但是 与 autograd 混合时会出现错误 我做了一个非常小的例子 显示串行
  • PyTorch 给出 cuda 运行时错误

    我对我的代码做了一些小小的修改 以便它不使用 DataParallel and DistributedDataParallel 代码如下 import argparse import os import shutil import time

随机推荐

  • 利用python,2分钟完成1000台路由器的配置或备份

    0 实现要求 通过2个简单的脚本 检测任意网段中ssh可达的设备并链接 同时对所有设备写入任意华为命令脚本 并记录设备回显的所有内容 如1000台设备 dis cu 显示结果 1 实验准备 此处主要是华为的设备 模拟器使用ensp 4台路由
  • 详谈IEEE浮点数编码机制

    在一些工程领域中单单依靠整数是无法满足他们对精度的需求的 这种时候就需要用到浮点数了 今天着重来聊一聊在计算机底层 浮点数的编码方式 以及它相关值的计算方式 二进制小数 在介绍浮点数之前先来看看二进制中实数可以如何表示 假设我有一个十进制的
  • VS2019中QT槽函数连接及使用

    1 qt连接VS 连接前提是在下载qt的时候将 MSVC 2017装上 点击扩展 选择管理扩展 搜索qt 选择下载 之后下载结束并重新打开后 会弹出一个 QT option 将路径填进去 2 VS中qt的使用 在qt中可以直接添加信号与槽
  • Windows如何关闭电脑休眠(适用所有Windows系统版本)

    方法一 此方法适用所有Windows系统版本电脑 1 点击开始按钮 在搜索框中输入cmd 右键点击选择以管理员身份运行 2 在打开的命令提示符窗口中 输入命令 powercfg h off 然后回车就可以了 3 如果想重新开启休眠功能 同样
  • 时间选择组件默认显示前7天日期

    1 div class st time div
  • windows下openGLES 3.0 配合 vs 环境搭建(二)

    在 http blog csdn net dardgen2015 article details 51563914 中 讨论了怎样搭建openGLes 3 0的环境 但是这种方法需要CMake的配合 不是很方便 接下来我们看看怎样搭建可以不
  • Double型比较大小 compareTo()

    public class DoubleCompare public static void main String args Double d1 100 0 Double d2 90 0 Double d3 150 005 int i 10
  • vue3自定义指令批量注册(按钮防重指令)

    vue3文档中很简单的描述了一下自定义指令
  • es分布式架构和原理分析

    es的分布式架构 前言 这篇初识ElasticSearch文章中 说明了es的集群的核心概念 回顾一下 关于节点 一个运行中的 es实例称为一个节点 而集群是由一个或者多个拥有相同cluster name 配置的节点组成 它们共同承担数据和
  • 计算机四级网络工程师(计算机网络单选)- 知识点

    计算机四级网络工程师 操作系统单选 计算机四级网络工程师 操作系统多选 计算机四级网络工程师 计算机网络单选 计算机四级网络工程师 计算机网络多选 一 Ethernet 1 Ethernet帧结构一般包含前导码 帧前定界符 目的地址 源地址
  • Device Association Service占用CPU - 解决方案

    问题 电脑开启蓝牙后 连接蓝牙设备时 服务主机 Device Association Service服务可能会占用大量CPU 在任务管理器中可以查看 若占用CPU持续超过10 则属于异常状态 由于本人问题已经解决 因此没有问题截图 下文介绍
  • 用R做中文LDA主题模型可视化分析

    LDA主题模型在2002年被David M Blei Andrew Y Ng 是的 就是吴恩达老师 和Michael I Jordan三位第一次提出 近几年随着社会化媒体的兴起 文本数据成为越来越重要的分析资料 海量的文本数据对社会科学研究
  • 99_好题整理1—鸡兔同笼

    F 鸡兔同笼 内存限制 128 MiB 时间限制 3000 ms标准输入输出 题目描述 已知鸡和兔的总数量为n 总腿数为m 输入n和m 依次输出鸡和兔的数目 如果无解 则输出 No answer 不要引号 输入格式 第一行输入一个数据a 代
  • 实用 SQL 语句收藏这篇就够了

    前言 文章沿着设计一个假想的应用 awesome app 为主线 从零创建修改数据库 表格 字段属性 索引 字符集 默认值 自增 增删改查 多表查询 内置函数等实用 SQL 语句 收藏此文 告别零散又低效地搜索经常使用的 SQL 语句 所有
  • STM32程序卡死HardFault_Handler

    在工作过程中移植部分功能程序后发现程序经常性莫名卡死 然后就一直在HardFault Handler中断卡死 解决如下 1 首先去网上查询了出现HardFault Handler是由于什么原因造成 1 堆栈溢出 这个可能性不大 2 数组越界
  • Scrapy+bs4爬取京东商品对应的评论信息

    Scrapy bs4爬取京东商品对应的评论信息 spiders comm py coding utf 8 import json import jsonpath import scrapy from bs4 import Beautiful
  • tomcat端口介绍以及配置启用https

    一 tomcat 默认端口
  • 步进电动机 - 特征篇(一)

    第1章 步进电动机特征篇 1 1 步进电动机特征 步进电动机是如同时钟的秒针一般 每次旋转一定角度的电动机 首先 介绍一下步进电动机的特征 链接 https www orientalmotor com cn web seminar stki
  • 添加区块到区块链当中003

    package main import crypto sha256 fmt 0 定义结构 创建前哈希值 创建当前哈希值 和数据 type Block struct Prevhash byte 前哈希 Hash byte 当前哈希 TODO
  • 【三维重建】【深度学习】NeRF_Pytorch代码--预备基础知识

    三维重建 深度学习 NeRF Pytorch代码 预备基础知识 给定一个场景的多视角的图像 神经辐射场 NeRF 通过图像重建误差优化一个神经场景表征 优化后可以实现逼真的新视角合成效果 NeRF最先是应用在新视点合成方向 由于其超强的隐式