首页 > 编程语言 >图像算法实习生--面经1

图像算法实习生--面经1

时间:2024-03-12 20:30:09浏览次数:28  
标签:YOLOv3 -- 检测 面经 神经网络 目标 算法 梯度

系列文章目录


文章目录


前言

图像算法实习生–面经1


一、为什么torch里面要用optimizer.zero_grad()进行梯度置0

optimizer.zero_grad()意思是把梯度置零,也就是把loss关于weight的导数变成0

在PyTorch中,使用optimizer.zero_grad()是为了在每次反向传播之前将模型参数的梯度置零。这是因为在PyTorch中,梯度是累积的,即每次计算梯度时都会将新的梯度值加到之前的梯度上。如果不在每次反向传播前将梯度清零,那么梯度值会一直累积下去,导致错误的梯度更新。

因此,通过调用optimizer.zero_grad()可以确保在每次反向传播之前将梯度清零,以便正确计算新的梯度并进行参数更新。这是训练神经网络时非常重要的一步,可以避免梯度累积导致的错误更新。

二、Unet神经网络为什么会在医学图像分割表现好?

  1. U形结构(U-shape architecture):Unet 的结构采用了一种编码器-解码器结构,其中编码器负责逐步提取特征并减少空间分辨率,而解码器则负责逐步恢复空间分辨率和生成分割结果。这种 U 形结构有助于捕获不同尺度的特征信息,适用于医学图像中存在的各种大小和形状的目标。

  2. 跳跃连接(Skip Connections):Unet 中引入了跳跃连接,将编码器中不同层的特征图与解码器对应的层相连接,使得解码器能够利用更丰富的信息进行细致的分割。这种结构有助于减轻信息丢失和梯度消失问题,提高了网络对细节信息的捕获能力。

  3. 数据增强和正则化:医学图像数据通常数量有限且噪声较多,Unet 在训练过程中可以通过数据增强技术(如旋转、翻转、缩放等)增加数据多样性,提高模型的泛化能力。此外,正则化技术(如 Dropout、Batch Normalization 等)也有助于提高模型的鲁棒性和泛化能力。

  4. 适应性损失函数:在医学图像分割任务中,常常需要考虑到目标与背景之间的类别不平衡和边界细节的重要性。Unet 结合了适应性损失函数(如 Dice 系数、交叉熵损失等),能够更好地处理类别不平衡和边界模糊等问题,提高了分割的准确性。

三、transformer相关问题

可参考transformer灵魂21问

四、介绍一下胶囊网络的动态路由

动态路由过程:

  1. 预测输出向量:每个低层胶囊通过乘以权重矩阵预测高层胶囊的输出向量。

  2. 计算相关性:根据低层胶囊输出向量与高层胶囊预测输出向量之间的相似性,计算它们之间的相关性得分。

  3. 更新权重:根据相关性得分动态调整低层胶囊到高层胶囊的权重,使得相关性高的胶囊能够增强其输出信号,而相关性低的胶囊则减弱其输出信号。

  4. 迭代路由:通过多轮迭代的动态路由过程,不断更新权重,使得网络能够学习到输入特征之间的层级关系和整体结构。

五、yolo系列出到v9了,介绍一下你最熟悉的yolo算法

YOLO(You Only Look Once)是一种流行的实时目标检测算法,通过单个神经网络模型同时预测图像中多个目标的类别和边界框。我目前熟悉的是 YOLOv3 版本,接下来我将简要介绍 YOLOv3 的主要特点和工作原理:

YOLOv3 主要特点:

单阶段检测:YOLOv3 是一种单阶段目标检测算法,在一个网络中完成目标检测任务,速度较快。

全图检测:YOLOv3 将整个图像作为输入,在单个前向传播过程中直接输出目标类别和边界框信息。

多尺度预测:YOLOv3 通过使用不同尺度的特征图进行目标检测,可以检测不同大小的目标。

三种不同尺度的输出:YOLOv3 在输出层使用了三种不同尺度的特征图来检测不同尺寸的目标,提高了检测精度。

YOLOv3 工作原理:

基础网络:YOLOv3 使用 Darknet-53 作为基础网络来提取特征,Darknet-53 是一个包含多个卷积层和残差连接的深度卷积神经网络。

特征提取:Darknet-53 提取图像特征,并通过多层卷积和池化操作得到不同尺度的特征图。

检测头:在每个尺度上,YOLOv3 使用检测头来预测目标的类别概率、边界框位置和置信度得分。

非极大值抑制:对于每个尺度上检测到的边界框,采用非极大值抑制(NMS)来去除重叠较多的边界框,得到最终的目标检测结果。

总的来说,YOLOv3 是一种快速而准确的目标检测算法,通过全图检测和多尺度预测实现实时目标检测,并在各种应用中取得了良好的效果。

六、一阶段目标检测算法和二阶段目标检测算法有什么区别?

一阶段目标检测算法:

单阶段检测:一阶段目标检测算法直接在单个网络中完成目标检测任务,不需要额外的区域建议(region proposals)生成步骤。

全图检测:一阶段算法将整个图像作为输入,在一个前向传播过程中直接预测目标的类别和位置信息。

速度快:由于只需一次前向传播,一阶段算法通常速度较快,适用于实时目标检测应用。

二阶段目标检测算法:

两阶段检测:二阶段目标检测算法通常包含两个阶段,第一阶段生成候选区域(region proposals),第二阶段对候选区域进行分类和边界框回归。

区域生成:二阶段算法先通过一些方法(如Selective Search、RPN等)生成可能包含目标的候选区域,然后再对这些区域进行目标检测。

更精准:由于分为两个阶段,二阶段算法通常在检测精度上表现较好,尤其在小目标和复杂场景下效果更佳。

区别总结:

速度 vs 精度:一阶段算法在速度上更快,适合实时性要求高的场景,而二阶段算法在精度上通常更优秀。

区域生成:一阶段算法省略了独立的区域生成步骤,直接通过网络输出得到目标检测结果,而二阶段算法需要额外的区域生成操作。

应用场景:根据具体应用需求和性能要求选择合适的算法,一阶段算法适合要求速度快的实时应用,而二阶段算法适合追求更高检测精度的应用

七、讲一下剪枝

参考 TensorRT模型优化部署 (八)–模型剪枝Pruning

八、讲一下PTQ and QAT量化的区别

参考 TensorRT优化部署(七)–Quantization量化(PTQ and QAT)(二)

九、默写一下GAN的损失函数

生成器的目标是生成尽量真实的数据,最好能够以假乱真、让判别器判断不出来,因此生成器的学习目标是让判别器上的判断准确性越来越低;相反,判别器的目标是尽量判别出真伪,因此判别器的学习目标是让自己的判别准确性越来越高。
当生成器生成的数据越来越真时,判别器为维持住自己的准确性,就必须向辨别能力越来越强的方向迭代。当判别器越来越强大时,生成器为了降低判别器的判断准确性,就必须生成越来越真的数据。在这个奇妙的关系中,判别器判断的准确性由GAN论文中定义的特殊交叉熵来衡量,判别器与生成器共同影响交叉熵,同时训练、相互内卷,对该交叉熵的控制时此消彼长的,这是真正的零和博弈。
特殊交叉熵在生成器与判别器的内卷关系中,GAN的特殊交叉熵公式如下:
在这里插入图片描述

其中,字母是原始GAN论文中指定用来表示该交叉熵的字母,对数的底数为自然底数,表示共有个样本,因此以上表达式是全部样本交叉的均值表达式。表示任意真实数据,与真实数据相同结构的任意随机数据,表示在生成器中基于生成的假数据,而表示判别器在真实数据上的输出结果

十、了解其他的变种GAN吗?CycleGAN?

参考 CycleGAN

十一、不平衡数据怎么处理?

参考 动态加权平衡损失

十二、讲一下神经网络反向传播原理

前向传播:
在神经网络的训练过程中,首先对输入数据进行前向传播,计算神经网络的输出结果。具体而言,对于每一层神经元,都会计算加权输入并通过激活函数得到输出,然后将该输出作为下一层神经元的输入。

损失函数:
在前向传播的过程中,根据神经网络的输出结果和真实标签计算损失函数(loss function),用于衡量神经网络的输出与真实值之间的差距。

反向传播:
反向传播是指根据损失函数,从神经网络的输出层开始向输入层逐层计算梯度,并利用梯度下降法来更新神经网络中的参数(权重和偏置)。具体步骤如下:

  1. 从损失函数开始,计算损失函数对网络输出的梯度。
  2. 将该梯度沿着网络反向传播,计算每一层的梯度,使用链式法则将上一层的梯度乘以当前层的激活函数的导数。
  3. 利用计算得到的梯度信息,通过梯度下降法等优化算法来更新神经网络中的权重和偏置,使得损失函数尽可能减小。

十三、torch里面保存模型的两种方法

参考pytorch保存模型的两种方式


总结

多吃核桃补补脑

标签:YOLOv3,--,检测,面经,神经网络,目标,算法,梯度
From: https://blog.csdn.net/m0_70420861/article/details/136650339

相关文章

  • 力扣hot100题解(python版69-73题)
    69、有效的括号给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例1:输入:s="()"输出:true示例2:输入:s="()[......
  • Spring MVC——API(5)
    SpringMVC——API(5)一、实验目的二、实验用的仪器和材料三、实验的步骤和方法四、备注或说明一、实验目的(1)掌握RestfulAPI的开发方法(2)掌握Controller、Service、VO、BO的概念(3)了解参数合法性检查的方法二、实验用的仪器和材料(1)硬件:PC或Mac一台;8G及以上内存,40G硬盘......
  • JavaEE开发环境配置(1)
    JavaEE开发环境配置(1)一、实验目的二、实验用的仪器和材料三、实验的步骤和方法四、数据记录和计算五、实验结果或结论六、总结一、实验目的(1)掌握JDK、Maven、Tomcat、Idea等开发环境的安装和配置(2)理解Servlet的基本原理(3)掌握Servlet项目的配置和运行方法二、实验......
  • 一中颂二首
    一中颂(其一)蝉鸣奏乐章,榆柳蕴书香,旧草映水碧,新雨润苔苍。青春飞扬五十载一中校园颂华章师生情谊情长在共庆盛世芳名扬路途遥,冰千丈梦想之花绽芬芳桃李树下传佳话勇毅奋斗铸辉煌一中颂(其二)阳光为教室镀上金边映照红叶与青山微风轻拂过花间小径落英缤纷如梦幻......
  • ansible-playbook剧本 yaml json jq 学习
    ansible临时命令ad-hocansible中有两种模式,分别是ad-hoc模式和playbook模式ad-hoc简而言之,就是"临时命令"https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html临时命令非常适合您很少重复的任务。例如,如果您想在圣诞节假期关闭实验室中的所有机器。Ansib......
  • VIM-灰常有用的正则匹配
    一、VIM,GVIM中正则匹配的用处VIM的一个强大之处就在于其文本搜索、匹配的能力,可用于替换、删除、查找等,极大提升用户的文本编辑效率,写代码必备技能。二、常用的匹配字符大体上可以分为四类,字符的匹配、数量的匹配(也可理解为匹配次数)、位置的匹配(开头、结尾等),和特殊字符的匹配......
  • 苍穹外卖项目问题
    1.数据库表你是怎么设计的?分为员工表、用户表、分类表、菜品表、套餐表、套餐菜品对应表、口味表、购物车表、订单表、订单详细表、地址表。为什么用逻辑外键,而不用数据库自带的外键?数据库通过外键来保证数据的完整性一致性,外键的缺点--对海量数据,性能低,因而使用逻辑外键来保证......
  • d3d12龙书阅读----Direct3D的初始化
    d3d12龙书阅读----Direct3D的初始化使用d3d我们可以对gpu进行控制与编程,以硬件加速的方式来完成3d场景的渲染,d3d层与硬件驱动会将相应的代码转换成gpu可以执行的机器指令,与之前的版本相比,d3d12大大减少了cpu的开销,同时也改进了对多线程的支持,但是使用的api也更加复杂。接下来,我......
  • 高dpi下,Vb.net调整控件位置的小经验
     高dpi下,Vb.net调整控件位置的小经验 boy8199/3vdo/club最近写了一个捕快TXT网文采集软件,结果发现在DPI不同的情况下,软件布局会变形.找了半天原因才发现是DPI的问题,默认系统的dpi是96(100%)现在显示器的屏幕比较大,所以好多人会把显示放大到125%或150%导致程序控件变形......
  • Vue3——集成mock 模拟数据生成器
    安装依赖[email protected]在vite.config.js文件中引入并配置vite-plugin-mock插件import{UserConfigExport,ConfigEnv}from'vite'import{viteMockServe}from'vite-plugin-mock'importvuefrom'@vitejs/plugin-......