c/c++
文章平均质量分 96
祥瑞Coding
机器学习,计算机视觉
展开
-
c++基础知识汇总(五)基本类型|内存分配|全局变量|多线程|形参实参
c++基本的数据类型 ? int在32位占多少? 变量声明和定义,内存分配时有啥区别? C的内存分配策略 局部变量全局变量可以重名吗,如何在局部使用全局变量目录一、c++基本的数据类型1.1 基本类型1.2 变量声明与定义区别二、c++内存分配策略2.1 数据结构中2.2 操作系统中2.3 举例三、全局变量3.1 局部与全局3.2 全局变量的引用...原创 2019-09-24 12:11:28 · 420 阅读 · 0 评论 -
2018.5-2019.1基于FPGA平台的目标检测网络实现
2018.5 - 2019.1 基于FPGA平台的目标检测网络实现,将目标检测模型实现为c++代码,成功通过HLS工具部署于FPGA平台上,实现公交摄像头画面中人头的检测。目录一、项目背景1.1 公司背景1.2 应用背景1.3 技术路线二、python端2.1 MTCNN与训练过程2.2 mAP的测试2.3 网络结构的更改2.4 输...原创 2019-08-05 19:36:47 · 6143 阅读 · 3 评论 -
c++基础知识汇总(二)类型转换|时间| vector | size |随机数| 最大最小数范围
一些编程过程中需要搞明白的基础问题目录一、强制类型转换1.1 四种强制类型转换关键字const_cast用来移除const或volatilestatic_cast------运算符完成相关类型之间的转换reinterpret_cast------处理互不相关类型之间的转换dynamic_cast------处理基类型到派生类型的转换二、测试与时间相关2.1 sl...原创 2019-07-23 17:05:25 · 379 阅读 · 2 评论 -
内部排序算法归纳(算法原理|代码)(开发必会)
内部排序在数据结构中较为重要,并且开发中经常需要用到,因此归纳相应原理。目录一、基础1.1 定义1.2 分类二、插入排序与希尔排序2.1 插入排序代码2.2 希尔排序代码三、快速排序算法3.1 原理及过程3.2 代码四、选择排序4.1 简单选择排序稳定性代码4.2 树形选择排序(锦标赛排序)五、堆排序5.1 大顶堆与小顶堆...原创 2019-07-08 17:46:50 · 1066 阅读 · 0 评论 -
c++实际应用编程汇总(一)堆与栈|位操作
目录一、数值的次方1.1 python次方1.2 c++次方二、堆与栈定义与概念数据结构中操作系统中2.1 两个栈当作队列c++两个栈当成队列python两个栈当成队列2.2 带有最小值的栈c++带有最小值的栈python带有最小值的栈2.3 判断是否栈的压入弹出c++栈的压入弹出三、位操作3.1 移位与位与c++的位操作...原创 2019-07-09 16:19:12 · 545 阅读 · 0 评论 -
c++基础知识汇总(一)ASICII码|存储|malloc与new|虚函数|类|静态变量|强制类型转换
背景 : 准备秋招笔试。发现算法岗笔试依然会有不少c和数据结构的题,这些题必须好好准备。不然笔试过不了。目录一、ASIC II 码二、存储2.1 浮点数的存储2.2 结构体struct存储2.3 sizeof三、malloc| free| delete3.1 内存相关3.2 内存相关四、虚函数|类|父类4.1 内联4.2 虚函数4.3 虚函|内联...原创 2019-06-03 14:20:54 · 868 阅读 · 0 评论 -
c++与python基础编程算法汇总|数组|字符串|链表|递归
目录0、做题技巧总结0.1 c++0.2 python一、数组1.1 判断数组整数存在整数存在c++整数存在python1.2 旋转数组最小数字python旋转数组最小数字c++旋转数组最小数字1.3 调整数组顺序c++数组奇数位于偶数前1.4 数组中出现超过一半的数c++数组中出现超过一半的数1.5 数字在排序数组中出现的次数1.6...原创 2019-06-08 20:43:38 · 653 阅读 · 0 评论 -
非极大值抑制(Non-Maximum Suppression,NMS)算法与c和python代码详解
背景:非极大值抑制算法(Non-maximum suppression, NMS)的本质是搜索局部极大值,抑制非极大值元素。在目标检测之中用到非常多。目的:搞懂此算法原理且看懂代码。目录一、算法解析1.1 算法概览1.2 算法过程二、c代码解析2.1 输入参量2.2 按置信概率排序sort函数2.3 IOU的确定string.compare函数vec...原创 2019-01-16 08:38:26 · 4202 阅读 · 4 评论 -
卷积函数的FPGA实现(九)WBRAM的重新实现
背景:实测IPcore在FPGA上运行时,错误语句集中于get_9_weights_to_buffer之中,极有可能是WBRAM尺寸的设定出现了问题。目的:找出WBRAM尺寸设定的问题,更改代码。前期工作:ZynqNet解析(七)实现于BRAM上的Cache https://blog.csdn.net/weixin_36474809/article/details/83860624...原创 2019-01-09 13:22:49 · 879 阅读 · 1 评论 -
c++编写神经网络(二)MTCNN的程序主程序
背景:我们得出了MTCNN的内存调用,内存调用是开辟了一系列的存储空间。目的:固定相应的存储的大小,编写主程序。目录一、MTCNN内存占用表1.1 权重尺寸6.2 feature大小二、程序思路一、MTCNN内存占用表1.1 权重尺寸 Pnet weight layer name weight data byte weig...原创 2019-01-17 11:20:49 · 574 阅读 · 0 评论 -
卷积函数的FPGA实现(三)加入HLS预编译指令
背景:我们编写了卷积操作的IPcore,并且在c代码端模拟通过,现在我们需要实现加入HLS的预编译指令,然后将其实现为硬件结构。目的:加入HLS预编译指令。相关文章:HLS的预编译指令优化到硬件的知识: FPGA基础知识(十)HLS针对循环的操作 https://blog.csdn.net/weixin_36474809/article/details/81479551 FPGA基...原创 2018-11-28 10:45:17 · 2281 阅读 · 0 评论 -
c++动态规划类算法编程汇总(一)背包问题(可重复|不可重复|最小)|回溯法
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,利用各阶...原创 2019-08-02 23:24:26 · 1222 阅读 · 0 评论 -
二叉树原理及编程详解(一)完全二叉树|堆排序|遍历|重建
目录一、二叉树基础概念1.1 基础概念:1.2 二叉树的性质二、二叉树的遍历2.1 三种遍历方法2.2 二叉树的构建2.3 重建方法及解析2.4 重建二叉树的代码实现c++重建二叉树python重建二叉树三、二叉树编程汇总3.1 树的子结构c++树的子结构3.2 镜像二叉树c++镜像二叉树3.3 按层打印二叉树c++按层打印二叉树...原创 2019-07-27 17:02:07 · 1543 阅读 · 0 评论 -
c++回溯法编程汇总
回溯算法的定义:回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。 递归函数的开头写好中止条件,或者跳出条件,满足条件才将当前结果加入总结果中,或者不满足让函数return,防止重复遍历 已经经过的地点不在经过(已经搜索过的解空间不再重复搜索) 遍历过当前节点后,为了回溯到上一步,要去掉...原创 2019-09-10 21:39:53 · 6285 阅读 · 0 评论 -
c++动态规划类算法编程汇总(四)集合的子集|最长子序列(矩阵)的和(积) | 最大子矩阵
目录一、集合的子集合1.1 回溯法思路1.2 回溯法代码及解析1.3 其他人思路及代码供参考1.4 分治法(动态规划)1.5 位运算法实现穷举二、连续子数组的最大和2.1 类似股票最大值2.2 推算方法2.3 动态规划方法三、最大子矩阵和3.1 题干3.2 错误的积分图的方法3.3 在连续子数组基础上更改四、直方图中面积最大的矩形4....原创 2019-09-07 23:47:59 · 1172 阅读 · 0 评论 -
c++基础知识汇总(三)计算机与编译原理 | static与const | 内联与虚函数 | sizeof
目录一、CPU的总线1.1 32位与64位1.2 总线类型1.3 32与64下的内存二、static与const2.1 什么是static?2.2 const2.3 指针与const的关系四、虚函数|类|父类4.1 内联4.2 虚函数4.3 虚函|内联4.4 静态函数4.5 几种存储方式五、sizeof(int)在什么过程中出结果5....原创 2019-09-04 11:39:52 · 468 阅读 · 0 评论 -
c++动态规划类算法编程汇总(三)最长递增子序列|旅行家问题|拼为最小的数|丑数
目录一、数字拼接为最小的数1.1 string的比大小1.2 直接实现1.3 封装到类中二、丑数2.1 直观做法2.2 错误代码2.3正确代码2.4 错误代码及其原因查找三、最长上升子序列3.1 题意及分析3.2 代码及解析四、旅行家问题4.1 题目描述4.2 解法一、贪心算法4.3 全排列解法一、数字拼接为最小的数https...原创 2019-09-04 22:18:24 · 616 阅读 · 0 评论 -
c++链表问题汇总(代码及解析)
目录一、链表与指针1.1 单向双向表1.2 数组指针1.3 链表的合并二、链表应用汇总2.1 链表中的值倒序2.2 链表的倒数第k个节点2.3 反转链表2.4 链表的公共节点2.5 链表环的入口节点三、复杂链表的复制3.1 题干3.2 思路及注意事项3.3 正确答案3.4 错误代码找错四、二叉树转为双向链表相应oj链接:htt...原创 2019-09-01 19:53:56 · 1773 阅读 · 0 评论 -
c++策略类O(n)编程问题汇总(扑克的顺子|约瑟夫环|整数1出现的次数|股票最大利润)
可参考内容:c++动态规划类算法编程汇总(一)背包问题|回溯法 c++动态规划类算法编程汇总(二)全排列| O(n)排序 | manacher法 c++策略类O(n)编程问题汇总(扑克的顺子|约瑟夫环|整数1出现的次数|股票最大利润) 目录一、扑克牌的顺子1.1 题干1.2 解法二、约瑟夫环2.1 题干2.2 解法2.3 找出映射规律三、股票的...原创 2019-09-02 17:38:12 · 501 阅读 · 0 评论 -
二叉树原理及编程详解(二)红黑树|二叉搜索树
目录一、红黑树1.1 定义1.2 性质1.3 基本操作左旋右旋变色1.4 操作查找插入直接插入插入后需要变形与递归1.5 一个插入实例二、二叉搜索树2.1 定义与性质2.2 判断二叉搜索树三、两道编程题及思路3.1 是排序二叉树3.2 带有指向父节点的指针3.3 没有父指针一、红黑树1.1 定义https:...原创 2019-10-10 19:43:25 · 335 阅读 · 0 评论 -
c++动态规划类算法编程汇总(二)全排列| O(n)排序 | manacher法 |滑窗|最长回文串
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,利用各阶...原创 2019-09-01 23:35:49 · 942 阅读 · 0 评论 -
c++实际应用编程汇总(二)|字符串|数组|向量|输入输出
目录一、一串值的缩约1.1 会话列表的缩约解法二、进制中的分组数答案三、最长的N串四、字符串三道5.1 字符串的匹配5.2 频率从大到小输出字符5.3 substr函数5.4 翻转单词顺序五、输入输出5.1水仙花数5.2 开根号数列六、大字符串相乘七、两道编过的题及思路7.1 排序二叉树的种数7.2 不用除号/的除法一、一...原创 2019-08-16 15:55:27 · 515 阅读 · 7 评论 -
c++基础知识汇总(四) STL容器 | 类初始化| auto变量
目录一、set集合1.1 使用1.2 插入与遍历1.3 删除1.4 查找1.5 运用及结果二、list2.1 常用插入与删除三、类的初始化3.1 看程序说结果3.2 类初始化顺序四、auto变量4.1 C98中的auto4.2 C++11的auto4.3 应用实例4.4 auto注意事项4.5 个人应用一、set集合1.1...原创 2019-09-09 15:23:22 · 1012 阅读 · 0 评论 -
卷积函数的FPGA实现(二)卷积的相乘累加单元的实现
背景:已经实现了卷积操作的权重与数据从DRAM到BRAM上软件的仿真。现在需要实现处理单元的实现。目的:编写卷积IPcore的处理单元。目录一、循环嵌套及子函数的顺序二、processAll_channelOut2.1 函数功能2.2 主程序之中的嵌套三、processInputChannel3.1 函数的实现3.2 程序之中嵌套的位置一、循环嵌套及子函数的...原创 2018-11-27 17:34:33 · 5339 阅读 · 1 评论 -
ZynqNet解析(七)实现于BRAM上的Cache
背景:我们需要仿照ZynqNet的模式构造卷积的IPcore用于FPGA的优化。目的:搞懂zynqNet的cache的实现。相关内容:ZynqNet解析(六)内存的实现 https://blog.csdn.net/weixin_36474809/article/details/83409853MTCNN(十)构建卷积IPcore https://blog.csdn.net/weix...原创 2018-11-08 14:59:27 · 2632 阅读 · 0 评论 -
卷积函数的FPGA实现(一)编写卷积IPcore的BRAM实现
背景:我们将MTCNN的卷积改为了zynqNet需要的嵌套的for循环形式,并且相对看懂了相应的zyqnNet的c代码,现在我们可以直接将卷积模块单独拆分出来构建一个IPcore。目的:构建卷积的IPcoreZynqNet解析(四)FPGA端程序解析 https://blog.csdn.net/weixin_36474809/article/details/82683399ZynqNe...原创 2018-11-05 09:14:33 · 2606 阅读 · 0 评论 -
常用Linux指令汇总(显卡|读写|编译|进程|用户|挂载)
目的:汇总linux指令,以便查阅和使用。如何查看显卡情况?如何查看服务器上所有的端口号?目录快捷键1. 显卡相关1.1 nvidia-smi1.2 运行程序时指定显卡1.3 端口号与PID号查询2. 目录与读写相关2.1 cd、ls、mkdir、pwd指令2.2 显示相应挂载信息2.3 拷贝 cp指令2.4 mount 指令 挂载...原创 2018-09-10 14:27:34 · 1068 阅读 · 1 评论 -
YOLOv3:Darknet代码解析(六)简化的程序与卷积拆分
背景:之前代码过多无用代码,我们只需要神经网络的前馈运算的代码。卷积核需要不用gemm的方式而用更简单的卷积来运算。目的:读懂简化版的yolo2_light代码,并将其中卷积改为9个并行的基本单元。代码地址: https://github.com/AlexeyAB/yolo2_light相关文章:YOLOv3:Darknet代码解析(一)安装DarknetYOLOv3:Dark...原创 2018-08-16 19:06:24 · 7612 阅读 · 3 评论 -
YOLOv3:Darknet代码解析(五)权重与特征存储
背景:我们去掉了两层卷积层,将网络结构变小。目的:找到网络的权重如何读取与存储,找到网络中与卷积有关的运算。相关文章:YOLOv3:Darknet代码解析(一)安装DarknetYOLOv3:Darknet代码解析(二)代码初步YOLOv3:Darknet代码解析(三)卷积操作YOLOv3:Darknet代码解析(四)结构更改与训练YOLOv3:Darknet代码解析(...原创 2018-08-01 20:00:31 · 14698 阅读 · 15 评论 -
YOLOv3:Darknet代码解析(四)结构更改与训练
背景:我们需要降低YOLOv2-tiny的参数量和存储量,以便硬件实现。目的:更改YOLO结构,去掉后面的两层卷积层,降低参数量和运算量。相关文章:YOLOv3:Darknet代码解析(一)安装DarknetYOLOv3:Darknet代码解析(二)代码初步YOLOv3:Darknet代码解析(三)卷积操作YOLOv3:Darknet代码解析(四)结构更改与训练YOLO...原创 2018-08-01 14:19:53 · 27811 阅读 · 77 评论 -
YOLOv3:Darknet代码解析(三)卷积操作
目的:读懂YOLO_v3中的卷积操作以及相关语句相关:YOLOv3:Darknet代码解析(六)简化的程序与卷积拆分 https://blog.csdn.net/weixin_36474809/article/details/81739771相关文章:YOLOv3:Darknet代码解析(一)安装DarknetYOLOv3:Darknet代码解析(二)代码初步YOLOv3:Da...原创 2018-07-31 16:05:44 · 10530 阅读 · 3 评论 -
FPGA实践教程(六)AXI-Lite实现PS与PL通信
背景:PS与PL的通信方式有AXI4,AXI-Lite,AXI-Stream。之前实现的为AXI-Stream s(side channel),并且编译环境为linux编译环境。现在改为基础的AXI-Lite的通信方式,编译环境变为SDK环境。目的:实现AXI-Lite的通信。AXI-lite的实现过程中,设计流程中三点至关重要,一是编写什么样的c程序并如何用HLS综合,二是系统如何搭建,...原创 2018-07-27 10:19:24 · 7166 阅读 · 1 评论 -
FPGA片上PS在SDK编译环境下调用DMA
背景:我们之前通过linux编译模式下调用DMA,testBench中运用的指令为fd = open("/dev/axi-dma1", O_RDWR); 但是在SDK的编译环境下,系统搭建完成后就会出现Open axi-dma1 failed!目的:查找SDK中的例程找到调用DMA的方法。vivado中系统为:地址信息如下:SDK中外设程序运行结果:官方调试程序...原创 2018-07-13 11:32:06 · 1587 阅读 · 1 评论 -
ARM用MIG调用DDR3的c程序解析
背景:用ARM(PS:zynq7 processing system)控制Mig调用了DDR3,我们希望用IPcore控制Mig调用DDR3目录1 platform.h与platform.h1.1 d-cache与i-cache2 . memory_config.h与memory_config_g.c3 主程序4. DDR3的调用FPGA实践教程(五)调用DDR目...原创 2018-07-12 16:11:34 · 3812 阅读 · 1 评论 -
PCANet的c语言代码解析
2017.5.25任务:解析PCANet的c语言代码;相关知识多为链接形式,点开即可看到。目录相关知识:二、OpenCV的MAT(官方说明)三、关于using namespace3.1 #include3.2 using namespace std3.3 cin和cout函数四、细碎的函数4.1 sprintf(filename, ...原创 2018-06-28 17:16:56 · 850 阅读 · 2 评论 -
YOLOv3:Darknet代码解析(二)代码初步
背景:我们在linux上安装了DarkNet。目的:初步解读darknet源码相关文章:YOLOv3:Darknet代码解析(一)安装DarknetYOLOv3:Darknet代码解析(二)代码初步YOLOv3:Darknet代码解析(三)卷积操作YOLOv3:Darknet代码解析(四)结构更改与训练YOLOv3:Darknet代码解析(五)权重与特征存储YOLO...原创 2018-07-10 09:29:17 · 12160 阅读 · 1 评论 -
DMA在linux下PS端c语言相关内容
背景:片上单片机与PC通过UART相连并且可以通过PC对片上单片机进行相应的指令操作。片上单片机可以运行相应编译好的c程序,控制相应的IPcore从而用FPGA上的IPcore进行相应的运算。相关c源码通过编译可以变为可执行文件拷入u盘,然后片上单片机可以通过挂载u盘执行可执行文件。目的:读懂程序。程序的目的为:单片机运行简单的卷积操作,单片机控制的IPcore也运行卷积操作,...原创 2018-06-24 20:03:15 · 906 阅读 · 1 评论 -
ZynqNet解析(三)CPU端程序解析
背景:ZynqNet能在xilinx的FPGA上实现deep compression的网络,目的:读懂ZynqNetCPU端的代码。源码地址:https://github.com/dgschwend/zynqnet目录cpu_top程序包括1 CPU端创建网络1.1 储存网络结构的结构体1.2 创建网络的函数1.3 输出每层信息1.4 构造函数2 FP...原创 2018-09-13 08:55:44 · 1453 阅读 · 3 评论 -
ZynqNet解析(四)FPGA端程序解析
背景:ZynqNet能在xilinx的FPGA上实现deep compression的网络,FPGA端程序运用传入每层数据运算后存在DRAM上。目的:读懂ZynqNet的FPGA端的代码。源码地址:https://github.com/dgschwend/zynqnet目录程序包括:1. 读取每层信息1.1 给所有block设置layer信息1.2 加载权重预加载图像...原创 2018-09-13 14:24:48 · 2020 阅读 · 0 评论 -
MTCNN(八)openCV依赖库
背景:已经将openBLAS依赖库去除,我们需要将MTCNN编译到arm单片机上运行,依然依赖OpenCV库。目的:解决openCV库的问题。目录openCV依赖情况:一、根据备选框进行check1.1 输出人头的个数1.2 析构函数二、图像的读取2.1 openCV中关于图像的读取2.2 写入图像数据进入bin文件2.1.1 原始写入程序2.1.2 线...原创 2018-10-24 14:28:01 · 2772 阅读 · 0 评论