这几天觉得自己电脑好卡,之前也没管,今天偶尔看了下,发现有个进程占用了大量内存,这个就是桌面窗口管理器

关闭virtualbox虚拟机后,总内存占用下降了,但它的没变。

关闭所有应用后,它的占用依旧很高。

尝试网上各种方法都没有效果。
最后想到之前下载过一个内存清理软件,就拿出来试了下,发现效果还不错。

就是这个软件,大家可以试试。

官网:
https://github.com/henrypp/memreduct

下载:
https://github.com/henrypp/memreduct/releases/download/v.3.4/memreduct-3.4-setup.exe


部分

电磁场与微波技术主流:

1.IEEE International Microwaves Symposium

2.European Microwave Conference

3.IEEE International Symposium on Antennas and Propagation

4.European Conference on Antennas and Propagation

微电子学与固体电子学:

  1. International Solid-State Circuits Conference
  2. IEEE Electron Devices Meeting
  3. IEEE Custom Integrated Circuits Conference (CICC)
  4. IEEE Radio Frequency Integrated Circuits Symposium(RFIC)
  5. IEEE Symposium on VLSI Circuits (VLSIC)

信息与通信工程(信号与信息处理、通信与信息系统):

1.INFOCOM: International Conference on Computer Communications

2.GLOBECOM: IEEE Global Telecommunications Conference

3.ICC:The IEEE International Conference on Communications

4.IEEE  ICCV:International Conference on Computer Vision

5.IEEE  CVPR:IEEE Conference on Computer Vision and Pattern Recognition

6.ICML:International Conference on Machine Learning

7.IJCAI:International Joint Conference on Artificial Intelligence

8.AAAI: AAAI Conference on Artificial Intelligence

9.ECCV: European Conference on Computer Vision

10.ACM MM: ACM International Conference on Multimedia

11.NIPS:Annual Conference on Neural Information Processing Systems

12.IEEE ICASSP: International Conference on Acoustics, Speech and Signal Processing

13.ACM CHI: The ACM CHI Conference on Human Factors in Computing Systems

14.ACM SIGGRAPH

15.FGR  :International Conference on Face and Gesture Recognition

16.COLING :International Conference on Computational Linguistics

17.VR:IEEE Virtual Reality Conference

18.MICCAI:Medical Image Computing and Computer-assisted Intervention

19.Interspeech:Interspeech

20.ICLR:International Conference on Learning Representations

21.ACII: Affective Computing and Intelligent Interaction

22.ACL: Annual Meeting of the Association for Computational Linguistics 

23.EMNLP: Conference on Empirical Methods in Natural Language Processing 

24.NAACL: North American Chapter of the Association for Computational Linguistics

电路与系统:

1.GLOBECOM

2.IEEE  CVPR:IEEE Conference on Computer Vision and Pattern Recognition

3.AAAI: AAAI Conference on Artificial Intelligence

4.IJCAI:International Joint Conference on Artificial Intelligence

5.ICCV:International Conference on Computer Vision


迁移学习、集成学习、孪生网络、三元损失、知识蒸馏

片段随意摘,可能并无前后逻辑

Fusion of Deep-CNN and Texture Features for Emotion Recognition using Support Vector Machines

  • 一些研究集中在使用基于纹理的特征开发情感识别应用程序,如面向梯度的直方图hog、局部二值模式LBP、SURF、SIFT、HAAR[9]、Gabor[10]等。
  • 这些纹理被称为与整个图像中的区域相匹配的图案或模板。 这些模式对于从图像区域提取最相关的信息非常有用。 采用基于遗传规划算法的方法融合HOG和LBP特征,该融合函数具有旋转和光照不变性,具有更强的鲁棒性[11]。
  • [12]的作者认为,HOG和LBP特征对交叉和突变功能检测人类的准确率贡献最大。[13]作者在欺骗检测中融合了CNN、HOG和LBP特征的。HOG和LBP特征的融合也被用于手势识别、行人检测、面部表情检测等。
  • 从文献综述中可以明显看出,特征融合在预测情绪方面更加稳健。
  • 特征提取是剔除冗余和不需要的信息,并将有用信息分组为特征向量的过程。 各种各样的特征描述符,如HOG[15]、LBP[16]、[17]、SURF[18]和SIFT[19]被用于分类任务,但之所以使用HOG和LBP,是因为它们比其他描述符更能捕获有效的特征,并且与[20]一样使用OpenCV-Contrib-python包来实现。
  • VGG19架构:
  • 读后感:还是跟大部分文章一样,也没说怎么融合的,直接“理论介绍+实验结果”。。。

【2021】A Feature Extraction Approach for Multi-Object Detection Using HoG and LTP

  • 本研究提出了一种基于局部三元模式LTP的面向梯度直方图(HOG)的多目标检测特征提取方法。 该方法使用了Caltech 101数据集,将图像转换为LAB。
  • 特征提取的过程是通过使用提出的HoG和LTP来检测图像中的突出区域。然后利用深度卷积神经网络(Deep Convolutional Neural Network, D-CNN)融合获得的特征,再转发到基于区域的卷积神经网络(Region-based Convolutional Neural Network, R-CNN)中检测多目标。
  • 将数据集的RGB(Red Green Blue, RGB)颜色空间转换为LAB,使图像中的颜色看起来更加鲜艳,有助于有效地提取特征。其中,L在LAB中代表明度或亮度,A和B是颜色的色成分,如RGB和黄色。在提出的方法中,LAB颜色转换识别出三维的颜色,其中L表示亮度,A和B表示颜色的组成部分,如相应的绿-红和蓝-黄。L通道为亮白色-值为100,暗黑色-值为0, A、B通道为RGB图像的自然值[13]。
  • 流程框图:
  • 读后感:与上篇论文一样的问题,无参考价值。

【2019】Dense Hand-CNN: A Novel CNN Architecture based on Later Fusion of Neural and Wavelet Featuresfor Identity Recognition

  • 通过合并均方能量矩阵(mean squared energy)和均幅矩阵(mean amplitude matrices)来构造特征向量。 利用小波尺度的个数滤波器方向的个数两个因素,得到最优的可能特征。
  • 采用Haar小波滤波器进行单层小波变换。使用(2a, 2b)得到调整大小的输入图像(64x64像素)的近似系数矩阵:
  • 用一个确定振荡方向的抛物尺度划分频率和实值框架构成了反射镜扩展的二维波原子前向变换的基础。利用波原子变换从调整尺寸为64x64的输入图像中提取包含相关系数的单元阵列。
  • 信息融合系统面临的最大挑战之一是确定融合模块下整合所需的数据类型。多种融合策略可用于所有四个级别。 在[51]中讨论的设置涉及到以匹配分数级别融合作为生物特征学的主融合级别的代表。
  • 匹配分数识别默认生物特征和输入向量之间的相似度。再进行匹配分数级别融合,根据相应的生物特征匹配[51]对输出的匹配分数进行整合,做出结果识别决策。
  • 决策层面的融合中有许多方法,如多数投票法加权多数投票法。在我们提出的系统中,我们引入了一种决策级别技术的新方法,模式投票技术(MVT),流程图:
  • 读后感:比上面两篇论文清楚一点,不过我还是不知道怎么用。
[51] A.A. Ross, K. Nandakumar and A. Jain, “Handbook of multibiometrics (Vol. 6)”, Springer Science & Business Media, 2006, pp.73-82.

【2017】A Fast Feature Fusion Algorithm in Image Classification for Cyber Physical Systems

  • 首先,利用遗传算法将浅层网络特征、预训练的大卷积神经网络特征和传统图像特征融合在一起,以较少的训练时间和硬件成本保证较高的精度; 其次,通过动态权重分配增加不同中心之间的距离,提高了不同类别的区分度;第三,我们提出了一种局部选择方法来减少融合特征向量的长度,并通过将特征集中在同一类中进一步提高分类精度。 最后,实验结果表明,该方法能够以较低的训练时间和硬件消耗达到较高的分类精度,大大提高了网络物理系统中图像分类的效率和灵活性。
  • 特征融合架构:
  • 基于GA的多特征融合模型:

代码

def getPoolingKernel(kernel_size=25):
    half_size = float(kernel_size) / 2.0
    xc2 = []
    for i in range(kernel_size):
        xc2.append(half_size - abs(float(i) + 0.5 - half_size))
    xc2 = np.array(xc2)
    kernel = np.outer(xc2.T, xc2)
    kernel = kernel / (half_size ** 2)
    return kernel

def get_bin_weight_kernel_size_and_stride(patch_size, num_spatial_bins):
    ks = 2 * int(patch_size / (num_spatial_bins + 1));
    stride = patch_size // num_spatial_bins
    pad = ks // 4
    return ks, stride, pad

class SIFTNet(nn.Module):
    def CircularGaussKernel(self, kernlen=21, circ=True, sigma_type='hesamp'):
        halfSize = float(kernlen) / 2.
        r2 = float(halfSize ** 2)
        if sigma_type == 'hesamp':
            sigma_mul_2 = 0.9 * r2
        elif sigma_type == 'vlfeat':
            sigma_mul_2 = kernlen ** 2
        else:
            raise ValueError('Unknown sigma_type', sigma_type, 'try hesamp or vlfeat')
        disq = 0
        kernel = np.zeros((kernlen, kernlen))
        for y in range(kernlen):
            for x in range(kernlen):
                disq = (y - halfSize + 0.5) ** 2 + (x - halfSize + 0.5) ** 2
                kernel[y, x] = math.exp(-disq / sigma_mul_2)
                if circ and (disq >= r2):
                    kernel[y, x] = 0.
        return kernel

    def __repr__(self):
        return self.__class__.__name__ + '(' + 'num_ang_bins=' + str(self.num_ang_bins) + \
               ', ' + 'num_spatial_bins=' + str(self.num_spatial_bins) + \
               ', ' + 'patch_size=' + str(self.patch_size) + \
               ', ' + 'rootsift=' + str(self.rootsift) + \
               ', ' + 'sigma_type=' + str(self.sigma_type) + \
               ', ' + 'mask_type=' + str(self.mask_type) + \
               ', ' + 'clipval=' + str(self.clipval) + ')'

    def __init__(self,
                 patch_size=65,
                 num_ang_bins=8,
                 num_spatial_bins=4,
                 clipval=0.2,
                 rootsift=False,
                 mask_type='CircularGauss',
                 sigma_type='hesamp'):
        super(SIFTNet, self).__init__()
        self.eps = 1e-10
        self.num_ang_bins = num_ang_bins
        self.num_spatial_bins = num_spatial_bins
        self.clipval = clipval
        self.rootsift = rootsift
        self.mask_type = mask_type
        self.patch_size = patch_size
        self.sigma_type = sigma_type

        if self.mask_type == 'CircularGauss':
            self.gk = torch.from_numpy(
                self.CircularGaussKernel(kernlen=patch_size, circ=True, sigma_type=sigma_type).astype(np.float32))
        elif self.mask_type == 'Gauss':
            self.gk = torch.from_numpy(
                self.CircularGaussKernel(kernlen=patch_size, circ=False, sigma_type=sigma_type).astype(np.float32))
        elif self.mask_type == 'Uniform':
            self.gk = torch.ones(patch_size, patch_size).float() / float(patch_size * patch_size)
        else:
            raise ValueError(self.mask_type, 'is unknown mask type')

        self.bin_weight_kernel_size, self.bin_weight_stride, self.pad = get_bin_weight_kernel_size_and_stride(
            patch_size, num_spatial_bins)
        self.gx = nn.Conv2d(1, 1, kernel_size=(1, 3), bias=False)
        self.gx.weight.data = torch.tensor(np.array([[[[-1, 0, 1]]]], dtype=np.float32))

        self.gy = nn.Conv2d(1, 1, kernel_size=(3, 1), bias=False)
        self.gy.weight.data = torch.from_numpy(np.array([[[[-1], [0], [1]]]], dtype=np.float32))
        nw = getPoolingKernel(kernel_size=self.bin_weight_kernel_size)

        self.pk = nn.Conv2d(1, 1, kernel_size=(nw.shape[0], nw.shape[1]),
                            stride=(self.bin_weight_stride, self.bin_weight_stride),
                            padding=(self.pad, self.pad),
                            bias=False)
        new_weights = np.array(nw.reshape((1, 1, nw.shape[0], nw.shape[1])))
        self.pk.weight.data = torch.from_numpy(new_weights.astype(np.float32))
        return

    def forward(self, x):
        gx = self.gx(F.pad(x, (1, 1, 0, 0), 'replicate'))
        gy = self.gy(F.pad(x, (0, 0, 1, 1), 'replicate'))
        mag = torch.sqrt(gx * gx + gy * gy + self.eps)
        ori = torch.atan2(gy, gx + self.eps)
        mag = mag * self.gk.expand_as(mag).to(mag.device)
        o_big = (ori + 2.0 * math.pi) / (2.0 * math.pi) * float(self.num_ang_bins)
        bo0_big_ = torch.floor(o_big)
        wo1_big_ = o_big - bo0_big_
        bo0_big = bo0_big_ % self.num_ang_bins
        bo1_big = (bo0_big + 1) % self.num_ang_bins
        wo0_big = (1.0 - wo1_big_) * mag
        wo1_big = wo1_big_ * mag
        ang_bins = []
        for i in range(0, self.num_ang_bins):
            out = self.pk((bo0_big == i).float() * wo0_big + (bo1_big == i).float() * wo1_big)
            ang_bins.append(out)
        ang_bins = torch.cat(ang_bins, 1)
        ang_bins = ang_bins.view(ang_bins.size(0), -1)
        ang_bins = F.normalize(ang_bins, p=2)
        ang_bins = torch.clamp(ang_bins, 0., float(self.clipval))
        ang_bins = F.normalize(ang_bins, p=2)
        if self.rootsift:
            ang_bins = torch.sqrt(F.normalize(ang_bins, p=1) + 1e-10)
        return ang_bins

class SIFTNetFeature2D:
    def __init__(self):
        self.model = SIFTNet(patch_size=32, mask_type='Gauss', sigma_type='hesamp')
        device = torch.device("cuda:1" if torch.cuda.is_available() else "cpu")
        torch.set_grad_enabled(False)
        if torch.cuda.is_available():
            self.model.cuda()
        self.model.eval()

    def patch2des_once(self, patches):
        if len(patches.shape) == 4:
            new_patches = []
            for i in range(len(patches)):
                new_patches.append(cv2.cvtColor(patches[i] * 255, cv2.COLOR_BGR2GRAY) / 255.0)
            new_patches = torch.from_numpy(numpy.array(new_patches).astype(np.float32)).to(device)
            data_a = new_patches.permute(0, 2, 1).unsqueeze(dim=1)
        else:
            data_a = torch.from_numpy(numpy.array(patches).astype(np.float32)).to(device).unsqueeze(dim=1)
        with torch.no_grad():
            out_a = self.model(data_a)
        return out_a

    def compute(self, patches):
        batch_size = 128
        dim = 128
        descriptors_for_net = np.zeros((len(patches), dim), dtype=np.float32)
        for i in range(0, len(patches), batch_size):
            data_a = patches[i: i + batch_size, :, :].astype(np.float32)
            out_a = self.patch2des_once(data_a)
            descriptors_for_net[i: i + batch_size] = out_a.cpu().detach().numpy().reshape(-1, dim)
        return descriptors_for_net / np.max(np.abs(descriptors_for_net))

用法

sift_net = SIFTNetFeature2D()
sift_net.compute(patches)

效果
比OpenCV的经典SIFT效果略差。

其他
当然也可以直接使用kornia写好的,文档网址:
https://kornia.readthedocs.io/en/latest/_modules/kornia/feature/siftdesc.html#SIFTDescriptor


本文只提供网络图,具体原理内容请移步对应论文

单图像超分辨率的多尺度特征融合残差网络

论文:
https://www.sciencedirect.com/science/article/pii/S0925231219315140
代码:https://github.com/QinJinghui/MSFFRN

  • 多尺度特征融合残差网络(MSFFRN)的网络架构
  • 简单的扩展规则可生成具有 P 交织路径的多尺度特征融合残差架构
  • 具有4个交织路径特征融合的多尺度特征融合残余块(MSFFRB)结构。使用此块作为模型中的默认块。
  • 最终效果:

基于自适应空间并行卷积和快速多尺度融合的小目标检测方法

https://www.researchgate.net/publication/357885975_Small_Object_Detection_Method_Based_on_Adaptive_Spatial_Parallel_Convolution_and_Fast_Multi-Scale_Fusion

  • SODNet的结构。SODNet 由四个组件组成。(1)ASPConv模块,从输入图像中提取出丰富的物体空间信息。(2)所提出的骨干模块,由子骨干和FPN两部分组成。子主干进一步提取 ASPConv模块的输出特征,通过 FPN 生成多尺度特征图。(3)FMF模块,快速融合多尺度特征图中的语义信息和空间信息,生成有利于小目标检测的高分辨率特征图。(4)Predictor,对融合的多尺度特征图进行分类和定位。
  • ASPConv的结构。首先在分裂融合子模块中自适应学习小目标的多尺度局部上下文信息,然后融合形成详细的空间信息。
  • 骨干模块的结构。
  • FMF的结构。低分辨率特征映射P2和P3将丰富的语义信息映射到高分辨率空间,并与特征图C1融合,生成高分辨率的地物图P1具有丰富的语义和空间信息。P2和P3由FPN生成,C1为APSConv模块的输出特征图。
  • 测试数据集的样本测试结果,TinyPerson (a-c)、清华-腾讯100K (d-f)、UAVDT (g-i)、MS COCO (j-1)。