当前位置: 首页 > news >正文

b-up:Enzo_Mi:深度学习基础知识

1.最近邻差值(Neareast Neighbor Interpolation)

插值算法 | 最近邻插值法_哔哩哔哩_bilibili

上图中最后一行,第一个图像,因为目标像素(放大后,位于第1行第0列的像素)距离它最近的原图的像素的像素值为1,因此该目标像素取值为1。

把原图分别进行 上采样

方式1:最近邻插值

方式2:双线性插值

肉眼观看,方式2效果更好,没有锯齿状,更平滑

虽然在上采样阶段,  使用双线性插值可以得到比最近邻差值效果更好的 图片,但是对于语义分割任务并不合适。

语义分割任务只能使用最近邻插值,因为其标注时 将目标对应像素点的值赋值为1,背景赋值为0, 边缘赋值为255, 当通过数据增强进行图片缩放时,使用最近邻插值  ,得到的新图像的语义标签中像素值只包含 0,1,255,   这个三个数值对语义分割网络训练具有意义, 其他数字没有意义。

当使用双线性插值,会导致语义标签图像中出现  如   111,126等数字,这些数字没有意义,对网络训练没有用处。

个人

疑惑:对于实例实例分割,可以使用双线性插值吗? 

语义分割网络训练时,  可能进行图像缩放这一数据增强方法,因此只能使用 最近邻差值 防止语义标签出现  非规定中的数字。 

但是对于实例实例分割,可以使用双线性插值吗? 

最近使用YOLO-SEG, 发现将最近邻插值替换为 双线性插值, 精度有些提升。

2.双线性插值(bilinear  interpolation)

插值算法 |双线性插值法_哔哩哔哩_bilibili

将源图像t0进行上采样, 使用双线性插值, 首先:需要将放大的图像(t1)等比例缩小为源图像尺寸t3。

 

缩放为源图像尺寸大小,需要进行对齐,有两种对齐方式:

1.角对齐:需要将 t3与t0的网格中心点对齐, 这种需要t1缩小的尺度更大

2.边对齐,需要将t3与t0的边对齐,这种需要t1缩小的尺度比角对齐小一些

具体可以见pytorch官网的说明

该链接的内容

注意:像素值分别为v1,v2,v3,v4

 代码示例

角对齐

边对齐

角对齐

上述两段代码。第一个自已编写, 第二个是调用函数库

注意:这里以最左上角像素点的中心点的坐标作为原点坐标(0,0),而不是边界框的角点

边对齐

使用pytorch函数

 

3.双三次插值算法(Bicubic)

双: X,Y两个方向

三次:计算目标像素点周围像素权重时,使用三次项公式计算周围权重

 

与上述两种插值方法  初始步骤相同,将放大的图像t1进行缩小,缩小为源图像t0尺度t2,然后对照源图像,计算目标像素点

上图中, 发现t2的一个像素点在t0中,刚好位于t0中四个像素点之间的中心

 

双三次插值,取周围16个像素点的值进行计算

上图:

第一行表示 一维插值

第二行:二维差值,彩色点表示原图像素点,彩色点的高低表示该像素点的像素值,黑色点表示放大图像中的像素点,其高低表示所计算的采样值。

x只能表示 X或Y一个方向的距离

因此需要计算两次权重,分别表示X,Y方向

上图:右边第一个小图,

蓝色点(目标点)与源图像素的一个红点重合, X,Y方向距离均为0, 则该源图的像素点在X或Y方向的对应的权重为1,

右边第二个小图,蓝色点(目标点)与源图像素的一个红点在X,Y距离上均为1, 则该源图的像素点在X或Y方向的对应的权重为0

因此:参考上图的曲线图

在X方向距离为0,则在X方向取得权重为1;

在X方向距离为1,则在X方向取得权重为0;

在X方向距离为2,则在X方向取得权重为0;

根据距离的不同(0.5,1.5等)分别选择权重计算公式W(x)的三个不同分段函数

 

将在X,Y方向   计算出的16个值相加得到3.5 

使用个人编写程序, 以及pytorch 程序进行验证 

4.IoU与NMS

NMS 非极大值抑制 | IoU 交并比_哔哩哔哩_bilibili 

 待看

。。。

参考资料

1.插值算法 | 最近邻插值法_哔哩哔哩_bilibili

http://www.dtcms.com/a/287016.html

相关文章:

  • 回归预测 | MATLAB实现SA-BP模拟退火算法优化BP神经网络多输入单输出回归预测
  • 7.19 pq | 并查集模板❗|栈循环|数组转搜索树
  • CCF编程能力等级认证GESP—C++4级—20250628
  • Nestjs框架: 关于controller中的常用装饰器
  • 3.3 参数传递方式
  • 写case杂记
  • Glary Utilities(系统优化工具) v6.20.0.24 专业便携版
  • JavaSE -- 数组详细讲解(数组介绍,Arrays常用方法,二维数组创建)
  • Redis学习其三(订阅发布,主从复制,哨兵模式)
  • 优迅股份IPO隐忧:毛利水平“两连降”,研发费用率不及行业均值
  • decltype是什么,什么作用?
  • 【c++】指针的另一大用途:限制实参必须是变量
  • Fish Speech:开源多语言语音合成的革命性突破
  • Nestjs框架: 基于TypeORM的多租户功能集成和优化
  • LeetCode1047删除字符串中的所有相邻重复项
  • wsl 安装 nvm
  • [QOI] qoi_desc | qoi_encode | qoi_decode
  • 高防IP能够防御CC攻击吗?它具备哪些显著优势?
  • 服务管理智能化:R²AIN SUITE 升级带来的两大功能更新哪些值得关注?
  • T5(Text-to-Text Transfer Transformer) 模型
  • 20250718-5-Kubernetes 调度-Pod对象:重启策略+健康检查_笔记
  • 【Spring WebFlux】什么是响应式编程
  • 前缀和 HASH
  • proxy_cache缓存系统
  • 期刊论文-图片格式要求
  • UNet改进(23):如何用SLCAM模块提升UNet的分割性能
  • Google Gemini CLI 配置简要指南
  • 大模型驱动的超短期功率预测算法封装方案
  • SymAgent(神经符号自学习Agent)
  • PowerBi实现Top N和Bottom N的简单示例