周报(1)<仅供自己学习>

一.pytorch学习

1.配置GPU

os.environ[‘CUDA_VISIBLE_DEVICE’]=0’    xxx.cuda()
device=torch.device[‘cuda:1if torch cuda is avilable()else ‘cpu’]
xxx.to_device(device)

2.数据读取

问题1(已解决

问题:为什么要先转换为PIL?
PIL可以调整尺寸并且转化为ToTensor

data_transform=transform.Compose([transforms.ToPILimage(),transform.Resize(size),transform.ToTensor()])
#官方读取:
train_data=datasets.FashionMNST(root=./,train=True,download=True,tramsfrom=data_transform)
csv:
def __init__(self,df,transform=None)
self.df=df
self.transform=transform:
#图像简单处理
self.images=df.iloc[:,1:].values.astype(np.uint8)
self.labels=df.iloc[:,0:1].values
def __len__:
return len(self.images)
def __getitem__(self,idx):
image=self.images[idx].reshape(28,28,1)
label=int(self.labels[idx])
if self.transform is not None:
image=self.transform(image)
else:
image=torch.tensor(image)
lable=torch.tensor(lable,dytpe=torch.long)
return image,lable

问题2(已解决

问题:为什么要转换为int?
原本是字符串

3.卷积的学习

卷积的目的:特征划分之后提取最有用的特征,使得特征减少。

#模型构造
class CNN(nn.Module)
##初始化
def __init__(self):
super(CNN,self).__init__():
self.conv(个人属性)=nn.Sequential(
nn.Conv2d(1,32,5),
nn.RuLu(),
nn.MaxPool2d(2,stride=2)
nn.Conv2d(32,64,5),
nn.RuLu(),
nn.MaxPool2d(2,stride=2)
nn.Droput(0.3)
)
self.fn=nn.Sequential(
nn.Linear(64*4*4,512)
nn.ReLu()
nn.Linear(512,10)
)
##前向传播函数
def forward(self,x):
x=self.conv(x)
x=x.view(-1,64*4*4)
x=self.fc(x)
return x
##准确率函数
def accuracy(predictions,labels):
pred=torch.max(predictions.data,1)[1]
rights=pred.eq(labels.data.view_as(pred)).sum()
return rights,len(labels)
##实例化
net=CNN()
##损失函数
criterion=nn.CrossEntropyLoss()
##优化器(怎么实现的?)
optimizer=optim.Adam(net.parameters(),lr=0.001)
for epoch in range(num_epochs):
train_rights=[]
for batch_idx,(data,target) in enumerate(train_loader):	
net.train()
output=net(data)
loss=criterion(output,target)
optimizer.zero_grad()
loss.backward()
optimizer.step()
right=accuracy(output,target)
train_rights.append()
 net.eval()(评估模式)

二.NeRF学习

  1. 学会了NeRF的输入输出以及NeRF的过程

1.介绍部分

问题1(已解决

已知相机姿态的图像?相机姿态也就是指的是两个观察角么?
可以获得获取到相机位置和方向信息的图片

2.神经辐射场表示

问题2(已解决

1.5D函数是什么(不是一组5D点么,怎么会有函数)?
2.文中所说可以通过相机光线获得一组3D点,再根据两个观察方向输入神经网络(这两个观察方向怎么确定的?)
3.两个观察方向就可以确定相机光线的位置么?

两个观察方向决定:光线从相机射向场景中某一点的方向,其中θ表示与z轴的夹角(俯仰角),而φ表示与x-y平面的夹角(极坐标)
这里的“5D函数”实际上是指一个将5D坐标映射到输出值(颜色和密度)的数学模型
这个就是5D函数

问题3(已解决

x和d是什么玩意F是什么玩意?
x是空间坐标,d是两个方位角

问题4(已解决

怎么限制两个相关
(构建MLP体现了)

问题5:什么是视图依赖(已解决

不仅考虑像素空间位置还会考虑观察者的方向
体现在这个公式d就是观察方向

3.体渲染部分

问题1:体积密度到底是什么?(已解决

文中说是射线在位置 x 处终止于无穷小粒子的微分概率。

可以理解为σ(x) 指的是在空间中位置 x 处单位体积对光线的阻挡能力

从数学上说

如果 σ(x) 很小,这意味着在位置 x 的单位体积内粒子较少,射线穿过这个体积而没有被终止的概率较高。
如果 σ(x) 很大,这意味着在位置 x 的单位体积内粒子较多,射线穿过这个体积时被终止的概率较高。

问题2:体渲染第一个积分公式的理解(已解决

第一种思想:
参考了这篇文章
可以联系Max文章
结合了两种模型,发射模型和吸收模型

解出

根据文章内容写出该项是背景光所以约去(NeRF文章中不考虑背景光)
为什么是背景光?
我的理解可能是那些从介质外部进入并穿过介质到达观察者的光。这部分光可能来自于远处的光源,如太阳,或者是场景中的其他照明。
最终

第二种思想:

T(s)表示从s=0点到s=s点光没有被遮挡的概率,是一个积累量,感觉类似与光线在每个位置的权重
乘上体积密度和颜色值积累就可以表现出反应了物体的反射,吸收等光效应的光点。
T(s+ds)=T(s)(1-体积密度*ds)体积密度是概率密度函数。

问题3:分层抽样(已解决

抽出一份Ci


抽出的一份认为体积密度和颜色值不变
将T值拆解
化简得到:


将T(0->tn)拆解就是
T(0->tn)=(1-a0)(1-a2)…(1-an-1)

问题4:位置编码

相关推荐

  1. spring xml实现bean对象(自己参考)

    2024-07-14 23:26:02       31 阅读
  2. redis的分片集群(自己参考)

    2024-07-14 23:26:02       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 23:26:02       101 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 23:26:02       109 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 23:26:02       87 阅读
  4. Python语言-面向对象

    2024-07-14 23:26:02       96 阅读

热门阅读

  1. GitHub每周最火火火项目(7.8-7.14)

    2024-07-14 23:26:02       23 阅读
  2. Mybatis一对一,一对多关联查询

    2024-07-14 23:26:02       30 阅读
  3. R语言简单介绍及零基础学习路径

    2024-07-14 23:26:02       22 阅读
  4. 在unity中的球形插值方法中第三个参数t是什么

    2024-07-14 23:26:02       21 阅读
  5. linux安装pure-ftpd-1.0.51

    2024-07-14 23:26:02       22 阅读