自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 问答 (1)
  • 收藏
  • 关注

原创 关于工作的感慨

昨天的无法改变,既然已经发生,再多的后悔也无法改变明天的还未到来,既然都要面对,再多的恐惧也无济于事能做的只有珍惜今天人的焦虑啊,总是来自于想得太多,做的太少让我们专注于眼下,学习扩展已有的知识体系...

2022-01-22 04:21:37 513

原创 C语言实现最小二乘法

void leastSquareLinearFit( imginfo *img,uchar *res,int *x ,int *y,int n){int height=img->height;int width=img->width;printf("height=%d ,width=%d \r\n",height,width);int i,j;memset(res,0,sizeof(uchar)*1000*1000);int l=0,m=0;double a=0,b=0;for.

2022-01-19 16:41:09 4428

原创 C语言实现harris角点检测

纯C语言实现harris角点检测,代码忽略高斯滤波部分int sobel_kernel_x[9]={-1,0,1,-2,0,2,-1,0,1};int sobel_kernel_y[9]={1,2,1,0,0,0,-1,-2,-1};extern uchar sobel_res_x[1000*1000];extern uchar sobel_res_y[1000*1000];uchar xx[1000*1000];uchar yy[1000*1000];uchar xy[1000

2022-01-19 10:25:33 3741 2

原创 C语言实现双线性插值

typedef struct imginfo{ int width; int height; unsigned char* img;} imginfo;void interpolation( imginfo *img,unsigned char *res,int res_width,int res_height){ int i,j; unsigned char arr[img->height*img->width]; memcpy(ar.

2022-01-13 11:20:29 4314

原创 C语言实现图像旋转

typedef struct imginfo{ int width; int height; unsigned char* img;} imginfo;int imrotate(const imginfo img,unsigned char *res,int Angle){ int i,j,k; unsigned char arr[img.height*img.width]; memcpy(arr,img.img,sizeof(arr)); .

2022-01-13 11:19:15 5414

原创 C语言实现图像移动

理论部分不做阐述,直接看代码typedef struct imginfo{ int width; int height; unsigned char* img;} imginfo;int imshift(const imginfo img,unsigned char *res,int x_offset,int y_offset){ int i,j; unsigned char arr[img.height*img.width]; memcpy(a

2022-01-13 11:17:53 1976 1

原创 ZYNQ_MP启动过程分析

网上看了很多关于zynq的相关文章,大多基于zynq-7000系列写的。本文参考相关文档尽量清楚的阐述zynq_mp的启动过程。zynq_mp是由多核组成,与7000系列有所不同的是,增加了RPU(APU核数根据不同系列也有所不同,笔者使用2个APU和2个RPU)。根据文档,启动过程分为前置配置,配置以及后置配置(Pre-configuration Stage,Configuration Stage,Post-Configuration):Pre-configuration Stage:由PUM

2021-10-25 15:58:52 1633

原创 DarkNet源码解析——Makefile

本文在解析DarkNet的同时通过注释的方式对其中用到的Makefile相关语法进行讲解。GPU=0 #定义GPUCUDNN=0#定义是否使用CUDNN加速,cuDNN是用于深度神经网络的GPU加速库OPENCV=1#是否使用OPENCV库,OPENMP=1#用于共享内存并行系统的多处理器程序设计的一套编译处理反感DEBUG=1#是否能用于调试,即是否gcc -gARCH= -gencode arch=compute_30,code=sm_30 \ -gencode arch=

2021-08-19 17:39:47 634 1

原创 Pycharm 连接Linux远程服务器

Pycharm 连接Linux远程服务器最近笔者参加阿里天池比赛,因此需要高性能的硬件资源,故不得不租用GPU。(现在GPU资源真贵)本文主要介绍怎么利用Pycharm连接服务器,并运行调试代码。其中也有一些自己遇到的坑。花了钱之后,服务器提供者会给你相关信息,如IP网址,端口号,账户名,密码等信息。这些在配置Pycharm时都会用到。注意,如果你想长期使用该平台的服务器,可以问问客服是否有长期存储资源,以免之后使用时还需要重新上传资源。首先,Pycharm分为社区版和专业版,仅有专业版才可

2021-03-16 11:19:22 632

原创 Tensorflow2 图像预处理部分详解

Tensorflow2 图像预处理部分详解本文基于Tensorflow2官方文档(https://tensorflow.google.cn/api_docs/python/tf/keras/preprocessing/image)编写并配合相应的测试代码。tensorflow2提供了一系列实时的图像增强方法。TF提供了4个类和14个方法。四个类主要是批量的获取图像数据以及数据增强:DirectoryIterator:能够迭代的从硬盘中读取图片Iterator:基本图片数据迭代器Nu.

2021-03-06 16:52:11 1419

原创 GhostNet解析以及Tensorflow2中实现Ghost模块

GhostNet解析以及Tensorflow2中实现Ghost模块笔者从事嵌入式图像开发相关工作,希望能在ZYNQ上实现目标检测任务,故把更多的注意力放在轻量级网络上。现阶段较为流行的轻量级网络有:MobileNetv1,v2,v3,ShuffleNet,EfficientNet和本文介绍的GhostNet。可能因为GhostNet是华为的成就或单纯的喜欢“Ghost"这个名字,笔者首先介绍GhostNet,其余网络结构将在后续文章中介绍。GhostNet源于华为诺亚方舟实验室,可在同样的精度下

2021-03-04 15:42:14 1541 1

原创 YOLOV4用到的一些tricks以及代码实现(3)——Label_smoothing

YOLOV4用到的一些tricks以及代码实现(3)——Label_smoothingLable Smoothing是分类问题中错误标注的一种解决方法。对于分类问题,特别是多分类问题,常常把向量转换成one-hot-vector(独热向量)理论而言,如果标签为1时,模型应该尽力去获得最接近的output,如0.999。而这样真的好吗?如果某些标签错误,那模型拟合的目标反而离我们需要的结果越来越远。因此,使用label_smoothing可以很好的缓解这样的问题。个人觉得,该原理和focal L

2021-03-03 10:16:22 768

原创 YOLOV4中anchor与box之间的关系以及代码实现

YOLOV4中anchor与预测框之间的关系以及代码实现有些同学已经学习目标检测有了一段时间,对于Fast系列和yolo系列的目标检测算法都如数家珍,包括每次改进升级用到了哪些tricks或者新的改进。现在也出现了很多anchor-free的算法,摒弃了anchor的使用。但是,作者想说的是,我们是否真正的把anchor与预测框之间的关系搞得很明白,是否阅读过每一行anchor相关的代码?笔者近阶段写了一系列的博文均以代码为核心,分析算法思想,希望可以帮助大家将理论知识应用于实际而不只是读了多少篇论

2021-03-03 09:20:28 2894

原创 YOLOV4用到的一些tricks以及代码实现(2)——CIou_Loss

本篇博客介绍用于计算损失函数的CIOU_LOSS算法继上篇介绍yolov4——Mosaic data argumentaion后,接着介绍yolov4中用到的tricks。CIOU_LOSS算法用于目标检测损失函数的计算。在详细介绍CIOU代码之前,有必要介绍一下CIOU的进化序列。本节介绍交叉熵,Focal loss,L1/L2损失函数、IOU Loss、GIOU、DIOU的相关理论以及CIOU的理论与代码实线。交叉熵:作为图像分类问题最为常用的损失函数,通常接在softmax之后

2021-03-02 15:13:33 3921 1

原创 YOLOV4用到的一些tricks以及代码实现(1)——CutMix and Mosaic data augmentation

YOLOV4用掉的一些tricks以及代码实现(1)——CutMix and Mosaic data augmentation之前的几篇博客将YOLOV4整个流程都过了一边,其中把重心放在相关的语法中,从这篇博客开始,我将YOLOV4中提到的一些tricks逐一进行介绍并用代码实现。首先看下论文提到了哪些tricks:Bag of Freebies(BoF)指那些能够提高精度而不增加推断时间的技术。比如数据增广的方法图像几何变换、CutOut、grid mask等,网络正则化的方法DropOut..

2021-03-01 14:27:14 699 1

原创 基于Tensorflow2的YOLOV4 网络结构及代码解析(4)——Loss和input

基于Tensorflow2的YOLOV4 网络结构及代码解析(4)——Loss和input本部分介绍yolov4源码中Train中内容,包括Input和LossInput:Loss:

2021-02-27 22:51:24 674

原创 C语言实现线性回归及梯度下降法

C语言实现线性回归本篇介绍使用C语言实现线性回归以及利用梯度下降方法求最优解(包括单个梯度下降,批量梯度下降以及随机梯度下降)。本篇博文更倾向于实际代码实现,其中算法原理可查看其他博客(网上太多了,懒得复制)线性回归的本质是用一条直线拟合,最简单的是在二维向量中,复杂点的是在多维向量中。理论公式为:公式中θ和x是向量,n是样本数。损失函数公式:。这个损失函数是“最小二乘法损失函数”。针对小规模数据时可使用正则方程直接得出最小值,而本篇博文介绍的梯度下降法求最小值。梯度下降公式:...

2021-02-25 16:37:32 2513

原创 C语言中二维数组使用指针的问题

C语言 二维数组使用指针获取值的问题在嵌入式图像处理的中,很多情况下,更适合用指针获取数组的值,而不是通过数组下标获取。使用指针获取数组值仅需要一次for循环,而利用下标获取二维数组的值时不得不使用两次for循环。获取二维数组的值与获取一维数组值的方法有所不同,若不注意可能导致程序出错,详见代码:#include <stdio.h>int main(){//初始化一维数组int a[6]={1,2,3,4,5,6};//初始化二维数组int b[3][2]={{

2021-02-24 14:11:05 469

原创 C语言实现膨胀,腐蚀,中值滤波以及均值滤波

C语言实现膨胀,腐蚀,中值滤波以及均值滤波笔者从事嵌入式图像处理工作,因此不得不使用C语言实现大量图像算法。膨胀,腐蚀,中值滤波使用C语言实现的基本原理基本相同,唯一需要注意的是需要开辟与原图相同的临时空间。具体代码如下:1.膨胀//src原图大小为Wid*Heivoid DilateFilter(unsigned char* src, int Wid, int Hei){ int i, j, k, l, m; int max=0; l=0; for (i = 0; i

2021-02-23 17:11:38 1851

原创 基于Tensorflow2的YOLOV4 网络结构及代码解析(3)——yolo_head部分

笔者以tensorflow2代码作为基础,解析yolovV4的网络结构。继上篇《基于Tensorflow2的YOLOV4 网络结构及代码解析(2)——NECK部分》博文后继续解析yoloV4的yolohead本篇博客主要介绍两个个方面:1.yolo解码2.非极大值抑制3.门限筛选在进入yolo_head之前,先看一下源码中的参数配置以及一些语法细节,代码如下: if self.eager: self.input_image_shape = I

2021-02-23 16:38:58 1554 3

原创 基于Tensorflow2的YOLOV4 网络结构及代码解析(2)——NECK部分

笔者以tensorflow2代码作为基础,解析yolovV4的网络结构。继上篇《基于Tensorflow2的YOLOV4 网络结构及代码解析(1)——backbone网络结构》博文后继续解析yoloV4的NECK和YoloHead本篇博客主要介绍三个方面:1.SPPNET:SPP结构使用不同尺度的maxpooling后进行特征图堆叠2.PANet:模型的neck3.YOLOhead:对提取后的特征进行解码feat1, feat2, feat3 = darknet_body(inpu

2021-02-21 20:25:52 1059 2

原创 基于Tensorflow2的YOLOV4 网络结构及代码解析(1)——backbone网络结构

笔者以tensorflow2代码作为基础,解析yolovV4的网络结构。主要从以下几个部分剖析yolov4:1.YOLOV4创新点和backbone网络结构2.YOLOV4的NECK和YoloHead3.YOLOV4的Loss和Input在剖析的同时,会对代码细节进行详细解释。Yolov4论文地址:https://arxiv.org/pdf/2004.10934.pdf创新点:backbone网络结构:yolov4以CSPDarkNet53作为backbone,替换.

2021-02-20 14:43:42 2036

原创 FPGA 基础知识——单位之间的转换

刚刚开始学习FPGA,对于常用时间做如下总结:1s(秒)=1000ms(毫秒)1ms(毫秒)=1000us(微妙)1us(微妙)=1000ns(纳秒)——常用1ns(纳秒)=1000ps(皮秒)1KHZ(千赫)=1000HZ(赫兹)1MHZ(兆赫)=1000KHZ(千赫)——常用1GHZ(吉赫)=1000MHZ(兆赫) ...

2020-04-12 09:54:21 1027

原创 关于vivado2019 jtag连接板子失败问题

环境:win10,vivado2019.2,黑金zynq70101.安装<vivado path>\data\xicom\cable_drivers\nt64\digilent\install_digilent.exe2.运行<vivado path>\data\xicom\cable_drivers\nt64\dlc10_win10.cmd3.重新连接。...

2020-03-31 06:43:36 3321

空空如也

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

TA关注的人

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