- 博客(74)
- 收藏
- 关注
原创 NMS与Soft NMS算法解析以及numpy实现
NMS全称为Non Maximum Suppression,中文意思是非极大值抑制,字面意思就是不是极大值的元素被抑制掉,其实就是筛选出局部最大值得到最优解。NMS算法被广泛运用于目标检测算法处理网络输出的边界框。Soft NMS是对NMS的优化算法,它在不增加额外参数的情况下且只需要对NMS算法进行简单的改动就能提高AP。
2022-12-16 21:09:57 2269 1
原创 opencv-python多线程读取视频
线程是进程中的一个执行单元。多线程是指通过在线程之间快速切换对 CPU 的控制来并发执行多个线程。在Python中,我们通常使用threading库对线程来进行控制。在没有多线程的程序中按顺序进行处理时,程序等待下一帧可用,然后再对其进行处理。读取帧所需的时间主要与请求、等待和将下一个视频帧从相机传输到内存所需的时间有关。对视频帧进行计算所花费的时间,无论是在 CPU 还是 GPU 上,占据了视频处理所花费的大部分时间。多线程可以运用在深度学习中的图像识别,例如:利用视频流进行目标检测、实时的语义分割以及人
2022-12-05 21:23:31 2377
原创 Python好用的VSCode插件
当你写 Python 代码时,它会实时帮你改进代码。它会自动审查和重构你的代码,以便你可以花更多时间专注于编写新代码,减少清理时间。可以让你的 Python 代码更干净、更易读。这是一个让你能更好地编写注释的工具,它能根据关键词用不同的颜色高亮代码片段。它在编辑器的状态栏中显示聚焦文件的大小,如果你单击状态栏组件,它将显示有关文件的更多信息。可以生成漂亮的代码截图,用于文档的编写。安装之后,全选要截图的代码,右键CodeSnap。能够自动生成函数的注释格式,通过tab键快速切换填充块编写相应的注释。
2022-09-24 10:19:39 9336
原创 pytorch实现FLOPs和Params的计算
FLOPs: 注意s小写,指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。Params:是指模型训练中需要训练的参数总数。代码实现方法1使用thop库方法2使用torchstat库
2022-06-27 20:33:47 2387
原创 Tensorflow2实现人脸关键点检测算法PFLD——一个精度高,速度快,模型小的人脸关键点检测模型
1. 前言最近,学了人脸关键点检测算法,发现一个比较好的人脸关键点检测模型,打算学一学,让我们来看看算法是如何实现的吧!论文地址:https://arxiv.org/pdf/1902.10859.pdf2. PFLD介绍PFLD的全称是A Practical Facial Landmark Detector,论文提出在非限定条件下的具有理想检测精度的轻量级landmark检测模型,在移动设备上能达到超实时的性能。PFLD采用辅助网络来估计人脸样本的集合信息。针对数据不平衡,设计新的损失函数,加大对
2022-05-25 11:15:29 2022 1
原创 tensorflow2.x实现人脸关键点检测
1. 人脸关键点检测介绍人脸关键点检测是检测人脸上的一些特征,通常检测点的数量为5,68,98点。其流程为:输入一张图片->网络模型->关键点。此博客以68点为例实现人脸关键点检测。如图:实现步骤:获得到人脸图片以及其关键点坐标,也就是数据集。数据处理构建网络模型训练模型预测图片2. 数据集链接:https://pan.baidu.com/s/14W6OIU3h3FVwSEoEmlx8xA 提取码:bj9n或者登录:https://aistudio.baidu.c
2022-05-22 12:49:53 1356
原创 PaddlePadlle2.3实现人脸关键点检测
1. 人脸关键点检测介绍人脸关键点检测是检测人脸上的一些特征,通常检测点的数量为5,68,98点。其流程为:输入一张图片->网络模型->关键点。此博客以68点为例实现人脸关键点检测。实现步骤:获得到人脸图片以及其关键点坐标,也就是数据集。数据处理构建网络模型训练模型预测图片2. 数据集链接:https://pan.baidu.com/s/14W6OIU3h3FVwSEoEmlx8xA 提取码:bj9n或者登录:https://aistudio.baidu.com/ai
2022-05-20 18:29:34 1993 4
原创 paddlepaddle2.3 实现mobilenetv2图像分类
目录MobilenetV2介绍MobilenetV2网络结构1. Depthwise Separable Convolutions2. Linear Bottlenecks3. Inverted residuals4. Model Architecture网络结构代码演示代码仓库MobilenetV2介绍网络设计是基于MobileNetV1。它保持了简单性,同时显著提高了精度,在移动应用的多图像分类和检测任务上达到了最新的水平。主要贡献是一个新的层模块:具有线性瓶颈的倒置残差。该模块将输入的低维压缩表示
2022-05-17 16:03:37 629
原创 MYSQL学习篇4——查询数据、排序
目录查询列查询行查询中的算术运算符查询中的取别名查询中的去重order by排序查询列选择所有列在select关键字后面加*,表示选择所有列。语法:select * from 表名;选择指定列语法:select 列名1,列名2 from 表名;查询行语法:select 列1, 列2 from 表名 where 条件表达式;满足条件表达式的行都会被保留。where语句紧跟from子句。注意:条件表达式中的不等于可以用!=, <>表示。可以用between ..
2022-05-07 18:11:18 1585
原创 pytorch搭建MobileViT网络——一种用于移动设备的轻量级通用视觉 transformer
MobileViT介绍论文地址:https://arxiv.org/pdf/2110.02178.pdf来自苹果的研究者提出了一种用于移动设备的轻量级通用视觉 transformer——MobileViT。该网络在 ImageNet-1k 数据集上实现了 78.4% 的最佳精度,比 MobileNetv3 还要高 3.2%,而且训练方法简单。轻量级卷积神经网络(CNN)是移动设备机器视觉任务的首选。它们的空间归纳偏置允许它们在不同的视觉任务中,可以使用较少的参数进行视觉内容的学习表示。但是这些网络在空
2022-05-04 23:37:13 2845
原创 tensorflow2.X和pytorch实现polyloss
polyloss介绍polyloss是Cross-entropy loss和Focal loss的优化版本,PolyLoss在二维图像分类、实例分割、目标检测和三维目标检测任务上都明显优于Cross-entropy loss和Focal loss。作者认为可以将常用的分类损失函数,如Cross-entropy loss和Focal loss,分解为一系列加权多项式基。它们可以被分解为∑j=1nαj(1−Pt)j\sum_{j=1}^n\alpha_j(1-P_t)^j∑j=1nαj(1−Pt)j
2022-05-03 19:27:54 3152 21
原创 MYSQL学习篇3——数据操纵(插入数据、默认值处理、修改数据、删除数据)
目录插入数据默认值处理修改数据删除数据插入数据选择插入语法:insert into 表名(列名1, 列名2, ...) values(值1, 值2, ...);例子:创建一个表,名称为departments,字段名为department_id,department_name,location_id。create table departments(department_idint,department_namevarchar(30),location_id int);将departm
2022-05-03 14:42:13 2154 4
原创 MySQL学习篇2——约束
学习前言MySQL有如下约束:约束类型约束作用Primary Key(主键约束)1. 不允许为空值2. 不允许有重复值出现3. 能够确保数据的唯一性Foreign Key(外键约束)1. 可以有重复值2. 可以有空值3. 值必须是另一个参照表内的值4. 能够保证数据在参照表中的完整性...
2022-05-01 20:42:52 229
原创 tensorflow2.3实现PPLCNet——一个速度更快、准确率更高的轻量级骨干网络
1. 前言PPLCNet是百度团队结合Intel-CPU端侧推理特性而设计的轻量高性能网络PP-LCNet,所提方案在图像分类任务上取得了比ShuffleNetV2、MobileNetV2、MobileNetV3以及GhostNet更优的延迟-精度均衡。论文提出了一种基于MKLDNN加速的轻量CPU模型PP-LCNet,它在多个任务上改善了轻量型模型的性能。如下图所示,在图像分类任务方面,所提PP-LCNet在推理延迟-精度均衡方面大幅优于ShuffleNetV2、MobileNetV2、Mobile
2022-04-06 12:30:22 6399
原创 深度学习开源数据集——自动驾驶、目标检测、人脸识别、文本检测、图像分类
前言在深度学习中,如果没有数据集,就无法训练模型,所以数据是根本,下面列出几个常用数据集。想要更多数据集,可以去这个地址:https://www.cvmart.net/dataSets或https://gas.graviti.cn/open-datasets自动驾驶数据集1. BDD100K数据集2018年5月伯克利大学AI实验室(BAIR)发布了公开驾驶数据集BDD100K,同时设计了一个图片标注系统。BDD100K 数据集包含10万段高清视频,每个视频约40秒\720p\30 fps 。每个视
2022-04-04 16:00:25 4349
原创 tensorflow2.4实现XBNBlock——batch-free normalization在ResNet50、MobileNet v2中的使用,解决BN的局限
1. 前言
2022-04-02 16:16:12 1432
原创 tensorflow-gpu2.X版本安装详解
1. 对应版本官网在安装tensorflow-gpu版本之前,需要安装cuda和cudnn。对应版本可以在官网中寻找,我也把图放在下面了。2. tensorflow-gpu安装cudacuda是英伟达推出的运算平台,是一种通用的并行计算机构,可以使gpu解决复杂的计算问题。cuda下载的地址为:https://developer.nvidia.com/cuda-toolkit-archive。例如。想下载cuda11.0,可以点击CUDA Toolkit 11.0.0,点击右侧的Versione
2022-03-28 20:52:27 2051
原创 YOLOV4学习小总结
前言论文:https://arxiv.org/abs/2004.10934YOLOV4就是筛选了一些从YOLOV3发布至今,被用在各式各样检测器上,能够提高检测精度的tricks,并以YOLOV3为基础进行改进的目标检测模型。YOLO V4在保证速度的同时,大幅提高模型的检测精度。下图是YOLOV4总体网络结构。1. backboneYOLOV4的backbone从YOLOV3的DarkNet53 -> CSPDarkNet53,如下图。其中:1. 激活函数使用了Mish激活函数
2022-03-27 21:41:31 5740
原创 pyecharts学习小总结——Bar(柱状图)、Pie(饼图)、Line(线图)、Page(页面组件)、Tab(分页组件)、Grid(组合组件)
# pyecharts常用模块总结文档链接:https://pyecharts.org/#/zh-cn/global_options- Bar(柱状图)- Pie(饼图)- Line(线图)- Page(页面组件)- Tab(分页组件)- Grid(组合组件)
2022-03-25 21:56:05 6163 4
原创 MYSQL学习篇1——创建删除库、备份及恢复数据库数据、创建删除表以及关于表的修改
MYSQL学习篇1——创建删除库、备份及恢复数据库数据、创建删除表以及关于表的修改
2022-03-20 14:44:24 764
原创 蓝桥杯python省赛冲刺篇2——常用算法的详细解析及对应蓝桥杯真题:打表模拟法、递推递归法、枚举法、贪心算法、差分与前缀和
一、打表模拟法介绍模拟法是比赛中最常用的方法,使用各种算法大都离不开模拟,而对于一些只是需要结果的题目来说打表法是一个非常好的解决方案,而且对于数论等其他需要找规律的题目来说,打表法是一个非常有用的方法。这种方法一般多数出现在填空题中。下面给出几道关于打表模拟法的蓝桥杯真题。1. 算式问题题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。看这个算式:☆☆☆ + ☆☆☆ = ☆☆☆如果每个五角星代表 111 ~ 999 的不同的数字。这个算式有多少种可能的正确
2022-03-18 19:50:27 2104
原创 蓝桥杯python省赛冲刺篇1——数据结构基础:队列、栈、排序
CLZ 的银行普通队列(队列)题目描述CLZ 银行只有两个接待窗口,VIPVIPVIP 窗口和普通窗口,VIPVIPVIP 用户进入 VIPVIPVIP 窗口排队,剩下的进入普通窗口排队。现有 MM 次操作,操作有四种类型,如下:IN name V:表示一名叫 name 的用户到 VIPVIPVIP 窗口排队OUT V:表示 VIPVIPVIP 窗口队头的用户离开排队IN name N:表示一名叫 name 的用户到普通窗口排队OUT N:表示普通窗口队头的用户离开排队求 MMM 次操作结
2022-03-16 14:16:33 1406 1
原创 pytorch实现Parnet猫狗识别
前言深度是深度神经网络的标志,但深度越大意味着顺序计算越多延迟也越大。这就引出了一个问题——是否有可能构建高性能的“非深度”神经网络?作者实现了一个12层的网络结构实现了top-1 accuracy over 80%on ImageNet的效果。分析网络设计的伸缩规则,并展示如何在不改变网络深度的情况下提高性能。下面我们就看看作者在论文中是怎么说的吧!论文地址:https://arxiv.org/abs/2110.076411. Introduction(介绍)人们普遍认为,大深度是高性能网络的重
2022-03-15 13:56:28 1786 6
原创 opencv-python——2(颜色分割(RGB、HSV)、读取摄像头和视频并保存)
前言关于opencv读取图片等基本操作可以查看opencv-python基础操作汇总——1(读取、画线、平移,旋转缩放、翻转和裁剪等操作)颜色分割(RGB)可以通过cv2.split来分割RGB通道,再用cv2.merge来融合通道。import cv2import matplotlib.pyplot as pltimport numpy as npplt.figure()image = cv2.imread('im0.png')plt.subplot(2,2,1)plt.imsho
2022-03-14 18:10:03 9865
原创 tensorflow2.4复现parnet网络模型实现猫狗分类
前言深度是深度神经网络的标志,但深度越大意味着顺序计算越多延迟也越大。这就引出了一个问题——是否有可能构建高性能的“非深度”神经网络?作者实现了一个12层的网络结构实现了top-1 accuracy over 80%on ImageNet的效果。分析网络设计的伸缩规则,并展示如何在不改变网络深度的情况下提高性能。下面我们就看看作者在论文中是怎么说的吧!论文地址:https://arxiv.org/abs/2110.076411. Introduction(介绍)人们普遍认为,大深度是高性能网络的重
2022-03-14 15:17:21 1942 9
原创 opencv-python基础操作汇总——1(读取、画线、平移,旋转缩放、翻转和裁剪等操作)
1. 读取并显示注意:opencv读取时,默认是BGR格式,且是numpy.ndarray类型import cv2import matplotlib.pyplot as pltimage = cv2.imread('./im0.png') # 默认读取BGR格式print('图片的高:', image.shape[0])print('图片的宽:', image.shape[1])print('图片的通道数:', image.shape[2])plt.imshow(image)# pl
2022-03-09 22:40:54 5842
原创 tensorflow2.2实现MobilenetV2
MobilenetV2介绍网络设计是基于MobileNetV1。它保持了简单性,同时显著提高了精度,在移动应用的多图像分类和检测任务上达到了最新的水平。主要贡献是一个新的层模块:具有线性瓶颈的倒置残差。该模块将输入的低维压缩表示首先扩展到高维并用轻量级深度卷积进行过滤。随后用线性卷积将特征投影回低维表示。MobilenetV2网络结构在介绍MobilenetV2网络结构之前需要先了解一下网络内部的细节。1. Depthwise Separable Convolutions深度可分卷积这是一种分解卷
2022-03-09 11:59:39 1320
原创 pytorch使用迁移学习模型MobilenetV2实现猫狗分类
MobilenetV2介绍网络设计是基于MobileNetV1。它保持了简单性,同时显著提高了精度,在移动应用的多图像分类和检测任务上达到了最新的水平。主要贡献是一个新的层模块:具有线性瓶颈的倒置残差。该模块将输入的低维压缩表示首先扩展到高维并用轻量级深度卷积进行过滤。随后用线性卷积将特征投影回低维表示。MobilenetV2网络结构在介绍MobilenetV2网络结构之前需要先了解一下网络内部的细节。1. Depthwise Separable Convolutions深度可分卷积这是一种分解卷
2022-03-09 11:40:46 2798 1
原创 使用pytorch构建神经网络实现MNIST分类训练
1. 导入库import torchimport torchvisionimport torchvision.transforms as transformsimport matplotlib.pyplot as pltimport numpy as npimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optim2. 设置超参数BATCH_SIZE=512 EPOCHS=20 DEV
2022-03-08 13:11:33 1392
原创 YoloV2学习小总结
前言首先,yolov2比yolov1改进的地方有许多,使得yolov2在性能指标上有很大的改进。速度方面更快召回率更高下图是yolov2采用各种改进方法的mAP指标。相比于yolov1的改进1. Better1. Batch NormalizationBatch Normalization可以使模型在收敛方面速度更快,因为Batch Normalization有利于正则化的作用,所以可以不需要再添加任何正则化的操作。在yolov2中Batch Normalization在所有卷积层
2022-02-26 19:46:36 1441
原创 python实现根据前序序列和中序序列求二叉树的后序序列
根据前序序列求根结点,根据中序序列求左右子树。如上图:根据前序序列,谁在前面谁就是根结点;根据根结点,确定左右子树。class BiTreeNode: def __init__(self, data): self.data = data self.lchild = None self.rchild = Noneclass SolvedPostOrder: def __init__(self, pre_order, in_order)
2022-02-25 20:53:51 1496
原创 python实现二叉树的创建、前序遍历、中序遍历以及层次遍历
二叉树的概念二叉树是指度不超过2的树,可以由n个结点构成,如下图。二叉树的创建注意:输入的格式,如下图,D结点的孩子结点,空结点用#代替,直到最后一层就可以停止输入,以下面这棵树为例,则我们的输入为 ABCDE#F##G#####class CreateBiTree: """ str_tree: 传入字符串 return: 返回根结点 """ def __init__(self, str_tree): self.str_tree = s
2022-02-25 16:07:41 6393 1
原创 python装饰器的讲解
装饰器的概念装饰器其实就是闭包,它的作用是在不改变源代码的情况下,在一个函数的基础上增加新的功能,使用场景特别多。当我们写一个闭包增加函数的时候,如下:在func1的函数功能上增加一个,打印当前时间的函数import datetimedef show_now_time(func): def f1(*args, **kwargs): func(*args, **kwargs) print("当前时间:",datetime.datetime.now())
2022-02-23 20:04:22 411
原创 YoloV1学习小总结
1. yolov1特点将目标检测转化为回归问题,直接从图像像素到边界框坐标和类别概率, 是一个端到端目标检测模型,速度非常快。网络使用整个图像的特征来预测每个边界框。它还可以同时预测图像中所有类的所有边界框。将输入图像划分为一个S × S网格。如果一个对象的中心落在一个网格单元中,该网格单元负责检测该对象。对于小物体检测效果不好。2. 如何进行检测yolov1使用从整张图片提取的特征中去预测每个边界框。可以同时预测所有类别的所有边界框。yolov1把图片分成S×SS \times
2022-02-23 17:38:13 3231 3
原创 python蓝桥杯7——子串分值、谈判、扫雷
子串分值题目描述对于一个字符串 SSS,我们定义 SSS 的分值 f(S)f(S)f(S) 为 SSS 中恰好出现一次的字符个数。例如 f(aba)=1f(aba) = 1f(aba)=1,f(abc)=3f(abc) = 3f(abc)=3, f(aaa)=0f(aaa) = 0f(aaa)=0。现在给定一个字符串 S0⋯n−1S_{0 \cdots n − 1}S0⋯n−1(长度为 nnn,1≤n≤1051 \leq n \leq 10^51≤n≤105),请你计算对于所有 SSS 的非空子串
2022-02-23 09:50:56 358
原创 python蓝桥杯刷题6——删除字符、回文日期、单词分析
删除字符题目描述给定一个单词,请问在单词中删除 tt 个字母后,能得到的字典序最小的单词是什么?输入描述输入的第一行包含一个单词,由大写英文字母组成。第二行包含一个正整数 ttt。其中,单词长度不超过 100,ttt 小于单词长度。输出描述输出一个单词,表示答案。输入输出样例示例1输入LANQIAO3输出AIAO代码演示s = list(input())t = int(input())cnt = 0while cnt < t: i
2022-02-23 09:03:17 349
原创 python闭包的讲解
前言我们知道,函数作用域是独立的、封闭的,外部的执行环境是访问不了的,但是闭包可以。闭包的概念闭包是一个函数,且存在另一个函数中。其实函数和自由变量的总和,就是一个闭包。那什么是自由变量呢?自由变量是指如果变量在一个代码块中被使用但不是在其中定义。这就是自由变量。闭包的特点:可以访问到父级函数的变量,且该变量不会销毁。def t1(): print("t1->") b = 2 def t2(): nonlocal b # 声明 pri
2022-02-22 18:06:52 336
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人