我是如何被我的暑研榨干的

发布时间 2023-08-01 02:09:41作者: 珍珠鸟

一些基础知识:

三分钟读懂Softmax函数 - 知乎 (zhihu.com)

softmax是一般用于分类任务最后一层分类用的,将输入的数值向量分别转成概率的形式,最后概率加起来为1. 

公式是H(x) = sigmai (exp(x)/exp(i))

注意因为ex是指数函数,所以可能会爆栈,考虑一种改进手段m = max(xi) 将上式中的 x 换成 m-x ,i 换成 m-i 

 


 

 

Test-Time Adaptation - 知乎 (zhihu.com)

自动驾驶三维目标检测综述:3D Object Detection for Autonomous Driving: ASurvey - 知乎 (zhihu.com)

李宏毅 | 机器/深度学习教程(双语字幕) | p28-概述领域自适应 (Domain Adaptation)_哔哩哔哩_bilibili

domain adaptation:

用于解决源域和目标域的分布不一样的问题。

模型可以分为特征提取的阶段和对特征总结进行分类的阶段。训练的时候把源域和目标域同时作为模型的输入,目的是使二者提取出来的特征分布相同。整个模型的目标是 使最后任务classification的loss越小,同时使通过特征分辨输入域的loss越大。这个过程类似于GAN

 11.1 迁移学习【斯坦福21秋季:实用机器学习中文版】_哔哩哔哩_bilibili

finetune:

将一个模型泛化到其他应用场景中,模型的前n-1层parameter不变,仅将最后一层的参数设置为random进行训练。相当于从原来的一个全random的状态,直接快进到离目标点较近的状态,这样可以把学习率调低一点进行训练。

finetune能加速收敛,但是并不总能提高准确性。anyway, 也不会让精度变低,所以最坏的情况是精度不变,收敛更快。

 

2-FPN网络架构实现解读_哔哩哔哩_bilibili

maskrcnn 是常见的目标检测的模型,可以执行目标检测和语义分割的任务

maskrcnn和yolo的区别是yolo直接从图像上生成框,速度快,适用于实时的场景。maskrcnn是现在图像上生成各种预选框,然后在其中选择一个最合适的框。

有一个FPN层,类似于ResNet,如果只使用最后一层的特征vector的话,会丢失一些小物体的特征,因此考虑每一层的结果都会加入到最后特征的生成中,这个过程涉及到上采样等手段。

(338条消息) 边框回归(Bounding Box Regression)详解_南有乔木NTU的博客-CSDN博客

边框回归就是将一个预选的边框逐步回归到最终正确的边框的过程。在这个过程中边框保存的是中心点的横纵坐标以及边框的长宽四个信息。移动的过程中,中心点的坐标需要拿移动的距离差除以长或宽,这是为了保证对于不同尺寸但是特征相同的图在回归过程中的同一性。长宽的缩放的过程中需要exp,因为要保证缩放的比例都是大于0的

一文读懂Faster RCNN - 知乎 (zhihu.com)

fasterrcnn用于识别图像中的物体,骨架包括四个部分。

第一部分是用多个卷积层池化层进行特征提取

第二部分是FPN层,用于预选可能存在目标的边框,判断是positive还是negative,并且进行边框回归,得到proposal

第三部分是roi pooling,用于综合feature和proposal,提取proposal的特征图用于后续的classification

第四部分是对proposal框出来的进行classification分类具体是什么,同时再次进行边框回归,精确定位

最后的训练过程这几个部分会迭代一下,不过从论文来看只是迭代两遍。

捋一捋pytorch官方FasterRCNN代码 - 知乎 (zhihu.com)

无需源域数据的领域自适应 Source-Free Domain Adaptation - 知乎 (zhihu.com)

ICML2020_Do we really need to access the source data? Source hypothesis transfer for unsupervised domain adaptation

(340条消息) 无源领域自适应:Source Hypothesis Transfer for Unsupervised Domain Adaptation_do we really need to access the source data? sourc_周杰伦的半岛铁盒的博客-CSDN博客

这篇是差不多是SFDA的开山之作,主要思想是原来的模型包括feature extractor和classification,现在classification不动,对feature extractor进行fine-tune,使其适应target source,注意,模型中分类器是锁住的,只有特征提取器没有锁,同时在后面训练的时候考虑使用了伪标签的方法但是这个不是主要的。

 

与此对应的UDA,不会锁住模型的任何一个部分,同时应用了伪标签学习的技术,先对target生成伪标签,然后根据置信度选出一批数据,然后对整个的数据进行Loss学习

 

NIPS2021_Exploiting the intrinsic neighborhood structure for source-free domain adaptation

这篇融合了图卷积网络的思想,对于每一个点的分类通过一个损失来约束使其与它的“互相均为近邻”点的分类相同

ICCV2021_Generalized source-free domain adaptation

这篇文章考虑到其他SFDA最终的模型只能适用于目标域不适用于源域,因此提出了一种attention机制使特征vector可以适用于不同的域,对于不同的domain,feature vector只有特定的维度有值,其他维度的值均为0,这个可以用线性代数里面的矩阵乘法来实现

 

离线不行,提出了统一的框架

mean-teacher框架是为了解决对跨域导致的噪声的过拟合的问题,但是1)不够鲁棒 2)没有充分利用目标样本

使用了对比学习中的对比损失来监督student的训练

有一个MemXformer模块,用来存储目标分布的原型模式

理解对比学习 - 知乎 (zhihu.com)

对比学习就是比较两个对象的相似度,如果相似度高就拥有类似的特征

 

(338条消息) 弱监督学习--半监督学习(3):Mean teachers are better role models_饮冰l的博客-CSDN博客

(338条消息) Mean Teacher学习笔记(一)_Demon果的博客-CSDN博客

ZHKKKe/PixelSSL: A PyTorch-based Semi-Supervised Learning (SSL) Codebase for Pixel-wise (Pixel) Vision Tasks [ECCV 2020] (github.com)

domain adaptation模型成功的关键在于提高target的质量,对于提高target的质量有两种方法:1)精心选择更好的噪声 2)找一个更好的teacher模型

这里主要解决的是无标签的样本只能在epoch结束的时候才能更新参数,这对于在线的任务来说是不行的。mean-teacher的模型核心是老师提供一个供学生学习的模型,这个模型的参数由过往几次学生学习的结果取平均,学生模型的参数变化还是用的梯度下降

图解SimCLR框架 - 知乎 (zhihu.com)

上面已经说了对比学习大意是什么,就是说首先对一张图片进行多种增强(论文中是两种),然后计算这两个图片之间,当前图片与别的图片之间的相似度(余弦相似度),然后根据相似度计算loss,目的是同一种图片增强得来的图片相似度越高越好,同时对于别的图片相似度越低越好,这些相似度计算应用的loss是针对于增强之后的图片的feature进行学习。

Test time adaptation方法总结 - 知乎 (zhihu.com)

Tent: Fully test-time adaptation by entropy minimization

这篇文章和SFDA是同期的论文,目标是最小化最后预测结果的熵,现在拿到的只是源域训练出来的模型的参数,并且高维的参数牵一发而动全身,所以这篇文章只考虑到调整线性(尺度变换)和低维(通道)的参数,即归一化过程中的参数。

伪标签(Pseudo-Labelling)——锋利的匕首 - 知乎 (zhihu.com)

伪标签的使用条件是满足聚类假设和熵正则化,应用于半监督学习。

伪标签训练的过程就是先拿有标签的数据训练模型,然后拿初步训练的模型去预测无标签的数据,从结果中挑选出高置信度的数据,将其和有标签的数据一起再训练模型,高阶的伪标签训练这个训练过程中模型会不断迭代。

(338条消息) 《论文阅读》xMUDA: Cross-Modal Unsupervised Domain Adaptation for 3D Semantic Segmentation_未知丶丶的博客-CSDN博客

使用了2D和3D的数据,先各自提取特征,各自进行语义分割,然后分别预测对方的语义,如2D图去预测3D点云的语义,和3D点云自己分割的结果一起,维护整个的loss。最终使两个模态的输出对齐。

 

深度学习中的知识蒸馏技术(上) - 知乎 (zhihu.com)

(338条消息) 知识蒸馏技术(教师学生模型)_教师学生网络模型_Hygge MrYang的博客-CSDN博客

【经典简读】知识蒸馏(Knowledge Distillation) 经典之作 - 知乎 (zhihu.com)

化学中的蒸馏即为通过不同的温度将混合物中特定的物质分离出来。知识蒸馏的过程也是类似,现在有一个teacher模型,这个模型很大,参数很多,包含的信息量也很大,泛化能力较强,因此考虑用这个大模型去指导训练一个小的模型,这个小的模型我们称为student模型,我们需要将大模型中适用于这个小模型应用场景的信息提取出来,因此提出了知识蒸馏这个概念,对于softmax改进的过程就是在指数的分母上除以了一个温度T,T越大整个特征图的曲线越平滑,T越小,曲线越陡峭,最后近似于一个one-shot图,T=1的话就是原来那个softmax,训练的时候teacher的损失函数是teacher的soft-target和student的soft-target取交叉熵,student的损失函数soft-target和ground truth取交叉熵。最后得出的预测结果用的是student的hard-target。