自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 ai awb paper 总结

准无监督颜色恒常性 - 知乎 (zhihu.com)

2024-03-25 14:59:20 108

原创 Q-BENCH: A BENCHMARK FOR GENERAL-PURPOSEFOUNDATION MODELS ON LOW-LEVEL VISION

简单来说,作者对MLLMs在lowlevel领域中的评价提出了一个测试基准,主要分三点进行讲述。有点类似于综述,显然作者团队在MLLM的lowlevel领域属于开山之作了。继续分享Q系列文章,今天分享Q-BENCH。

2024-01-10 15:07:36 433

原创 Q-BOOST: ON VISUAL QUALITY ASSESSMENT ABILITY OF LOW-LEVELMULTI-MODALITY FOUNDATION MODELS

再其次,如果只有good和bad,然后bad还等于0,那其实很难区别出好有多好,坏有多坏,而加入一个mid,还是那句话,虽然在文本的返回上只是多了一个token罢了,但是这个token如果经过log和sftmax之后可就是一个有权重的系数了,这样的影响是远远比只有good和bad要大的。ok,连续的图,为啥说是连续的图呢,因为开始作者也不确定策略2的效果啥样,然而经过试验发现,策略二只对VQA有效果,对IQA可以说不仅没有增强反而还弱化了,所以结论可以说是对于连续的图来说,就是视频。图像或视频质量估计。

2024-01-04 21:11:02 838

原创 Unexpected key(s) in state_dict: “conv_none.conv1.bias“, “conv_none.conv1.weight_orig“, “conv_none.c

【代码】Unexpected key(s) in state_dict: “conv_none.conv1.bias“, “conv_none.conv1.weight_orig“, “conv_none.c。

2023-12-19 16:23:39 477

原创 atc量化算子注意事项

1.nn.ReflectionPad2d()不支持。有的人喜欢先用这个填充然后再用卷积,其实直接在卷积里使用padding就行,也可以改想要的填充模式。3.卷积反卷积的时候,output_padding参数不支持。2.上采样只能用nearest,

2023-12-01 15:38:04 82

原创 convTranspose卷机上采样算子outputpadding不支持

k=2stride = 2getdone。

2023-12-01 11:27:09 50

原创 记录一下模型加载定义时的小trick --state_dict​​或​​torch.nn.Module.load_state_dict()​​的​​strict​​函数

strict 变量 去改变加载模型参数时的方式,为什么出现这个问题,因为有的网络在class init下会定义很多模型函数的对象,但是并不代表定义就一定被调用,假设在forward中没有被调用,那么如果strict不是false的话,模型遇到没有使用的key值就会报错。所以在我们完全理解网络之后,可以手动去取消这个strict。

2023-11-27 10:48:11 93

原创 超分网络训练过程中val出现颜色变化的问题

如图所示,训练过程中验证集出现上图问题,并不是所有val都这样,不明白这样的效果发生表示模型训练一定失败吗?之前的经验来说,不应该出现这样的现象,但是观察发现这样的效果有退化的趋势。

2023-11-16 11:17:02 64

原创 关于pip basicsr,facexlib,realesrgan et al.安装报错。

问题在于首先 -i的源要换成阿里的源,然后要安装他要求的库,在github上都有,或者默认也会自动pip,但是cython这个需要手动安装,pip install cython -i xxx 之后问题解决。上图这种错误,或者其他的错误,有的方法让去github上安装,那种方法到setup.py的时候也会报错。首先basicsr是一个超分的库,在ubuntu系统上pip时会报错。

2023-11-13 12:00:39 315

原创 修改pt,生成新的pt文件,删除带有up的层。

【代码】修改pt,生成新的pt文件,删除带有up的层。

2023-11-07 09:37:50 108

原创 onnx替换pt进行推理代码

【代码】onnx替换pt进行推理代码。

2023-11-06 11:50:49 233

原创 MACs (乘加运算次数)和 FLOPs (浮点运算次数)关系,onnx函数计算方式

2. 如果乘法和加法都计1 FLOPs,那么 MACs = FLOPs综上,MACs 和 FLOPs 的关系具体取决于计算方式,但更标准的做法是:MACs 和 FLOPs 是一个量级,它们的数值相等或近似相等。1. 如果乘法计2 FLOPs,加法计1 FLOPs,那么 MACs = 2 * FLOPs。之所以网上有人说它们是二倍关系,可能是采用了乘法计2 FLOPs的计算方式。所以,MACs 和 FLOPs 可以看作相等,都是反映模型计算量的指标。但这并不是一个标准的计算方法。

2023-11-01 17:14:48 813

原创 ISP中tonemapping和gamma变换心得。

而对于16位的rgb,不好判断是否经过了gamma变换,第一种方式是通过直方图来看亮度分布,如果都分布在很黑的像素点,那可能就是没有经过gamma变换,因为一般经过gamma变换后的图像亮度分布比较平均,但是16位的png本来就是很黑呀,所以通过直方图还是不好判断,还有一种方式便是通过反gamma,看看图像经过反gamma之后是否明显造成了信息损失,包括亮度,信息等。首先对于8位的rgb,那肯定都是经过了gamma变换后的结果了,因为8位的rgb,肯定完全走完了isp流程。

2023-09-21 16:21:23 211

原创 HDRUNet: Single Image HDR Reconstruction withDenoising and Dequantization

找到之后,我们打开某一个文件夹下,会看到一组gt,long,mid,short,alignratio.npy,exposure.npy。执行这个yml就行,里面给定好路径,这里作者没有详细说明,其实要的都是png的图片。模型最优效果,21年的第二名,比之前的网络更简洁效果更好,比21年的第一名只差0.00几的精度。对于该文章网上有很多相关解读。简单看一下网络结构,是一个经典的UNet baseline的网络,对模型部署是比较友好的。有残差,有注意力机制,有权重选择,,具体结构不分析了,并不复杂,没有bn。

2023-09-21 16:06:45 217

原创 quick sort(快速排序)代码

【代码】quick sort(快速排序)代码。

2023-07-03 14:50:05 101

原创 VIT手撕代码简洁版

【代码】VIT手撕代码简洁版。

2023-06-15 18:03:57 147

原创 OCR使用开源

之前用过百度的ocr,GitHub上蛮复杂感觉,官网的需要money,且接口不能一直循环调用。这里分享一个好用的方法。

2023-05-23 14:31:05 236

原创 c++浅拷贝,深拷贝,以及栈,堆,和静态存储区static,理解与心得。

传给f2的m_p,对吧?仔细分析可以看到,我们创建的对象f1,在创建的时候自动调用构造函数在堆上开辟了10个空间给到指针m_p,然后我们又创建了第二个对象f2,让f2=f1,也就是调用我们的这个拷贝构造函数,那么我们看这个拷贝构造函数里是不是写的:m_p=other.m_p;首先栈,堆,和静态存储区static,都是开辟在内存上的空间,具体来说在c++中,创建一个对象如果不用new创建,那么这个对象的空间就被开辟在了栈上,这样的空间不需要我们在意,使用完程序会自动释放,也不用担心会发生内存泄漏的情况。

2023-05-19 17:19:04 702 2

原创 c++之到底什么时候需要加入析构函数定义?以及内存泄漏

堆内存分配后没有得到正确的释放,简单说一下堆内存和stack内存,占(stack)内存是由编译器或系统自动分配的,他的响应速度快,但是内存空间小,往往不会产生泄漏问题,而堆内存是程序员自己定义的内存,比如在定义一个新的对象时,new操作符会申请出一些堆空间,这样的空间不会被系统自动释放,需要程序员手动释放,这也是发生内存泄漏的主要原因。比如上面的代码没有申请任何资源所以不需要定义析构函数,而下面的代码定义了一个name的内存,使用后需要用析构函数释放内存。4. 一个类中只能有一个析构函数。

2023-05-19 09:39:32 761

原创 c++基础--const,引用,指针

如上图代码所示,在函数传入参数中加入&,调用函数时送入的为变量的地址,函数可以不需要复制变量,直接在地址上对原始变量进行修改,如果只希望读取地址而不需要修改变量值,可以在前面加入const参数,让函数对变量的操作变为只读。还有比如这种回调函数。这个函数可以在以后某个时刻调用该函数指针,这种技术称为回调。而下面的例子则展示出传入地址的优势:(这里先说一点,引用和传入地址的方式都会改变变量的值,所以const需要灵活的加入。优势其实有很多,比如下面的这种,定义一个比较函数可以针对不同的变量进行比较。

2023-05-17 17:49:09 45

原创 heatmap_python,用来判断不同层网络的注意力权重

row_image是原始图,feature是不同网络层输出的特征图,上述代码只是为了测试,实际使用时应该直接送入feature特征图的像素。

2023-04-10 13:47:55 166

原创 c++图像遍历方式以及底层原理

这是因为在彩色图像中,图像数据缓冲区的前 3 字节表示左上角像素的三个通道的值,接下来的 3字节表示第 1 行的第 2 个像素,以此类推(注意 OpenCV 默认的通道次序为 BGR)。不过出于性能上的考虑,我们会用几个额外的像素来填补行的长度。使用OpenCV的cv::Mat 实例的迭代器,首先要创建一个 cv::MatIterator_对象。因为图像迭代器是用来访问图像元素的,所以必须在编译时就明确返回值的类型。ptr是一个模板属性,可以用来获取地址,相同的一个属性也可以用at。key2:使用迭代器。

2023-04-04 19:46:04 475

原创 Co-training with High-Confidence Pseudo Labels for Semi-supervised Medical Image Segmentation-23CVPR

第二个便是在训练的时候给不同的数据。针对上面说的两点想法,作者先做了实验验证自己的想法,实验结果如上图,a中的MT模型和b中的CPS模型,这两种结构分别来自前几年的两篇顶会中,后面会详细说明,简单来说,作者发现MT模型的整体DICE不如CPS模型好,而CPS刚好满足上面说的两个特性,这一点证实了作者的想法。这篇文章是2023的cvpr关于医学图像分割的,用的半监督的方式,最近在工作中也尝试了解半监督,毕竟不仅仅是医学,各种领域的标签都还蛮难弄的,这篇文章正好对应了学校的研究方向,所以赶快分享出来。

2023-03-31 19:15:45 580

原创 关于迁移模型pt文件中某一层数据的代码

【代码】关于迁移模型pt文件中某一层数据的代码。

2023-03-29 19:14:30 103

原创 加载模型时出现‘module‘不存在的问题

【代码】加载模型时出现‘module‘不存在的问题。

2023-03-29 15:13:41 503

原创 Rethinking Performance Gains in Image Dehazing Networks-gUNet&FFA-Net: Feature Fusion Attention Net~

具体来说,我们将U-Net中的卷积块交换为具有门控机制的残差块,融合主路径的特征映射,并使用选择核跳过连接,并调用得到的U-Net变体gUNet。然而,一个广泛的网络也有负面影响,因为它生成更大的中间特征图,消耗更多的GPU内存,并且不利于边缘设备的推断。网络的输入为一张雾图,经过一个浅层的特征提取部分,然后馈入N个带有跳跃连接的Group Architecture,输出结果由本文提出的特征注意力模块进行融合,最后,经由重建部分和全局残差学习结构得到最终的无雾图输出。首先,先分享TOP3的FFA-Net。

2023-03-09 17:53:28 482

原创 去雾综述 He et al, Single Image Haze Removal Using Dark Channel Prior. (2009 CVPR best paper,传统算法)

估计完A了接下来估计t在本文中作者参考一篇名为A closed form solution to natural image matting来进行精修。效果不错但是时间代价很大。后期何凯明一篇"Guided image filtering."可以代替softmatting完成精修工作。

2023-03-09 17:44:48 223

原创 dataloader中固定输入图像分辨率并做随机裁剪代码

dataloader中固定输入图像分辨率并做随机裁剪代码

2023-02-21 16:43:43 112

原创 学习率到底应该怎么调?学习率在深度学习中的意义

我们都知道深度学习的模型训练其实就是一个函数fx在不断的通过求导寻找函数最优解的过程,而这个过程可以形象的比喻成人在山顶往山下走的过程,我们要找到一个斜率最高的也就是下降最快的路线作为最优路线,而学习率可以看成我们在最优路线上走的每一步的步伐,如果这个步伐过快,我们很有可能错过最低点,如果过小那么下山的速度会很慢,但是这个有更大的概率走到最低点(最优解)。上图是论文中的实验结果,最小学习率是0,最大学习率是0.02,在大概0.01的位置,模型一开始就收敛的很好,因此可以把初始学习率选择为0.01。

2023-02-13 10:59:56 1123

原创 relu激活函数在神经网络中到底起到了什么作用?

可以看出,图像的纹理形状细节等特征没有发生变化,只是感觉暗了一些,这就是rule所带来的影响,从数学的角度也可以很好的解释,最基本的rule函数其实就是if x>0 : output =x;else: x=0;神经网络中激活函数的最直接目的是给网络提供非线性,如果没有激活函数,那么网络的每一层计算都将保持着上一层的线性结果,这样重复下去永远都是线性组合。左边的是conv2d后的结果,右侧为经过relu层后的结果。第一层卷积后的特征(浅层的卷积提取的往往都是一些表面的特征,例如颜色,形状等一些基本的特征)

2023-02-03 17:42:59 1868

原创 可视化深度学习不同层的特征图

【代码】可视化深度学习不同层的特征图。

2023-02-03 15:05:10 516

原创 Perceptual Loss(感知损失)&Perceptual Losses for Real-Time Style Transferand Super-Resolution论文解读

感知损失通过一个固定的网络(VGG16,VGG19..),分别用prediction 和 groundtruth作为VGG16输入, 得到对应的输出特征,pre-vgg,gt-vgg。注:往往pre-loss(感知损失)为正则项,需要配合其他损失函数进行指导,可以通过自定参数调节感知损失的惩罚(调节)力度。在提取特征时,通常不会只使用一层的特征,而是使用网络中浅层,中层,深层特征,进行组合。2.送入prediction和ground truth分别通过VGG前向,并得到pre-vgg,gt-vgg。

2023-01-10 14:51:56 3634 30

原创 模型推理时显存不足问题

推理时不需要反向传播梯度所以加入如下代码。

2023-01-05 14:29:12 619

原创 TVloss

TV值和噪声是线性相关的,噪声越大TV值也会越大,所以TV值可以作为在图像复原或超分辨等任务中的一种指导正侧项,TVloss越小则图像噪声越小,图像更加平滑。TV Loss(Total Variation Loss),全名为总变分损失函数,TV Loss作为一种正则项配合损失函数去调节网络学习。即求每一个像素与其下方像素和右方像素的差的平方相加再开根号的和。效果图:右侧为加入TVloss指导后的结果。

2023-01-05 10:59:42 1524

原创 CrossEntropyLoss交叉熵损失函数,与L1,L2(MSE)优缺点和区别

推理出的数据会首先经过softmax处理成0-1之间的数据,然后送入-log()中,出来的解决和真实标签对应位置上的每一个类别加和取均值。L2收敛的速度更慢,且由于平方的原因对异常点更加敏感,L2的梯度是越来越大的,所以容易找到最优值。而L1 L2(MSE)则是对每一个像素上对判断其与真实像素值的差距。交叉熵根本上是对比出一种与真实值的接近程度,是一种信息上的概念。L1的收敛更快,对异常数据相对L2来说更不敏感,所以鲁棒性更好。然后取绝对值,找到真实标签在每一个类别上对应位置上的数值。

2023-01-05 10:45:32 1471

原创 SCI投稿时title page格式

title page format

2022-12-02 00:32:42 2576

原创 hdrplus

理解HDRPlus - 知乎

2022-11-15 15:21:04 183

原创 RGB2RAW(RGGB)

【代码】RGB2RAW(RGGB)

2022-11-04 17:14:18 715

原创 使用光流法进行多帧融合 找出光流加remap(align对齐)

也就是说R图上原本就不存在小人在左边的信息,R图的左边是空的背景,这时候就要映射了,还是拿A,B两点举例,对于没有发生位移的地方,直接去R图原始位置上的值即可,直到到了A点,这时的光流向量不为0了,A点的光流向量为(90,0)那么这时,remap出新图的(10,10)位置的像素点会取R图中(10+90,10+0)位置的像素点,这也就等于把小人从右侧移回到了左侧。最直观的小人所发生的位移向量可以被光流所找到,具体来说比如头上的某个点A(10,10),到了B的位置(100,10)。

2022-10-27 19:12:41 1907 2

原创 使用光流法做多帧对齐,并还原(重构)图像(HDR任务)心得

没有和原文的效果一模一样,而生成这样的效果,已经是不断调参之后的结果了,这样的结果作为网络的输入,通过深度学习去代替传统融合理论上确实可以解决鬼影的问题,但是我的关注点一直是在如何使用传统方式去生成hdr图像,生成如上图所示的图像之后,如何用传统的融合方式去merge呢?论文提供了一种基于深度学习的方式去生成HDR image,其中在图像对齐部分使用了Liu[2009]这篇文章所提出的光流对齐法,在融合阶段使用深度学习的方式去merge,这样的好处是大大减少了对齐所带来的鬼影等问题。

2022-10-27 16:11:14 4119 10

isp,传统算法,包括读取raw 每一帧

isp,传统算法,包括读取raw 每一帧

2023-09-14

dehaze-dcp-changed-c++

dehaze-dcp-changed-c++

2023-04-20

数据增强-图像锐化-rgb以及raw-rggb

数据增强-图像锐化-rgb以及raw-rggb

2023-04-20

raw2rgb(传统方式)讲raw图转化成rgb

raw2rgb(传统方式)

2022-11-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除