qq1076214993的博客

私信 关注
找不到服务器1703
码龄5年

擅长c/c++/c#/python,MATLAB/SIMULINK 研究飞控、机械臂、计算机视觉等 QQ1076214993 wechat zhn1076214993

  • 1,116
    被访问量
  • 16
    原创文章
  • 398,418
    作者排名
  • 10
    粉丝数量
  • 于 2016-03-14 加入CSDN
获得成就
  • 获得1次点赞
  • 内容获得5次评论
  • 获得48次收藏
荣誉勋章
兴趣领域
  • #硬件开发
    #FPGA开发#单片机
  • #算法
    #CV(computer vision)#PyTorch
  • #后端
    #C/C++
  • #人工智能
    #PyTorch#深度学习#视觉/OpenCV#图像处理#算法#Python
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

STM32用DMA串口发送

简化正点原子的DMA发送程序,添加DMA发送中断,发送中断内更改引脚电平 简化正点原子的DMA发送程序,添加DMA发送中断,发送中断内更改引脚电平
rar
发布资源于 1 秒前

stm32用定时器通过驱动器控制多个步进电机

摘要如果使用驱动器如TB6600、DM542等驱动步进电机,需要通过PWM控制。每个PWM脉冲将驱动步进电机转过一个步距角,因此想要使步进电机转过指定角度需要输出指定的PWM波形。stm32的每个定时器具有4个输出通道,本文讲如何通过一个定时器的4个输出通道控制4个步进电机并使它们能够各自实现独立转动。PWM波形用50%占空比即可,但难点在于,一是输出指定个数脉冲后停止输出,收到指令后还能继续输出指定个数脉冲,二是能够根据指令修改PWM频率并保持占空比不变。输出指定个数脉冲单脉冲模式单脉冲模式的
原创
8阅读
0评论
0点赞
发布博客于 5 天前

yolov5精简

https://gitee.com/xd15zhn/yolov5
原创
31阅读
0评论
0点赞
发布博客于 5 天前

从零搭建自己的目标检测网络教程(五)损失函数

这篇文章的重点是解释为什么YOLO的损失函数中的置信度损失要设计成iou的形式而不是简单的0和1,而且既然是IOU那为什么不是最好用的ciou而就是最简单的iou?(待续。。。)从零搭建自己的目标检测网络教程(零)前言...
原创
12阅读
0评论
0点赞
发布博客于 13 天前

从零搭建自己的目标检测网络教程(四)数据集处理

分类部分使用的是录制视频的方式,定位部分仅使用数据增强技术。分类分类数据集的获取方法是,为待识别的物体和物体所在的背景分别录制一段或多段视频,并在dataset文件中给出说明(以后可能会把程序改成多个视频放在2个文件夹中)定位这部分方法是我自己想到的,而且有很多创新的地方,所以我在前言中写禁止转载。目标检测的标注一直是一个很大的问题,有很多的自动标注工具,而我的方法只需要对一张图片(多张也可以,越多越好)进行标注即可。仿射变换图像平移的仿射变换的公式如下:[x′y′]=[10dx01dy][x
原创
28阅读
0评论
0点赞
发布博客于 13 天前

python模拟微信红包

import numpy as npenvelope = 50 # 红包数额copies = 5 # 红包份数leftcopies = copiessummoney = 0while True: uplimit = envelope / leftcopies * 2 x = int(uplimit * np.random.rand() * 100 + 0.5) if x == 0: x = 1 x /= 100 print(x)
原创
4阅读
0评论
0点赞
发布博客于 13 天前

从零搭建自己的目标检测网络教程(三)边界框回归

关于边界框回归有个理论细节所有人都没有提到,问了好多人都觉得我问的问题太简单了根本就不算个问题,我甚至解释了好几遍才找到能准确描述出我的疑惑的问法,可当我提问清楚后大家又表示没想过这个问题,建议我去问原作者,我现在想明白了便在此解释一下。附一个网上介绍的比较详细的博客边框回归(Bounding Box Regression)详解以及DIOU和CIOU论文Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression这篇论文
原创
15阅读
0评论
0点赞
发布博客于 13 天前

从零搭建自己的目标检测网络教程(二)特征提取主干网络

第一版的主干网络使用resnet18,没有修改结构,网络结构如下:第二版基于shufflenetV2网络进行修改,网络结构如下:
原创
19阅读
0评论
0点赞
发布博客于 13 天前

从零搭建自己的目标检测网络教程(一)输出单个网格

第一版代码的思路是,主干网络使用resnet18,没有修改,把摄像头输入的图像resize成224x224,最终输出是7x7,然后分成两路,一路预测概率,一路进行边界框回归。
原创
17阅读
0评论
0点赞
发布博客于 13 天前

从零搭建自己的目标检测网络教程(零)前言

我从零搭建自己的目标检测网络而不用现在流行的网络(YOLO,RCNN,SSD等)有以下几个原因:看不懂源码,就算看懂了也不能保证自己注意到了所有的细节我要完成的任务是识别任何我想识别的物体,换句话说就是没有公开的数据集(这说白了还是因为我没搞懂YOLO网络在训练方面的一些细节)流行的网络都是针对的正方形或指定比例的图像分辨率输入,而我要用摄像头,分辨率固定,不需要resize,而且分辨率较高,想给每个网格分配更高的分辨率自己从零开始设计更能加深理解这些原因让我最终决定不如自己设计一个网络。我将
原创
51阅读
0评论
0点赞
发布博客于 13 天前

Batch Normalization实验验证

本文对文章Batch Normalization详解以及pytorch实验中的程序进行扩展import numpy as npimport torch.nn as nnimport torchimport mathdef bn_process_train(feature, mean, var): new_mean = mean.copy() new_var = var.copy() for i in range(feature.shape[1]): #
原创
6阅读
0评论
0点赞
发布博客于 22 天前

单隐层前馈网络求最小值

import torchimport torch.nn as nndef min_loss(x, y): return (x-y)**2class funcnet(nn.Module): def __init__(self): super().__init__() self.fc1 = nn.Linear(4, 20) self.relu1 = torch.tanh self.fc2 = nn.Linear(20,
原创
9阅读
0评论
0点赞
发布博客于 1 月前

自己搭建resnet18网络并加载torchvision自带权重

import torchimport torchvisionimport cv2 as cvfrom utils.utils import letter_boxfrom model.backbone import ResNet18model1 = ResNet18(1)model2 = torchvision.models.resnet18(progress=False)fc = model2.fcmodel2.fc = torch.nn.Linear(512, 1)# print(m
原创
103阅读
4评论
0点赞
发布博客于 2 月前

pytorch加载预训练模型与自己模型不匹配的解决方法

pytorch中如果自己搭建网络并且加载别人的与训练模型的话,如果模型和参数不严格匹配,就可能会出问题,接下来记录一下我的解决方法。两个有序字典找不同模型的参数和pth文件的参数都是有序字典(OrderedDict),把字典中的键转为列表就可以在for循环里迭代找不同了。model = ResNet18(1)model_dict1 = torch.load('resnet18.pth')model_dict2 = model.state_dict()model_list1 = list(mode
原创
361阅读
1评论
0点赞
发布博客于 2 月前

LeNet论文全文翻译《Gradient-based learning applied to document recognition》(中)

目录4. 多模块系统和图变换网络A. 一个面向对象的方法4. 多模块系统和图变换网络  如前所述,经典的反向传播算法是基于梯度学习的一种简单形式。但是很明显,与由交替的线性变换和S型函数组成的简单多层前馈网络相比,公式4给出的梯度反向传播算法描述的是更一般的情况。原则上,只要我们可以通过任何向量计算这些模块的雅可比积,就可以通过任何功能模块的排列对导数进行反向传播。我们为什么要训练由多个异构模块组成的系统?答案是,大型、复杂的可训练系统需要由简单,专门的模块构建而成。最简单的示例是LeNet-5,它混合
翻译
77阅读
0评论
0点赞
发布博客于 2 月前

LeNet论文全文翻译《Gradient-based learning applied to document recognition》(上)

目录摘要术语引言摘要摘要:用反向传播算法训练的多层神经网络建立了一个成功的基于梯度的学习技术的最佳例子。给定适当的网络体系架构,可以使用基于梯度的学习算法来合成复杂的决策面,该决策面可以以最少的预处理对高维模式(例如手写字符)进行分类。本文回顾了应用于手写字符识别的各种方法,并将它们与标准的手写数字识别任务进行了比较。专门设计用于处理二维(2-D)形状的可变性的卷积神经网络被证明性能优于所有其他技术。  现实生活中的文档识别系统由多个模块组成,包括字段提取,分割,识别和语言建模。一种称为图变换网络(G
翻译
171阅读
0评论
1点赞
发布博客于 2 月前

各个地方用到的图形坐标顺序

出处解释示例分辨率宽度x高度1920x1080cv::Mat行x列200x100cv::Point行x列200x100
原创
36阅读
0评论
0点赞
发布博客于 3 月前

python BeautifulSoup 爬虫

import requestsfrom bs4 import BeautifulSoupimport reimport openpyxlpattern_href = re.compile(r'(?<=href=\").+?(?=\")') # 商品链接pattern_id = re.compile(r'\d+') # 商品IDpattern_name = re.compile(r'.+(?=</div>)') # 书名pattern_author = re.compi
原创
36阅读
0评论
0点赞
发布博客于 3 月前

numpy和torch转换

numpy和torch转换-numpytorch零初始化x=np.zeros(3)x=torch.zeros(3)正态分布x=np.random.randn(3)x=torch.randn(3)转换y=x.numpy()y=torch.from_numpy(x)矩阵顺序调整y=x.transpose(2,1,0)y=x.permute(2,1,0)
原创
17阅读
0评论
0点赞
发布博客于 3 月前

pytorch实现lenet5

Pytorch 搭建的LeNet-5网络,使用Minist数据集,测试集准确率接近98.4%。文件内包含代码、Minist数据集和训练好的模型参数。
zip
发布资源于 8 月前

常用初等函数的快速算法

以损失一部分精度为代价来节省代码量并提高运算速度,包括:正弦、余弦、反正切、全角度反正切、反正弦、反余弦、平方根、平方根倒数、自然指数、自然对数、数字低通滤波器等。
zip
发布资源于 10 月前

c#实现井字棋小游戏

c# winform实现井字棋小游戏,可选择人机对战或双人对战,以及谁先谁后。博弈算法使用一层最小最大算法,可实现不输。
rar
发布资源于 1 年前

MATLAB径向基函数神经网络

径向基函数神经网络进行异或分类,首先在4个象限随机生训练数据,然后进行FCM聚类,取4个隐层神经元代表分成4类,最后通过伪逆求出输出层神经元权重,输出通过0和1区分
rar
发布资源于 1 年前

matlab模糊C均值聚类(FCM)

matlab实现模糊C均值聚类,附带包含600个2维数据的数据集,可视化展示结果。数据集有3类,分别分布在第一、二 三象限。
rar
发布资源于 1 年前

c++实现简单hopfield神经网络

简单hopfield神经网络实现4个神经元组成的吸引子,W矩阵由(-1,1,1,-1)和(-1,1,-1,1)构造。
cpp
发布资源于 1 年前

C++实现简单BP神经网络

BP神经网络实现简单的异或二分类器,没有任何工具包,单隐层,2个隐层神经元。没有构建神经网络类,只有神经元结构体。
cpp
发布资源于 1 年前

差分进化算法与模式搜索法配合求函数最小值

用四次多项式拟合反正切函数,采用差分进化算法与模式搜索法配合求四次多项式的系数,使其在多个离散点上与被拟合的反正切函数误差最小。
cpp
发布资源于 1 年前

mpu6050加速度计六面校准MATLAB程序

包含主文件caliberate.m,代价函数Cost_Function.m和模式搜索函数Pattern_Search.m,思路是用最优化方法使三轴加速度计的测量值与实际值的误差最小。
rar
发布资源于 1 年前

C语言最小二乘曲面拟合

北航数值分析第三次大作业,使用普通的多项式方法和正交基函数方法。求解非线性方程组使用梯度下降法,与曲面拟合完全独立。
cpp
发布资源于 1 年前

幂法求矩阵特征值与条件数C语言

北航数值分析第一次大作业,用幂法和反幂法求矩阵的特征值进而求出2范数条件数。上下边带压缩以提高运行速度,计算完所有矩阵的条件数耗时约12秒
cpp
发布资源于 1 年前

c++双人贪吃蛇小游戏

回合制游戏,双方轮流按键控制蛇的移动试图卡死对方并避免被对方卡死,双方同时按可加速,取消意外碰撞,只有卡死才能判负。使用EGE图形库xege.org。游戏演示:https://www.bilibili.com/video/BV1C7411e78w
cpp
发布资源于 1 年前

QR分解求矩阵特征值和特征向量

颜庆津版数值分析编程作业,C语言(少量C++语法)实现矩阵的QR分解法迭代求矩阵的全部复数格式特征值,先对矩阵进行拟上三角化再迭代,迭代求出全部特征值后使用列主元素高斯消元法求出所有实特征值对应的特征向量。
cpp
发布资源于 2 年前

MATLAB实现差分进化算法示例

用MATLAB程序实现差分进化算法,程序包含5个文件,分别为主程序、初始化种群、适应度函数(选择)、交叉、变异。程序示例为设计一阶控制器使离散传递函数(z-1)(z+0.3)/z(z-2)(z-0.5)稳定。
rar
发布资源于 2 年前

C++二叉堆实现A*算法及方向优化

由两部分组成,my_map.cpp用OpenCV实现读取地图等图像处理操作,main.cpp实现A*算法。二叉堆为类,格子为结构体。生成结果后进行优化,使原本只能走8个方向的结果优化为任意角度和方向,也就是真正的全局最短路径。
rar
发布资源于 2 年前

C++实现8方向A*算法

由两部分组成,my_map.cpp用OpenCV实现读取地图等图像处理操作,main.cpp实现A*算法,经测试500*500的有复杂障碍物的地图一般不超过10秒即可跑完
rar
发布资源于 2 年前

MPU6050卡尔曼滤波解算姿态

由陀螺仪和加速度计解算欧拉角,自己根据Steven M.Kay的《统计信号处理基础》给出的公式编写的程序,矢量状态-标量观测。除卡尔曼滤波外还有陀螺仪和加速度计的数据校准程序。
rar
发布资源于 3 年前

MPU6050用卡尔曼滤波解算姿态

由陀螺仪和加速度计解算欧拉角,自己根据Steven M.Kay的《统计信号处理基础》给出的公式编写的程序,矢量状态-标量观测。除卡尔曼滤波外还有陀螺仪和加速度计的数据校准程序。
rar
发布资源于 3 年前

QPSK调制与解调的simulink仿真

用simulink搭出QPSK调制与解调的框图,在m文件中设置码元数量、载波频率、采样频率等参数,生成基带波形、调制波形、解调波形、基带和调制信号的功率谱密度、星座图等。
rar
发布资源于 3 年前

ADI参考电路合集 (第2册)

ADI参考电路的设计通常用作独立的解决方案,或者用于构建更为复杂的电路和子系统。ADI的应用专家构建并执行功能与性能测试,提供: 全面的文档 完整的设计和集成文件 经工厂测试的评估硬件
pdf
发布资源于 4 年前