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

news/2024/9/13 23:20:55/ 标签: 深度学习, 人工智能

文章目录

  • 一.pytorch学习
    • 1.配置GPU
    • 2.数据读取
      • 问题1(已解决
      • 问题2(已解决
    • 3.卷积的学习
  • 二.NeRF学习
    • 1.介绍部分
      • 问题1(已解决
    • 2.神经辐射场表示
      • 问题2(已解决
      • 问题3(已解决
      • 问题4(已解决
      • 问题5:什么是视图依赖(已解决
    • 3.体渲染部分
      • 问题1:体积密度到底是什么?(已解决
      • 问题2:体渲染第一个积分公式的理解(已解决
      • 问题3:分层抽样(已解决
      • 问题4:位置编码

一.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:位置编码


http://www.ppmy.cn/news/1475690.html

相关文章

2 Java的基本程序设计结构(基本语法1)

文章目录 前言一、数据类型0 与Python的一些区别1 基本数据类型(1)整型(2)浮点数类型(3)字符(char)类型(4)布尔类型(true、false)(5)代码示例2 引用数据类型二、变量与常量1 变量2 常量(*)3 枚举类型变量(*)4 变量的作用域三、变量和类起名规范1 硬性要求(变量…

Jmeter常用组件及执行顺序

一 常用组件 1.线程组 Thread Group 线程组是一系列线程的集合,每一个线程代表着一个正在使用应用程序的用户。在 jmeter 中,每个线程意味着模拟一个真实用户向服务器发起请求。 在 jmeter 中,线程组组件运行用户设置线程数量、初始化方式等…

golang json反序列化科学计数法的坑

问题背景 func CheckSign(c *gin.Context, signKey string, singExpire int) (string, error) {r : c.Requestvar formParams map[string]interface{}if c.Request.Body ! nil {bodyBytes, _ : io.ReadAll(c.Request.Body)defer c.Request.Body.Close()if len(bodyBytes) >…

蝙蝠避障:为盲人出行插上科技的翅膀

在这个五彩斑斓的世界里,每一步都充满了探索与惊喜。但对于我这样的视障者来说,每一次出行都是一场未知的冒险。我时常面临着难以想象的挑战:如何安全地穿越繁忙的街道,怎样准确地识别前方的障碍物,乃至简单地找到回家…

【机器翻译】基于术语词典干预的机器翻译挑战赛

文章目录 一、赛题链接二、安装库1.spacy2.torch_text 三、数据预处理赛题数据类定义 TranslationDataset批量处理函数 collate_fn 四、编码器和解码器Encoder 类Decoder 类Seq2Seq 类注意事项 五、主函数1. load_terminology_dictionary(dict_file)2. train(model, iterator, …

音频筑基:入门50问

音频筑基:入门50问 通用类编解码类 只问不答,意在启发。 通用类 为什么音频信号分析要从时域到频域?频域变换中,为啥要做TDAC时域混叠消除?人耳听觉频域敏感区是哪部分,为什么?人声发声频域重要…

Python酷库之旅-第三方库Pandas(023)

目录 一、用法精讲 58、pandas.isnull函数 58-1、语法 58-2、参数 58-3、功能 58-4、返回值 58-5、说明 58-6、用法 58-6-1、数据准备 58-6-2、代码示例 58-6-3、结果输出 59、pandas.notna函数 59-1、语法 59-2、参数 59-3、功能 59-4、返回值 59-5、说明 5…

Xcode依赖管理大师:精通项目依赖的艺术与实践

Xcode依赖管理大师:精通项目依赖的艺术与实践 在现代软件开发中,项目依赖管理是确保项目顺利进行的关键环节。Xcode,作为苹果官方的集成开发环境(IDE),提供了一套强大的工具来管理项目依赖。本文将深入探讨…

WordPress:无法创建新文章?创建新帖子时候页面空白

wordPress中我们新建文章的时候,会遇到页面空白,这个问题是怎么导致呢?我们可以打开F12开发者模式看下报错信息,这是一个警告信息 Warning: Creating default object from empty value in /pub 到数据库 wp_posts中查看生成了很…

XML Schema 指示器

XML Schema 指示器 1. 引言 XML Schema 是一种用于定义 XML 文档结构和内容的语言。它提供了一种强大的方式来描述 XML 文档中允许的元素、属性和数据类型。XML Schema 指示器是在 XML Schema 定义中使用的一些特殊元素和属性,它们用于指示 XML 处理器如何解析和验证 XML 文…

OpenCV中使用Canny算法在图像中查找边缘

操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code编程语言:C11 算法描述 Canny算法是一种广泛应用于计算机视觉和图像处理领域中的边缘检测算法。它由John F. Canny在1986年提出,旨在寻找给定噪声条件下的最佳边…

Python使用策略模式和openpyxl库创建Excel文件并追加内容

from openpyxl import load_workbook# 数据数组 data [[1, 2, 3],[4, 5, 6],[7, 8, 9] ]# 打开现有的 Excel 文件 excel_file sheetApend_example.xlsx wb load_workbook(excel_file)# 选择要追加数据的工作表 sheet_name test_Sheet2 # 指定要追加数据的工作表名称 sheet…

Facebook的AI革命:人工智能如何改变社交体验

随着科技的不断进步,人工智能(AI)作为一项革命性的技术,正在深刻影响着社交媒体的发展和用户体验。作为全球最大的社交平台之一,Facebook积极探索并应用AI技术,以提升用户的社交互动、内容分享和个性化体验…

Ubuntu系统安装mysql之后进行远程连接

1.首先要配置数据库允许进行远程连接 1.1 打开MySQL配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf1.2 修改 bind-address 行 #按i进入插入模式 bind-address 0.0.0.0 #按 Esc 键退出插入模式。 #输入:wq 然后按 Enter 保存并退…

C# SqlSugar 如何使用Sql语句进行查询,并带参数进行查询,防注入

一般ORM查询单表数据已经是很简单的一种方式了 详情可以看我的另一篇文章:ORM C# 封装SqlSugar 操作数据库_sqlsugar 基类封装-CSDN博客 下面是介绍有些数据是需要比较复杂的SQL语句来进行查询的时候,则需要自行组装SQL语句来进行查询,下面…

Mybatis-plus3.4.3下使用lambdaQuery报错

在 MyBatis-Plus 中,当使用 lambdaQuery().eq(CommonUser::getOpenId, openId).one() 进行查询时,如果未找到匹配的记录,不会抛出异常,而是会返回 null。 具体来说: 如果查询条件匹配到了数据库中的一条记录&#xf…

java 在pdf中根据关键字位置插入图片(公章、签名等)

java 在pdf中根据关键字位置插入图片&#xff08;公章、签名等&#xff09; 1.使用依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.1.12</version><type>pom</type>…

db期末复习自用[应试向 附习题]

第一章 数据库系统实现整体数据的结构化&#xff0c;主要特征之一&#xff0c;是db区别于文件系统的本质区别。 数据库系统三个阶段&#xff1a;人工、文件、数据库系统。 数据库管理系统的功能&#xff1a;数据库定义、操纵 、&#xff08;保护、存储、维护&#xff09;、数…

web安全及内网安全知识

本文来源无问社区&#xff08;wwlib.cn&#xff09;更多详细内容可前往观看http://www.wwlib.cn/index.php/artread/artid/7506.html Web安全 1、sql注入 Web程序中对于用户提交的参数未做过滤直接拼接到SQL语句中执行&#xff0c;导致参数中的特殊字符破坏了SQL语句原有逻…

【算法】二叉树-迭代法实现前后中序遍历

递归的实现就是:每一次递归调用都会把函数的局部变量&#xff0c;参数值和返回地址等压入调用栈中&#xff0c;然后递归返回的时候&#xff0c;从栈顶弹出上一次递归的各项参数&#xff0c;这就是递归为什么可以返回上一层位置的原因 可以用栈实现二叉树的前中后序遍历 1. 前序…