- 博客(24)
- 问答 (1)
- 收藏
- 关注
原创 关于工作的感慨
昨天的无法改变,既然已经发生,再多的后悔也无法改变 明天的还未到来,既然都要面对,再多的恐惧也无济于事 能做的只有珍惜今天 人的焦虑啊,总是来自于想得太多,做的太少 让我们专注于眼下,学习扩展已有的知识体系 ...
2022-01-22 04:21:37
614
原创 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
4646
原创 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
3978
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
4729
原创 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
5781
原创 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
2275
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
2035
原创 DarkNet源码解析——Makefile
本文在解析DarkNet的同时通过注释的方式对其中用到的Makefile相关语法进行讲解。 GPU=0 #定义GPU CUDNN=0#定义是否使用CUDNN加速,cuDNN是用于深度神经网络的GPU加速库 OPENCV=1#是否使用OPENCV库, OPENMP=1#用于共享内存并行系统的多处理器程序设计的一套编译处理反感 DEBUG=1#是否能用于调试,即是否gcc -g ARCH= -gencode arch=compute_30,code=sm_30 \ -gencode arch=
2021-08-19 17:39:47
823
1
原创 Pycharm 连接Linux远程服务器
Pycharm 连接Linux远程服务器 最近笔者参加阿里天池比赛,因此需要高性能的硬件资源,故不得不租用GPU。(现在GPU资源真贵) 本文主要介绍怎么利用Pycharm连接服务器,并运行调试代码。其中也有一些自己遇到的坑。 花了钱之后,服务器提供者会给你相关信息,如IP网址,端口号,账户名,密码等信息。这些在配置Pycharm时都会用到。注意,如果你想长期使用该平台的服务器,可以问问客服是否有长期存储资源,以免之后使用时还需要重新上传资源。 首先,Pycharm分为社区版和专业版,仅有专业版才可
2021-03-16 11:19:22
744
原创 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
1659
原创 GhostNet解析以及Tensorflow2中实现Ghost模块
GhostNet解析以及Tensorflow2中实现Ghost模块 笔者从事嵌入式图像开发相关工作,希望能在ZYNQ上实现目标检测任务,故把更多的注意力放在轻量级网络上。 现阶段较为流行的轻量级网络有:MobileNetv1,v2,v3,ShuffleNet,EfficientNet和本文介绍的GhostNet。可能因为GhostNet是华为的成就或单纯的喜欢“Ghost"这个名字,笔者首先介绍GhostNet,其余网络结构将在后续文章中介绍。 GhostNet源于华为诺亚方舟实验室,可在同样的精度下
2021-03-04 15:42:14
1913
1
原创 YOLOV4用到的一些tricks以及代码实现(3)——Label_smoothing
YOLOV4用到的一些tricks以及代码实现(3)——Label_smoothing Lable Smoothing是分类问题中错误标注的一种解决方法。 对于分类问题,特别是多分类问题,常常把向量转换成one-hot-vector(独热向量) 理论而言,如果标签为1时,模型应该尽力去获得最接近的output,如0.999。而这样真的好吗?如果某些标签错误,那模型拟合的目标反而离我们需要的结果越来越远。因此,使用label_smoothing可以很好的缓解这样的问题。 个人觉得,该原理和focal L
2021-03-03 10:16:22
960
原创 YOLOV4中anchor与box之间的关系以及代码实现
YOLOV4中anchor与预测框之间的关系以及代码实现 有些同学已经学习目标检测有了一段时间,对于Fast系列和yolo系列的目标检测算法都如数家珍,包括每次改进升级用到了哪些tricks或者新的改进。现在也出现了很多anchor-free的算法,摒弃了anchor的使用。 但是,作者想说的是,我们是否真正的把anchor与预测框之间的关系搞得很明白,是否阅读过每一行anchor相关的代码?笔者近阶段写了一系列的博文均以代码为核心,分析算法思想,希望可以帮助大家将理论知识应用于实际而不只是读了多少篇论
2021-03-03 09:20:28
3260
原创 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
4347
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
869
1
原创 基于Tensorflow2的YOLOV4 网络结构及代码解析(4)——Loss和input
基于Tensorflow2的YOLOV4 网络结构及代码解析(4)——Loss和input 本部分介绍yolov4源码中Train中内容,包括Input和Loss Input: Loss:
2021-02-27 22:51:24
834
原创 C语言实现线性回归及梯度下降法
C语言实现线性回归 本篇介绍使用C语言实现线性回归以及利用梯度下降方法求最优解(包括单个梯度下降,批量梯度下降以及随机梯度下降)。 本篇博文更倾向于实际代码实现,其中算法原理可查看其他博客(网上太多了,懒得复制) 线性回归的本质是用一条直线拟合,最简单的是在二维向量中,复杂点的是在多维向量中。 理论公式为:公式中θ和x是向量,n是样本数。 损失函数公式:。这个损失函数是“最小二乘法损失函数”。针对小规模数据时可使用正则方程直接得出最小值,而本篇博文介绍的梯度下降法求最小值。 梯度下降公式:...
2021-02-25 16:37:32
2968
原创 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
618
原创 C语言实现膨胀,腐蚀,中值滤波以及均值滤波
C语言实现膨胀,腐蚀,中值滤波以及均值滤波 笔者从事嵌入式图像处理工作,因此不得不使用C语言实现大量图像算法。 膨胀,腐蚀,中值滤波使用C语言实现的基本原理基本相同,唯一需要注意的是需要开辟与原图相同的临时空间。 具体代码如下: 1.膨胀 //src原图大小为Wid*Hei void 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
2122
原创 基于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
1755
3
原创 基于Tensorflow2的YOLOV4 网络结构及代码解析(2)——NECK部分
笔者以tensorflow2代码作为基础,解析yolovV4的网络结构。 继上篇《基于Tensorflow2的YOLOV4 网络结构及代码解析(1)——backbone网络结构》博文后继续解析yoloV4的NECK和YoloHead 本篇博客主要介绍三个方面: 1.SPPNET:SPP结构使用不同尺度的maxpooling后进行特征图堆叠 2.PANet:模型的neck 3.YOLOhead:对提取后的特征进行解码 feat1, feat2, feat3 = darknet_body(inpu
2021-02-21 20:25:52
1292
2
原创 基于Tensorflow2的YOLOV4 网络结构及代码解析(1)——backbone网络结构
笔者以tensorflow2代码作为基础,解析yolovV4的网络结构。 主要从以下几个部分剖析yolov4: 1.YOLOV4创新点和backbone网络结构 2.YOLOV4的NECK和YoloHead 3.YOLOV4的Loss和Input 在剖析的同时,会对代码细节进行详细解释。 Yolov4论文地址:https://arxiv.org/pdf/2004.10934.pdf 创新点: backbone网络结构: yolov4以CSPDarkNet53作为backbone,替换.
2021-02-20 14:43:42
2250
原创 FPGA 基础知识——单位之间的转换
刚刚开始学习FPGA,对于常用时间做如下总结: 1s(秒)=1000ms(毫秒) 1ms(毫秒)=1000us(微妙) 1us(微妙)=1000ns(纳秒)——常用 1ns(纳秒)=1000ps(皮秒) 1KHZ(千赫)=1000HZ(赫兹) 1MHZ(兆赫)=1000KHZ(千赫)——常用 1GHZ(吉赫)=1000MHZ(兆赫) ...
2020-04-12 09:54:21
1745
原创 关于vivado2019 jtag连接板子失败问题
环境:win10,vivado2019.2,黑金zynq7010 1.安装<vivado path>\data\xicom\cable_drivers\nt64\digilent\install_digilent.exe 2.运行<vivado path>\data\xicom\cable_drivers\nt64\dlc10_win10.cmd 3.重新连接。 ...
2020-03-31 06:43:36
3744
空空如也
购买相机模组后需要自己进行标定还是厂商已经标定好了?
2022-04-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅