自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 opencv-python | cv2.copyMakeBorder使用方法与注意事项

在图像处理任务中,我们经常会使用到改变图像尺寸的操作,比较常见的有Resize、裁剪等。除此之外,还有一种操作是扩充图像的边界,比如在图像的左右或者上下添加若干列(行)的像素。在openCV中,通过函数cv2.copyMakeBorder()完成此操作。openCV官方文档对cv2.copyMakeBorder()的作用介绍就是给你的图像添加额外的边界(padding)。比如,当我们在进行卷积操作的时候,一个很自然的问题就是:如何处理图像的边界?怎么对图像边界的点进行卷积?是的,可以通过扩充边界(Paddi

2022-07-08 16:15:04 4713 3

原创 深度可分离卷积

由模型量化而思考深度可分离卷积以及MobileNet

2022-05-03 22:45:06 4736 2

原创 【2】谷歌2021模型量化白皮书《A White Paper on Neural Network Quantization》

2021 google模型量化白皮书导读离线量化(PTQ)量化范围设置、Cross-Layer Equalization

2022-05-02 16:30:29 1990 3

原创 Pytorch Bug解决:RuntimeError:one of the variables needed for gradient computation has been modified

Pytorch Bug解决:RuntimeError:one of the variables needed for gradient computation has been modified

2022-04-24 14:54:50 5410 1

原创 【1】谷歌2021模型量化白皮书《A White Paper on Neural Network Quantization》

2021 Google模型量化白皮书

2022-04-23 22:33:38 9632 3

原创 Pytorch Bug解决:RuntimeError: running_mean should contain 1 elements not 10

Pytorch Bug解决:RuntimeError: running_mean should contain 1 elements not 10编程环境bug描述bug分析总结编程环境Python 3.9Pytorch 1.11.0bug描述Traceback (most recent call last): File "D:\crl\Projects\start\test.py", line 21, in <module> pred = model(x) File

2022-04-19 16:21:49 8362 1

原创 《Dense Relation Distillation with Context-aware Aggregation for Few-Shot Object Detection》论文总结

一篇针对小样本目标检测的2021CVPR论文解读《Dense Relation Distillation with Context-aware Aggregation for Few-Shot Object Detection》,论文在faster-rcnn的基础上引入了K-Shot元学习的框架提出DCNet,并引入了通道Attention和Transformer的思想,提出Dense Relation Distillation模块和Context-aware Aggregation模块。

2022-04-18 19:39:40 3277 2

原创 opencv-python3 | cv2.findContours()检测图像中物体轮廓

cv2.findContours检测物体轮廓什么是物体轮廓cv2.findContourscv2.drawContours什么是物体轮廓轮廓可以简单地理解为连接所有连续点(沿物体边界)的曲线,这些点通常具有相同的颜色或强度。 轮廓在图像分析中具有重要意义,是物体形状分析和对象检测和识别的有用工具,是理解图像语义信息的重要依据。cv2.findContours通常,为了提高物体轮廓检测的准确率,首先要将彩色图像或者灰度图像处理成二值图像(黑白图像),这样可以在不丢失轮廓信息的前提下降低图像语义信息的复

2022-04-17 19:12:36 20022 4

原创 nn.Sequential()

nn.Sequential()nn.Sequential()介绍一个序列容器,用于搭建神经网络的模块被按照被传入构造器的顺序添加到nn.Sequential()容器中。除此之外,一个包含神经网络模块的OrderedDict也可以被传入nn.Sequential()容器中。利用nn.Sequential()搭建好模型架构,模型前向传播时调用forward()方法,模型接收的输入首先被传入nn.Sequential()包含的第一个网络模块中。然后,第一个网络模块的输出传入第二个网络模块作为输入,按照顺序依次

2022-04-15 16:14:15 67306 4

原创 学习BatchNormalization

BatchNormalization网络模型的发展深度学习训练法则的弊端解决方法—BatchNormalizationBatchNormalization注意事项Pytorch里的BatchNormalization实现

2022-04-09 17:20:28 1448

原创 深度学习之动态调整学习率LR

深度学习之动态调整学习率LR什么是学习率为什么要动态调整学习率基于Pytorch动态调整学习率的几种常见方法

2022-03-26 14:14:48 8742

原创 Matplotlib绘图笔记

简单却不失规范的Matplotlib绘图教程

2022-03-24 15:01:13 1774

原创 膨胀卷积(空洞卷积)学习篇

文章目录膨胀卷积提出背景膨胀卷积是什么膨胀卷积的设计原理膨胀卷积的优缺点膨胀卷积的改进膨胀卷积基于Pytorch的代码实现总结提出背景膨胀卷积是什么膨胀卷积的设计原理膨胀卷积的优缺点膨胀卷积的改进膨胀卷积基于Pytorch的代码实现

2022-03-23 11:40:56 19423 15

原创 word工具栏加载MathType选项卡的解决方法

Word加载MathType选项卡

2022-03-21 17:06:26 12117 6

原创 yolov3网络(DarkNet53)结构详解以及Pytorch代码实现

目录引言网络结构讲解网络结构设计理念残差结构步长为2的卷积替换池化层网络性能评估yolo v3中Darknet-53网络基于Pytorch的代码实现总结引言yolo v3用于提取特征的backbone是Darknet-53,他借鉴了yolo v2中的网络(Darknet-19)结构,在名字上我们也可以窥出端倪。不同于Darknet-19的是,Darknet-53引入了大量的残差结构,并且使用步长为2,卷积核大小为3×3卷积层Conv2D代替池化层Maxpooling2D。通过在ImageNet上的分类表

2022-03-18 21:44:48 19936 4

原创 为什么交叉熵可以作为机器学习和深度学习的损失函数?

目录信息论中的信息量和信息熵信息量(自信息)信息熵相对熵(KL散度)和交叉熵为什么交叉熵可以作为损失函数总结信息论中的信息量和信息熵信息量(自信息)无论是原始年代还是现代,人每天都会接收和发送很多信息,这是一件及其消耗精力的事情,那么怎么着才能减缓精力的消耗呢?答案就是避轻就重,优先处理重要的信息。问题来了,使用什么方法才能区分哪些是重要的信息,哪些是不重要的信息呢?在信息论发明出来之前,人们是无法精确地用数值衡量一个事件包含的信息量的,例如,我中了一篇顶会这件事情包含了多少信息?这就是信息的量化。=

2022-03-13 15:13:51 1411 1

原创 基于源码详解yolov3的loss【注释满满】

2022-03-12 13:23:20 6681 4

原创 损失函数 | BCE Loss(Binary CrossEntropy Loss)

BCE(Binary CrossEntropy)损失函数图像二分类问题--->多标签分类Sigmoid和Softmax的本质及其相应的损失函数和任务多标签分类任务的损失函数BCEPytorch的BCE代码和示例总结图像二分类问题—>多标签分类二分类是每个AI初学者接触的问题,例如猫狗分类、垃圾邮件分类…在二分类中,我们只有两种样本(正样本和负样本),一般正样本的标签y=1,负样本的标签y=0。比如下边这张图片,判断里边有没有人。那么这张图片的标签为y=1,这时我们就根据标签y=1来设计模型

2022-03-10 12:48:16 124552 26

原创 torch.argmax(input, dim, keepdim=False)

文章目录导读官方文档地址参数解析举例演示导读最近有时间看一些目标检测项目的代码(基于Pytorch),里边很多Pytorch的相关操作都忘记了,特来此记录一下,用以加深记忆,而且还能以备一样处境的同学前来查询。今天的主角是torch.argmax(input, dim, keepdim=False)。官方文档地址https://pytorch.org/docs/stable/generated/torch.argmax.htmltorch.argmax(input) → LongTensor

2022-03-08 18:17:12 2851

原创 了解目标检测领域的评估指标mAP

TP:IOU>0.5的检测框数量FP:IOU<=0.5的检测框数量,也包含检测到同一GT的重复检测框数量FN:未被检测到的GT数量Precision=TP/(TP+FP)Recall=TP/(TP+FN)PR曲线:Precision-Recall曲线AP:PR曲线下的面积mAP:各类别AP的平均值...

2022-03-02 22:48:02 1449

原创 Pytorch中的contiguous理解

最近在使用Pytorch搭建网络的时候,遇到一个错误,特来此记录一下,给路过的朋友设置踩坑预警。报错信息RuntimeError: input is not contiguous按照常规操作,谷歌翻译搞起,得到结论:RuntimeError:输入不连续看到翻译结果,我…一脸懵,输入不连续是什么鬼。为了省时间,还是选择冲浪Debug。报错原因先补充一些基础知识:我们知道一个张量tensor有shape和stride这些属性,那么这些属性之间的区别和联系是怎样的?以二维矩阵为例,shape =

2022-01-13 19:53:15 924

原创 初识马尔科夫链,原来是这样的

相信学过随机过程的同学们,一定会知道马尔科夫链。这是一种利用统计方法和模型对大自然中的事物进行处理和预测的算法,例如对股票市场的走向进行判断,对话预测,诗词创作等等。既然马尔科夫链的用处这么广泛,那我们有理由好好认识它一下。马尔科夫链的图例其实马尔科夫链可以看作是是一种较为简单的概率图模型,每个节点以单向或双向的连接方式嵌入到同一图空间内。我们来看一条比较简单的例子。其中每个节点代表的是要分析的随机变量,节点与节点之间的箭头表示了随机变量之间的转换关系。马尔可夫链的核心有三要素:状态空间、无记忆

2022-01-12 20:03:21 1261

原创 LeetCode(力扣) 234题:回文链表----三种方法求解附带详细注释

题目描述给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。示例输入:head = [1,2,2,1]输出:true输入:head = [1,2]输出:false思路分析看到这道题,相信很多朋友跟我一样,就想把链表里的元素放在列表里,然后判断列表是否为回文链表。当然这是第一种最简单直观容易想到的方法。但是有没有其他方法?能不能像证明回文字符串那样,采用双指针的方法来解决回文链表的问题呢?答案是可以的,但是需要用到递归

2021-08-20 17:34:18 1280

原创 LeetCode(力扣) 102题:二叉树的层序遍历----广度优先搜索(BFS)求解附带详细注释

题目描述给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例输入:二叉树:[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7输出返回其层序遍历结果:[ [3], [9,20], [15,7]]思路分析题意是让我们按照层序从左到右的顺序对二叉树进行遍历。层序遍历,是从两个维度上来讲。第一为深度,我们必须要到达二叉树的最大深度才能对其完成遍历;第二为广度,我们

2021-08-19 21:35:24 375

原创 LeetCode(力扣) 209题:和大于等于 target 的最短子数组----滑动窗口求解附带详细注释

题目描述给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsinums_inumsi​,numsi+1nums_{i+1}numsi+1​, …, numsr−1nums_{r-1}numsr−1​, numsrnums_rnumsr​] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下

2021-08-18 17:35:00 1487

原创 机器学习之逻辑回归,它到底在回归什么?

导读

2021-07-14 10:17:45 440 2

原创 使用python和opencv通过边缘填充的方式在不改变图像比例的前提下resize图像到目标大小

导读最近在做一个项目,需要使用人脸关键点的坐标变化作为特征。但是发现经过前期的人脸配准、裁剪、resize预处理之后,图像由于宽高比例发生了变化,其中的人脸已经发生了扭曲变形。在这种扭曲的人脸上检测到的关键点那肯定是不准确的了,更不用谈后期的分析了。所以呢,就需要一种方法,在保证图像宽高比例不变的情况下,把目标图像resize到目标大小。我选择了边缘填充的方式,下面详细介绍一下,并附上代码以及效果,供大家使用观赏。原理没啥高科技哈哈哈,大致分为以下几步:分别计算原始图像宽、高与目标图像宽、高的比例

2021-07-11 18:08:37 7359 12

原创 你要的机器学习常用评价指标,以备不时之需

导读在机器学习中,我们前期经过数据采集、数据清洗,中期进行特征分析、特征选择,后期对处理好的数据集分割,将数据集划分为训练集、验证集合、测试集,最后基于划分好的数据集进行训练调优,并选择性能最好的模型。那么我们是如何评估我们的模型性能好坏的呢?这就不得不说一下常用的机器学习评级指标了。上车~~机器学习评价指标对于机器学习中评价模型性能的指标,常用的有准确率、精度、召回率、P-R曲线、F1 分数、ROC、AUC以及混淆矩阵等。这里我们先以二分类举例讲解,后边推及到多分类即可。在二分类中,我们称呼两类样

2021-07-10 14:53:38 1445 4

原创 你的模型又过拟合了?不如试试L1、L2正则

导读因为L1正则化、L2正则化是为了缓解模型过拟合而提出的,所以在这之前,我们先说一说什么是过拟合以及欠拟合。过拟合在机器学习领域,模型基于数据训练的过程,其实是在学习训练数据的分布模式,在惩罚函数的约束下,它会尽可能地去记住训练数据集中的每一个样本点(即完整地学习到训练数据的分布)。我们拿线性回归举例,线性回归是要拟合一个函数,该函数需要尽可能地经过每个样本点,如图所示。但是众所周知,人为采集的数据集是不完美的,里边会包含缺失值、异常值等噪声,如果该函数将这些噪声也拟合了,这时候模型在训练数据上

2021-07-09 22:38:53 436 16

原创 python迭代器和生成器,你真的了解吗?

概念介绍生成器生成器是一个特殊的程序,可以被用作控制循环的迭代行为,python中生成器是迭代器的一种,使用yield返回值函数,每次调用yield会暂停,随后使用next()函数和send()函数恢复生成器。通俗地说,生成器类似于一个返回值为数组地函数,这个函数可以接受参数,可以被调用,但是一般的函数会一次性地返回包含了所有结果的数组,而生成器依次只能产生一个值,这样消耗的内存便大大减小(因为有时候不是所有的返回结果我们马上就要用到,所以一次性返回所有结果会造成内存资源浪费),并且允许调用函数可以很

2021-07-08 22:12:18 458 9

原创 python的深拷贝与浅拷贝

摘要抽象地说,浅拷贝就像引用类型,而深拷贝就比较像值类型。浅拷贝是指拷贝对象与源对象共用一份实体,仅仅是引用的变量不同,即变量的名称不同,但往深了挖其实是一个东西。对源对象和拷贝对象其中任何一个做改动,都会影响另一个对象。深拷贝是指源对象和拷贝对象相互独立,对其中任一对象做改动都不会对另一对象产生影响。**浅拷贝:**只复制源对象的基本类型、对象类型,仍属于原来的引用。即指的是重新分配一块内存,创建一个新的对象,但里面的元素是源对象中各个子对象的引用。**深拷贝:**不仅复制对象的基本类,同时也复制源

2021-07-06 22:06:00 321 6

原创 理解目标检测里的Anchor-based和Anchor-free

导读目标检测模型按照anchor划分可分为两类:anchor-based、anchor-free其中,anchor-based的代表算法有:faster r-cnn、ssd、retinaNet、yolo v2、yolo v3…anchor-free的代表算法有:yolo v1、CornerNet、CenterNet…anchor based目前主流的目标检测算法多是anchor-based这一类,其中有two-stage也有one-stage。所谓的anchor是什么?说白了就是事先通过手工或聚类

2021-07-06 16:02:46 8019

原创 LeetCode(力扣) 146题:LRU缓存机制----哈希表+双向链表求解附带详细注释

题目描述运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之前

2021-07-05 22:06:34 418 1

原创 LeetCode(力扣) 142题:环形链表 II----快慢指针求解附带详细注释

题目描述给定一个链表,返回链表开始入环的第一个节点,如果链表无环,则返回None。为了表示给定链表中的环,我们使用Pos来表示链表尾连接到链表中的位置(索引从0开始)。如果Pos = -1,则在该链表中没有环。注意,Pos仅仅适用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表示例输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部连接到第二个节点。输入:head = [1,2], pos = 0

2021-07-05 11:28:48 350

原创 LeetCode(力扣) 93题:复原IP地址----回溯求解附带详细注释

题目描述给定一个只包含数字的字符串 s ,用以表示一个IP地址,返回所有可能从 s 中获得的有效IP地址,你可以按照任何顺序返回答案。有效IP地址由四个整数 (每个整数位于0-255之间,且不能含有前导 0 ) 组成,整数之间使用 ‘ . ’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。输入输出示例输入:s = "255255111

2021-07-04 22:22:59 514 4

原创 YOLO v4结构原理解析

导读YOLO v1开启了One-Stage目标检测的大门,检测速度直接甩开Two-Stage几条街,虽然精度与Two-Stage尚有差距,但随着YOLO持续不断地更新换代,通过设计性能更加出色的Backbone以及各种Tricks,现在YOLO系列的检测精度已经不输Two-Stage,并且依然保持着超快的检测速度,被业界广泛使用。目前YOLO已经更新到了第五代,但我觉得YOLO v4这篇文章是最适合大家去认真读的,因为它相当于一部目标检测的综述文章,看完之后会对现在目标检测有一个大致的框架。在计算机视觉的

2021-07-04 14:39:07 1653

原创 手撕代码,不用深度学习框架自己写卷积层

随着深度学习技术的不断更新,应用越来越广泛。为了方便开发,各大公司都开源了自己深度学习框架,比如Google的Tensorflow,Facebook的Pytorch,百度的PaddlePaddle飞桨,里边各种函数接口API我们调用到手软,非常方便,而且上手也很快。但是在面试的时候,面试官为了考察应聘者对深度学习原理的理解程度,有时会让手撕源码,今天我们就来练习一下。在本文中,我们先简单介绍一下卷积层和池化层,然后开始写代码。卷积层介绍在卷积层中,我们会设置一个或多个固定 (或不固定) 大小(3 *

2021-07-03 17:11:14 1213 2

原创 LeetCode(力扣) 312题:戳气球----动态规划求解附带详细注释

问题描述有n个气球,编号为 0 到 n-1,每个气球上都标有一个数字,这些数字存在于数组nums中。现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得nums[i-1] * nums[i] * nums[i+1]枚硬币。这里的 i - 1 和 i + 1 代表和 i 相邻的两个气球的序号。如果 i - 1或 i + 1 超出了数组的边界,那么就当它是一个数字为 1 的气球。求所能获得硬币的最大数量。示例输入:nums = [3,1,5,8]输出:167解释:nums = [3,1,5,

2021-07-01 17:06:56 1109

原创 LeetCode(力扣) 03题:无重复字符的最长子串----滑动窗口迭代求解附带详细注释

题目描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度,返回其长度。示例输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。输入: s = ""输出: 0思路题目是让我们找出不包含重复元素的最长子串,那么一次遍历就够了,只要碰到重复元素,便直接取当前子串重复元素之后的部分继续往后遍历,最终选择最长的子串即

2021-07-01 11:42:38 254 1

原创 LeetCode(力扣) 92题:反转链表 II----双指针迭代方法求解附带详细注释

题目描述给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。示例输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]思路分析这道题其实和上次讲的“反转链表”那道题目很相似,上次是对整个链表进行反转,这次是取区间,对区间内的链表部分进行反转。思路上呢就是首先将要反转的链表从原链表中取出,对其进行反

2021-06-30 17:11:42 874

空空如也

空空如也

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

TA关注的人

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