自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

justsolow的博客

记录学习笔记,欢迎关注交流

  • 博客(107)
  • 资源 (2)
  • 收藏
  • 关注

原创 分治算法例题

分治算法例题leetcode 23给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6# Defini

2021-10-05 10:49:03 290

原创 二分查找模板

二分查找模板基础模板:(适用于查找某个在数组中的数的位置)def searchInsert(self, nums: List[int], target: int) -> int: n = len(nums) l = 0 #注意1 r = n-1 #注意2 while l<=r: mid = l+(r-l)//2 if nums[mid]>tar

2021-10-03 21:45:27 212

原创 拓扑排序详解

拓扑排序leetcode 207你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 fa

2021-10-03 20:43:49 231

原创 pytorch---onnx---tensorflow踩坑笔记

pytorch—onnx—tensorflow踩坑笔记首先我转的模型是centertrack这个模型,其实总的来说这个模型还是比较简单的,但是由于其中有一个DCN卷积在onnx和tensorflow中不支持的自定义算子,所以有很多坑都是围绕他进行的。首先就是对这个DCN卷积部分的处理,我使用了一个插件的形式来方便插入到onnx中,这是由于onnx支持自定义算子的实现。插件部分:(类似于这样的插件定义的形式)###############################################

2020-12-31 23:54:47 2790 1

原创 centertrack

Centertrack模型转换小结首先我转的模型是centertrack这个模型,其实总的来说这个模型还是比较简单的,但是由于其中有一个DCN卷积在onnx和tensorflow中不支持的自定义算子,所以转换起来有会有很多问题。CenterNet其实CenterNet一共是有两篇文章的,他们都是AnchorFree类型的网络,两个网络既有相似的地方也有本质的区别,都很具有启发意义,跟我们的CenterTrack都有很大的关系,所以在这里都介绍一下。先讲一下《CenterNet: Keypoint T

2020-12-31 23:54:33 3680 1

原创 部分CV文章讲解链接

1、OHEM的本质就是筛选出hard negative 的rois然后用一个单独的网络对这些样本进行前向和反向传播,然后再把训练得到的模型参数赋值给所有rois的前向传播网络。2、AZ-Net我们考虑一种递归搜索策略,从整个图像开始作为根区域。对于搜索过程中遇到的任何区域,算法从该区域提取特征以计算缩放指示符和邻接预测。邻接预测的置信度得分高于阈值的加入输出区域提议集合中。如果缩放指示符高于阈值,则表示当前区域可能包含小对象。为了检测这些小物体,以图2所示的方式将当前区域划分为子区域。然后以与其父区域相同

2020-11-28 19:58:26 179

原创 精选CV的最新文章(持续更新)

sparse R-CNN使用固定数量的 learnable box/feature(与backbone无关) 替代anchors,从而将原始one/two-stage检测方法转换为set prediction形式

2020-11-27 20:33:18 229

转载 何恺明团队最新力作SimSiam:消除表征学习“崩溃解”,探寻对比表达学习成功之根源

作者通过实验表明:对于损失与结构而言,“崩溃解”确实存在,但是“stop-gradient”操作对于避免“崩溃解”有非常重要的作用。作者提出了一种新颖的“stop-gradient”思想并通过实验对其进行了验证,该文所提SimSiam在ImageNet及下游任务上均取得了有竞争力的结果。作者期望:这个简单的基准方案可以驱动更多研员重新思考无监督表达学习中的孪生结构。知乎大佬博客...

2020-11-25 22:45:53 460

原创 FCN(全卷积网络)详解

FCN详解全卷积网络就是在全连接网络的基础上,通过用卷积网络替换全连接网络得到的。首先看一下什么是全连接网络,以及全连接网络的缺点。通常的CNN网络中,在最后都会有几层全连接网络来融合特征信息,然后再对融合后的特征信息进行softmax分类。假设最后一层的feature_map的大小是7x7x512,那么全连接层做的事就是用4096个7x7x512的滤波器去卷积这个最后的feature_map。所以可想而知这个参数量是很大的!!但是全卷积网络就简单多了。FCN的做法是将最后的全连接层替换为409

2020-11-25 19:49:02 15328

原创 Bert理论浅析

Bert理论浅析大名鼎鼎的Bert其实就是在Transform的基础上利用Transform的encode部分实现的。Bert的具体实现这里就不讲了,可以去看bert的论文和李宏毅老师的课程,讲的挺清楚的。下面主要来解释几个我阅读过程中的问题:1、bert是怎么训练的?bert的pre-train其实有两个部分组成。第一种:bert是一个无监督的模型,利用的是一个类似完形填空的直觉实现label生成和训练。总的来说,bert的实质就是:一切过往皆为序章!如下图所示:我们随机在一个序列的某

2020-11-02 18:00:17 266

原创 Transform和self-attention

Transform和self-attention再讲Transform之前必须先讲一下self-attention,但是再讲self-attention之前有必要讲一下attention。attention的讲解这篇文章讲的挺好的,可以参考一下。总的来说attention有两种划分方式:第一种划分方式:Spatial Attention 空间注意力(图片)和Temporal Attention 时间注意力(序列)这种划分方式里面主要有BAM,CBAMCBAM可以看做是通道注意力机制和空间注意力

2020-10-14 10:58:21 1038

原创 数位算法

数位算法快速幂#快速幂class Solution: def myPow(self, x: float, n: int) -> float: a = 1 flag = 1 if n<0: flag = 0 n = abs(n) while n: if n&1: a = a*x n &g

2020-09-09 16:45:39 369

原创 DCN和DCNv2(可变性卷积)学习笔记(原理代码实现方式)

DCN和DCNv2(可变性卷积)网上关于两篇文章的详细描述已经很多了,我这里具体的细节就不多讲了,只说一下其中实现起来比较困惑的点。(黑体字会讲解)DCNv1解决的问题就是我们常规的图像增强,仿射变换(线性变换加平移)不能解决的多种形式目标变换的几何变换的问题。如下图所示。可变性卷积的思想很简单,就是讲原来固定形状的卷积核变成可变的。如下图所示:首先来看普通卷积,以3x3卷积为例对于每...

2020-07-23 08:03:00 30531 35

原创 动态规划算法专题

动态规划算法专题买卖股票系列这是一类特殊的一维数组动态规划问题。换一种思路。综合一下一共有三种状态dp[i][k][j],dp[i][k][j]代表当前所拥有的金钱或股票。i用来遍历数组元素,k表示交易次数,j代表当前拥有的是金钱还是股票。然后后续可能还有冷冻期,手续费等。冷冻期的话每次循环遍历前需要提前存储一下casetemp,循环结束前再把tempprecase然后再状态转移方程里面用precase操作即可。手续费的话随便在动态转移方程里面减去即可。状态转移方程如下:dp[i][j][0] =

2020-07-22 23:49:07 746

原创 回文算法总结

回文算法总结最长回文子串## @lc app=leetcode.cn id=5 lang=python3## [5] 最长回文子串## @lc code=startclass Solution: def longestPalindrome(self, s: str) -> str: size = len(s) if size < 2: return s # 至少是 1

2020-07-22 23:17:27 978

原创 堆栈算法

堆栈算法再讲算法之前先说一下堆与栈的区别两个栈实现队列# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack1 = [] self.stack2 = [] def push(self, node): # write code here self.stack1.append(node) def pop(s

2020-07-21 23:36:52 791

原创 数组算法

数组算法总结二维有序数组的查找(从每一行最后一个找起)# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array): # write code here if not array: return None row = len(array) -1 col = len(array[0]) -1

2020-07-21 23:26:25 224

原创 字符串算法总结

字符串算法总结替换空格(没什么好说的,白给题)class Solution: # s 源字符串 def replaceSpace(self, s): # write code here l = len(s.split(' ')) a = '' for i in range(l-1): a += s.split(' ')[i] + '%20' a = a+s.split(' ')[l-1

2020-07-21 22:42:13 371

原创 链表总结

链表总结做链表的题最终的要的是记录每一个新链表的头结点以便最后返回。从尾到头打印链表(因为递归说白了就是从最后一步一步找到最头的节点)# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListF

2020-07-20 22:08:17 139

原创 TVM安装踩坑笔记

TVM安装踩坑笔记由于是在公司服务器安装的TVM,所以有各种网络的限制问题,不能从服务器端直接下载包文件,得先下载到windows上面然后再上传到服务器端。但是,TVM和LLVM的包文件服务器在国外的缘故,所以下载的很慢。。。。花了我一天时间才搞好,太惭愧了。。。。想要安装TVM(这个是不区分C还是python的,安装好以后都可以用的),首先必须安装TVM的编译器LLVM和clang。下载链接进去以后选择自己需要的版本,这里也不是越高越好啊,我安装的7.0.1没出什么版本问题,你们可以自己尝试一下

2020-07-15 22:55:48 2380 5

原创 轻量型网络SqueezeNet

轻量型网络SqueezeNet近些年来深层卷积网络的主要方向集中于提高网络的准确率。而对于相同的正确率,更小的CNN架构可以提供如下优势:(1)在分布式训练中,与服务器通信需求更小。(2)参数更少,从云端下载模型的数据量少。(3)更适合在FPGA等内存受限的设备上部署。基于这些优点,这篇论文提出了SqueezeNet。它在ImageNet上实现了和AlexNet相同的准确率,但是只使用了150\frac{1}{50}501​AlexNet的参数。更进一步,使用模型压缩技术,可以将SqueezeNet压缩到

2020-06-23 10:34:48 1370

原创 Triplet loss(三元损失函数)

Triplet loss(三元损失函数)Triplet Loss是Google在2015年发表的FaceNet论文中提出的,论文原文见附录。Triplet Loss即三元组损失,我们详细来介绍一下。Triplet Loss定义:最小化锚点和具有相同身份的正样本之间的距离,最小化锚点和具有不同身份的负样本之间的距离。Triplet Loss的目标:Triplet Loss的目标是使得相同标签的特征在空间位置上尽量靠近,同时不同标签的特征在空间位置上尽量远离,同时为了不让样本的特征聚合到一个非常小的空间中

2020-06-22 10:09:07 14136

原创 PCA(主成分分析)降维,SVD分解

PCA降维,SVD分解和LDAPCASVDPCA(主成分分析)在机器学习中,每一种性质代表一个特征,这样的话就很容易出现维数灾难现象。这时候我们就会用到降维的技术。先讲一下基础的PCA降维吧。PCA降维用一句话来说就是把原来高维的点投影到低维的区域。(至于图片自己YY吧,我就懒得找了)那么该怎么做呢?其实我们日常的直角坐标系不就是PCA降维的特例呢,不过是我们初中老师教的时候只告诉你记住就行,所以你也没想他是怎么来的。见下图(A向量投影到B向量上)。那么数学公式怎么表达呢?A=(x1,y

2020-06-21 17:34:47 494

原创 LR(逻辑回归浅析)

LR(逻辑回归浅析)这里有一篇很详细的讲解我这里就简单缕缕LR的思路就好了。Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。Logistic 回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。1、 Logistic 分布Logistic 分布是一种连续型的概率分布,其分布函数和密度函数分别为:其中μ 表示位置参数, γ>0\mu \text { 表示位置参数, } \gamma>0μ 

2020-06-20 20:18:45 462

原创 你真的懂了全连接层了吗?

你真的懂了全连接层了吗?随着我对CNN的认识的增加,有以下几个阶段的问题逐渐困惑着我。1、全连接层到底是怎么计算的?2、为什么全连接层有1层,两层,三层。。。?3、全连接层与1x1卷积相同?与最后同尺寸的卷积核相同?4、全连接层的作用到底是什么?下面我们来一一探讨一下,有不同意见的欢迎讨论。第一个问题看下面的图(以前见过无数遍,可是没有认真思考过。。。可惜),假设我们最后的特征层是7x7x512的,我们的全连接层是1x1024的,那么实际上就相当于用1024个7x7x512的kernel_s

2020-06-18 18:23:29 10316 5

原创 Light-Head R-CNN学习笔记

Light-Head R-CNN学习笔记在这篇文章里,作者主要分析了:为什么two-stage detector会慢,主要慢在哪?如何在解决速度慢同时保证精度?文中,作者把 two-stage 拆解成 body 跟 head:body: 生成proposal(RoI)的过程, 即: ROI warping.head: 基于proposal的recognition过程, 即: RCNN subnet.作者认为,目前的算法,为了追求best accurcy,一般都会把head设计的非常heavy,

2020-06-17 21:56:10 198

原创 R-FCN学习笔记

R-FCN学习笔记R-FCN的主要贡献在于解决了“分类网络的位置不敏感性(translation-invariance in image classification)”与“检测网络的位置敏感性(translation-variance in object detection)”之间的矛盾,在提升精度的同时利用“位置敏感得分图(position-sensitive score maps)”提升了检测速度。已经提出来的两种解决方案:首先Faster-rcnn网络的缺陷是大量的卷积层位于roi-pooli

2020-06-16 21:40:30 238

原创 二分查找

二分查找标准模板:n = len(nums)left = 0right = n-1while left <= right: #这种写法的原因是为了防止right和left数据过大时造成溢出 mid = left + (right-left)//2 if nums[mid]==target: return mid elif nums[mid]<target: left = mid+1 elif nums[mid]>t

2020-06-16 19:14:35 154

原创 并查集

并查集模板:class Solution(): def __init__(self): """ 初始化变量 """ self.tree_num = 0 # 连通集个数 self.tree_node = [] # 根节点所在树的节点总数,被合并的停止更新 self.parent = [] # 每个节点的父亲节点 def initialize_tree(self, total_node):

2020-06-16 09:36:33 174

原创 堆栈算法总结

堆栈算法总结模板例题:给定两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输出: [-1,3,-1]解释:对于num1中的数字4,你无法在第二个数组

2020-06-14 22:29:34 878

原创 哈希表算法总结

哈希表算法总结著名的空间换时间算法。leetcode1 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: hashmap = {} for i

2020-06-12 18:45:52 341

原创 BFS(广度优先遍历)图算法总结

BFS(广度优先遍历)图算法总结首先图算法基本都是用BFS解决的,所以学懂了BFS就会图算法了。例题一:四周扩散型leetcode200leetcode130给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010

2020-06-10 22:58:31 469

原创 回溯法(以DFS为例)例题总结

回溯法(以DFS为例)例题总结框架: #定义一个结果数组 self.result = [] def dfs(candidates,res): #满足题目,返回条件 if target==sum(res): self.result.append(res[:]) for i in range(len(candidates)): #临时结果添加

2020-06-08 21:59:11 428 2

原创 DetectoRS学习笔记(54.7AP 目前目标检测最强模型!)

DetectoRS学习笔记从结果上看,这篇文章在Res50+HTC的基础上将box mAP从43.6刷到了51.3.文章的创新点主要来自于两点:1、FPN的改进—>RFP主要提出对FPN的结构增加feedback的反馈和recursive的repeat堆叠, 融合时还使用了ASPP的结构,增大了全局特征和感受野。具体示意图如下:公式为:这里的f代表的就是自顶向下的FPN的过程,B就是自底向上的特征提取的过程,x是输入,R是自顶向下传输到自底向上的过程中的横向连接的一种转换,也就是ASPP

2020-06-06 20:33:02 2907

原创 bottlenect attention module(BAM)

bottlenect attention module(BAM)1. BAM论文代码链接BAM全程是bottlenect attention module,与CBAM很相似的起名,还是CBAM的团队完成的作品。CBAM被ECCV18接收,BAM被BMVC18接收。CBAM可以看做是通道注意力机制和空间注意力机制的串联(先通道后空间),BAM可以看做两者的并联。具体的代码实现如下:2、时间注意力机制class Flatten(nn.Module): def forward(self

2020-06-03 17:49:49 850

原创 Convolutional Block Attention Module(CBAM)

Convolutional Block Attention Module(CBAM)论文1. 什么是注意力机制?注意力机制(Attention Mechanism)是机器学习中的一种数据处理方法,广泛应用在自然语言处理、图像识别及语音识别等各种不同类型的机器学习任务中。通俗来讲:注意力机制就是希望网络能够自动学出来图片或者文字序列中的需要注意的地方。比如人眼在看一幅画的时候,不会将注意力平等地分配给画中的所有像素,而是将更多注意力分配给人们关注的地方。从实现的角度来讲:注意力机制通过神经网络的操作

2020-06-03 16:27:10 1881

原创 CV中的attention机制之(cSE,sSE,scSE)

CV中的attention机制之(cSE,sSE,scSE)论文代码SE模块的博文链接提出scSE模块论文的全称是:《Concurrent Spatial and Channel ‘Squeeze & Excitation’ in Fully Convolutional Networks 》。这篇文章对SE模块进行了改进,提出了SE模块的三个变体cSE、sSE、scSE,并通过实验证明了了这样的模块可以增强有意义的特征,抑制无用特征。实验是基于两个医学上的数据集MALC Dataset和Vi

2020-06-03 10:11:38 9988

原创 YOLOv4---(详解各种trick)

YOLOv4—(详解各种trick)参考自(https://zhuanlan.zhihu.com/p/139764729)前段时间大名鼎鼎的yolov4终于面世了,可是看过以后确实大失所望。不是说yolov4不好,只不过没有什么革命性的创新,相当于作者尝试了计算机视觉领域的各种花里胡哨的trick,然后给了一个最佳方案的trick组合。而且,这些东西对于实际的工业生产并没有什么用。。。。也就是落地基本不可能。下面来仔细看一下文章中提到的各种trick。论文地址github文中将前人的工作主要分

2020-05-29 11:30:46 20492 8

原创 打通多个视觉任务的全能Backbone:HRNet

打通多个视觉任务的全能Backbone:HRNet参考:https://arxiv.org/pdf/1908.07919https://www.bilibili.com/video/BV1WJ41197dh?t=508https://github.com/HRNetHRNet是微软亚洲研究院的王井东老师领导的团队完成的,打通图像分类、图像分割、目标检测、人脸对齐、姿态识别、风格迁移、Image Inpainting、超分、optical flow、Depth estimation、边缘检测等网络结

2020-05-26 23:11:52 296 2

原创 ACNet(无痛涨点)

ACNet(无痛涨点)论文链接1. 前言不知道你是否发现了,CNN的结构创新在这两年已经变得相对很少了,同时要做出有影响力并且Solid的工作也变得越来越难,最近CNN结构方面的创新主要包含两个方面:1、网络结构搜索,以Google Brain的EfficientNet为代表作。2、获取更好的特征表达,主要是将特征复用,特征细化做得更加极致,以HRNet,Res2Net等为代表作。本文要介绍的是ICCV 2019的一个新CNN架构ACNet(全称为Asymmetric Convolution N

2020-05-26 10:45:43 4010 1

matlab决策树id3实现多叉树树形图显示.rar

决策树 id3算法实现多叉树树形图显示,使用matlab编程实现多叉树生成结构体,再对结构体进行处理,生成树形图。

2019-08-12

python界面GUI实现k-means聚类算法

python界面GUI实现k-means聚类算法,基于tkinter的界面简单代码开发。k-means算法是自己写的,不是调用的库函数。程序最后可以实现,随机生成样本点,设置聚类中心数,区分颜色显示聚类结果,无限次迭代,退出等。

2019-05-29

空空如也

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

TA关注的人

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