自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ResEmoteNet论文阅读与推理

(自适应平均池化) 是 CNN 中使用的一种池化层,无论原始输入维度如何,它都可以将输入信息聚合为恒定的输出大小。AAP 调整内核大小和步幅以达到特定的输出大小,而不是像传统的池化方法那样减小空间维度。,Squeeze使用全局平均池化将来自每个通道的空间数据压缩为全局描述符。SENet 的方法允许网络学习一系列注意力权重,突出每个输入元素对网络输出的重要性。,该模块具有三个卷积层,用于分层特征提取,然后进行批量归一化,以稳定学习并提高训练效率。,解决神经网络中梯度消失和爆炸的常见问题。

2024-12-23 14:39:04 662 5

原创 使用cv2对视频指定区域进行去噪

视频去噪其实和图象一样,只是需要现将视频截成图片,在对图片进行去噪,将去噪的图片在合成视频就行。可以利用cv2.imread()、imwrite()等轻松实现。

2024-06-21 16:47:11 607

原创 图象去噪1-使用中值滤波与均值滤波

使用中值滤波去除图像的异常像素点,使用cv2.cv2.medianBlur(img, 3)表示再图像在中值滤波窗口3*3的范围内,从下到大排序,将当前值替换为排序中值(如下图所示)将56替换为(56,66,90,91,95,97,101)中的中值93。Python代码如下::中值滤波会考虑更大的邻域,虽然能更和边缘。

2024-06-21 15:55:03 1201

原创 使用moviepy将MOV转换成MP4格式

使用moviepy.video.io.VideoFileClip转换格式,我们将其写成一个类。

2024-06-14 11:16:29 781 1

原创 检查文件夹下指定类型文件,并返回指定类型的最新上传文件 Python实现

2、当这个文件夹里有多个同后缀的文件时,默认文件未修改的时间起始值为0,当某文件file的最后修改时间大于默认的0时,可以认为该文件较0起始值修改过的文件,对于多个文件进行一个for循环的比较,就可以找出最新的那个文件并返回。在工作中要实现一个检查文件后缀格式,并返回指定文件后缀的最新上传的文件功能的一个Python函数。3、a.如果只存在png文件,就执行png文件操作 b.如果没有就不执行操作 c.当有MP4文件时,不管有误png文件,优先执行MP4文件。1、找出文件夹中指定的后缀文件。

2024-06-07 10:22:17 272

原创 python库的使用(1)

虽然将图片读出来很方便观察逐帧截取视频的状态,但是会严重减慢图像处理速度。可解决的方法时直接用list来接收,图像读取完毕后再抽一帧imshow出来即可。1、在工作中我发现有好多人喜欢把视频用cv2库将视频逐帧读取逐写入成图片存到文件夹中,再对文件夹中的图像进行读取成list进行后续操作。这个系列主要是用于记录本人在工作、学习python期间的一些学习心得,感兴趣的同学可以一起讨论交流*\^_^/*2、os.path.basename()与os.path.splitext()

2024-05-24 16:23:25 220

原创 使用cv2、np对视频进行抠图、替换背景

(1)mask的获取:由于P3M net生成的抠图已经完备,可以直接将foreground_img3个通道的sum>0作为mask,此时mask变为2维,再给mask增加第三维度,即通道数。(2)背景图像与抠图融合:融合图像= 抠图*mask + 背景图*(1-mask)2、对图片进行抠图,使用了P3M-Net算法实现对图像的抠图(​​​​​​。对图像处理一窍不通的我,竟然开始搞图像了!4、读取mask、抠图、背景图片进行融合。3、4、对图像读取背景图像、创建mask。2、对读取的图片进行抠图。

2024-05-16 16:42:40 718

原创 git基本指令(1)

若果忘记切换的话,次分支中分支越来越多,远程提交merge的时候会特别乱。(苯人在实习中血与泪的教训!来将本地代码与远程仓库更新一致(最好每天上班打开服务器就git pull一下)。注意:在工作中,需要更新自己的本地仓库,用到。,前面有*说明分支停留在* 号表明的分支下。(branch_name为新建的分支名)(如果已修改并add到缓存区,返回呈。添加所有修改到缓存区,使用。表示添加该文件到缓存区。将分支推动到远程仓库。,若没有add则返回。

2024-03-26 15:36:20 295

原创 初学者必看-pytorch框架下基于cifar-10数据集的图像分类模型

其中.Compose()函数表示将多个图片操作联合起来,而.ToTensor()则代表将图片格式转换成为tensor张量格式,.Normalize()代表归一化处理,其中最主要的做法就是:得到数据集的均值与标准差,再让每个样布减去均值,除以标准差,让图片从0~32转换到[0,1]区间内。其次,代码中使用loss.backward()时,本质上是反向求其偏导,而并没有真正的进行权重更新,我们还需要加入optimizer.step()来进行真正的更新!池化(padding=2,stride=2)-->

2024-03-04 22:39:31 1819 1

原创 yolov5报错解决办法

解决(1):train与val的位置不对。注意:可先将general的NUM_THREARD改为1,等程序train完成后 恢复原来NUM_THREARD的值 进行delect验证。有的标签在labelimg过程中的存储形式是xml.txt 此时要将.txt改为.xml.txt。解决(1):将utils/general.py的 NUM_THREARD改为1。解决(2):查看在utils/dataloader.py的中的。解决(2):程序中的num_worker改为0或1。

2023-12-20 17:40:48 1382

原创 Fedproto:原型聚合的联邦学习框架

文中说明,联邦学习通过计算传递梯度聚合模型时,客户端之间的异构性通常会阻碍模型优化收敛和泛化性能。故本文提出新的FedProto框架,将梯度替换成为原型,通过计算、聚合从不同客户端收集到的本地原型,然后将全局原型发送回所有客户端,以规范本地模型的训练。对每个客户机进行局部训练的目的是最小化对本地数据的分类损失,同时保持生成的本地原型足够接近相应的全局原型(损失函数最小+正则)。什么是原型?文中提到:“

2023-07-17 18:14:13 1773 5

原创 SCAFFOLD:联邦学习控制变量更新方法

原文的公式权值用x,y表示,如果结合FedAvg与FedProx的话,看起来很费劲,所以我还是按照权值为w的形式书写,相比于FedAvg只有权值聚合更新,SCAFFOLD添加了控制变量C来减少局部更新中“客户端漂移”,同时在server聚合时,对控制变量C也做了更新。在FedAvg局部更新中,为了减小客户端与服务器之间的通信效率,同时克服数据样本非独立同分布的缺陷,FedAvg选择在局部更新选用较多的epoch,SGD选用较小的步长。它在每个客户端的更新中引入了漂移,导致了缓慢和不稳定的收敛。

2023-07-09 10:47:58 792 3

原创 【FedAWS】论文笔记

数据样本,对于mnist数据集而言,样本就是一张手写数字识别图片。其中样本对应的标签为:0、1、2、3、4、5、6、7、8、9这十种类别。比如我们的设备中只有1的手写数字图片,我们期望识别的结果也为1,此时的正样本即为标签为1的手写数字图片,而其他的图片全部被称为负样本.embedding直译为“嵌入式”,但在机器学习中其表达是一种映射关系(本人理解)表示将高维数据通过矩阵映射为低维数据。在本文中𝑔𝜃(𝑥):x→𝑅^𝑑将实例X映射到一个d维嵌入,而𝑊∈𝑅^𝐶×d使用这个嵌入来生成C类的评分函数f(x)。

2023-05-15 15:24:42 445 1

原创 【深度梯度压缩】DGC论文笔记

DGC包括:动量校正、局部梯度剪切、动量因子掩蔽和热身训练。

2023-04-05 19:07:09 1330 1

原创 【SGD深入理解】vanilia SGD&momentum SGD

SGD是当下使用最广泛地优化器,原理是通过求得当前参数损失函数的最大梯度,往梯度的反方向走即可走到损失函数的极小值点。可以想象成盲人要寻找最快下山的过程,那就是不断地摸索当下点周围最陡峭的方位,沿着那个方位走是最大概率时间最短到达山谷的。

2023-04-05 16:06:35 979 1

原创 【FedProx】论文笔记

在client本地增加计算量,而通信时只进行加权聚合操作。【FedAvg论文笔记】&【代码复现】_fedavg代码_爽爽不会编程的博客-优快云博客FedAvg的缺点:1、不允许参与设备根据底层的系统执行可变的轮次(就是本地局部迭代轮次E是固定的),故算力不同的设备迭代固定E轮次的时间不同,这对后面服务区等待聚合局部模型肯定会有影响嘛。2、某些设备在规定时间位未达到收敛会被服务器“丢弃”。

2023-03-15 18:36:11 3892 8

原创 差分隐私入门-噪声机制分类

首先什么是差分隐私?e-DP差分隐私算法:给对于两个数据集D和D’,D和D’相差一条记录,记作|DΔD'|≤1,一个随机算法A,S为A在D和D’数据集上输出的结果,S∈range(A),符合下面的公式,则称A满足e-DP差分隐私:Pr[]是隐私被泄露的概率,e是指隐私保护参数,可以表示隐私保护的程度,它越小,隐私保护越好,但是加入的噪声就越大,数据可用性就下降了通俗而言,在数据集中修改一条数据,不会对算法输出的分布带来太大的影响,当攻击者观察输出结果S时,很难区分出数据到底来自D还是D’。

2022-11-04 22:39:05 2989

原创 数据结构--排序--C语言

1.插入排序直接插入排序:把待排序的记录2.快速排序递归:一个问题分解成规模更小的子问题,子问题的解决方法和原问题一样。例子:n!=n*(n-1)!用递归地思路解决快速排序。

2022-02-21 15:35:44 712

原创 数据结构--二叉树--层次遍历

层次遍历:根据队列的原理,先将根节点入队,在出队,再将根节点的左右孩子入队,先出左孩子,在入左节点的左右孩子,再出右节点,再入右节点的左右孩子,再出..知道队列为空。

2022-02-07 20:43:18 992

原创 数据结构--树形结构之二叉树--C语言

一、树和二叉树1.树的概念结点的度:一个结点含有子结点的个数,称为结点的度。如A点的度为6.叶子节点/终端结点:度为零的结点,也就是没有子结点的结点,如B\C\H\I等结点。分支结点/非终端节点:度不为零的结点,如D,E,F,G,J。双亲节点或父节点:若一个节点有子节点,则称这个节点为其子节点的父节点或者双亲节点。兄弟节点:有相同父节点的节点称为兄弟节点,如图B,C是兄弟节点。树的度:一棵树中最大的结点的度称为树的度。如图,该树的度为6.树的高度/层次:树中节点的层次,如图:

2022-02-06 21:47:45 1631

原创 数据结构--力扣--链表的中间节点\

只能遍历链表一遍,用快慢指针。struct ListNode* middleNode(struct ListNode* head){ struct ListNode* slow=head,*fast=head; while(fast!=NULL && fast->next!=NULL) { slow=slow->next; fast=fast->next->next; } ret...

2022-01-21 20:05:42 481

原创 数据结构--力扣--反转链表

反转链表很经典,常出现在校招面试中,出现频率top1。反转链表校招热门题型思路一:翻指针(翻指针的方向)如图:执行过程如图:struct ListNode* reverseList(struct ListNode* head){ if(head==NULL) return NULL; else{ struct ListNode* n1=NULL,*n2=head,*n3=n2->next; //结束条件 while(n

2022-01-21 16:57:39 487

原创 力扣--环形链表--C语言

需要注意:环形链表不是循环链表,但循环链表是一种环形链表。(百度和字节喜欢考)/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */bool hasCycle(struct ListNode *head) { struct ListNode* slow=head,*fast=head; while(f..

2022-01-21 14:45:54 426

原创 力扣21题--合并两个有序链表(升序)--C语言

(1)合并两个有序链表思路:从头开始取两个链表中,取小的尾插到新链表需要注意的是:链表可以为空,当其中一个链表为空时,直接将一个链表移下来。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* mergeTwoLists(struct ListNode* lis...

2022-01-19 19:41:07 870

原创 力扣--移除数组,合并两个有序数列

1传统思路:挨个的删,从第一个元素开始与val比较,相同的话删去(后面的数向前移),不同的话接着比较下一个元素。时间复杂度为O(N^2)(最坏程度是每个元素都是val,故准确的表达式为N的等比数列N*(N+1)/2)2.O(N)的思路:把不是val的数据放到新的数组,再把新数组的值拷贝.第一步:第二步:新数组拷贝回去:3.时间复杂度O(N)空间为O(1):sre的位置不等于val就把该值放到dst,然后sre++ ,dst++;sre的值等于val,sre++int...

2022-01-10 21:39:48 470

原创 数据结构--线性表之顺序表(C语言)

线性表的概念线性表在逻辑上是线性的结构,也就是说,是连续的一条直线,但在物理结构上不一定是连续的,线性表在物理上存储时,通常以数组和链式结构形式存储。常见的线性表为:顺序表,链表,栈,队列,字符串...一、顺序表的实现1.顺序表的概念和结构顺序表是使用一段物理地址连续的存储单元依次存取数据元素的线性结构,一般情况下采用数组存储,在数组上完成对数据的增删查改。顺序表一般可分为:(1)静态顺序表:使用定长数组存储;(2)动态顺序表:使用动态开辟数组存储;建立Seqlist

2022-01-10 19:00:55 937

原创 C语言--时间复杂度(2)

1.什么是时间复杂度和空间复杂度?空间效率,时间效率(较为关注)时间复杂度:算法中的操作执行次数,为算法的时间复杂度。(不是具体时间,而是执行次数)空间复杂度:2.如何计算?时间复杂度(1)是一个估算,看表达式中影响大的那一项,如N*N+2N+10中,N*N对整个式子影响最大,故其时间复杂度为N*N,用大O的渐近表示法O(N*N)。(2)去掉时间表达式中的常数,例如,得到一个准确的时间表达式为2N+10,则估算得到的时间复杂度为O(N)(3)对于多个未知数时,例如

2022-01-06 22:29:50 1444

原创 数据结构--leetcode环形链表II、栈和队列

栈:一种收限定的线性表,既将线性表的插入和删除固定在表的一端进行。允许进行插入删除操作的一端称为栈顶,栈顶是动态变化的,有一个指针来指示栈顶的位置。值得注意的是,栈里的操作就像电梯一样,每次新进来的元素都会称为新的栈顶,先进后出,后进先出。重要掌握顺序栈顺序存储结构的栈,占据连续的内存,必须附设一个位置指针来动态的指示栈顶元素的位置,top=-1指空栈。出栈:pop进栈:push判栈空:empty获得栈顶元素:getTop基本实现代码(C++):#include&lt

2022-01-03 22:24:39 720

空空如也

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

TA关注的人

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