- 博客(30)
- 资源 (7)
- 收藏
- 关注
原创 二叉树的创建以及基础遍历算法(c++)
一、二叉树的创建1.树结构定义二叉树是树结构的一种特殊结构,每一个节点最多有左孩子和右孩子两个子节点。所以在定义树结构的时候可以定义根节点ID、左右子节点的ID、以及指向左右子节点的指针。定义如下:class TreeNode{public: TreeNode* m_pLeftChild, * m_pRightChild; int m_nRootId; //根节点ID int m_nLeftId; //子孩子节点ID int m_nRightId; //右孩子
2022-05-09 21:19:49
2053
原创 3D骨架(细化)提取算法C++
网上的细化算法大部分都是对2D图像进行提取,对3D图像进行细化代码介绍太少了。目前比较流行的有两个版本。matlat版本Skeleton3D。ITK版本itkBinaryThinningImageFilter3D.h。ITK版本比较麻烦,需要将数据转成ITK的格式,读取很不方便。所以我将ITK版本的细化算法使用C++写了一遍。使用的是VS2019版本,输入的是3维的二进制数据。链接是ThinningAlgo3D。...
2021-10-30 15:47:45
2867
15
原创 (c++)已知空间三维两个点坐标,得到直线方程以及两点之间所有的点,使用VTK进行绘制显示
直线参数方程如果是在二维坐标系下,已知两个点p1(x1, y1), p2(x2, y2), 很容易求得两点之间的斜率,然后使用y = kx + b计算出k,b值得到直线方程。同理在三维空间下仍然可以使用直线参数方程。x = x1 + dx * t,y = y1 + dy * t,z = z1 + dz * t例如:已知p1(x1, y1, z1), p2(x2, y2, z2)个点,可以求得p1p2两个点的方向向量d。d = p2 - p1 = ((x2 - x1), (y2 - y1),..
2021-10-18 13:12:15
7361
3
原创 在windows下安装nnUnet,并制作数据集以及运行(让隔壁奶奶也能学会的教程)
1.前言nnUnet原代码是在Linux下运行,如果现在windows下安装的话,会报各种错误,得改很多的地方,所以可以直接下载nnUnet_windows文件,这是我已经在windows上成功编译的版本,只要安装成功就可以直接运行。该链接中还包含apex安装包以及制作自己数据格式的代码。nnUnet的版本是2021/7月更新的。2.安装虚拟环境与Pytorch最好要安装虚拟环境,否则要是把python环境安装坏了,那就麻烦了。1.在命令行输入一下代码,其中nnUnet是虚拟环境名称,选择的pyt
2021-08-11 21:24:46
14399
88
原创 python实现2D图像线性插值旋转和双线性插值旋转
1. 旋转原理1)坐标平移图像旋转一般都是围绕图像的中心进行旋转,但是图像是一个矩阵,它的原点是在左上角,所以我们得先将坐标平移到中心。如图所示。原中心点为O1,需要平移到O2,平移后的O1坐标相对于O2应为(x1- W/2, -y1+H/2)坐标平移计算方式:设原图中的像素点为[X0,Y0,1] ,图像的宽为W,高为H,则变换后的坐标为[X1,Y1,1],计算公式为:注:本文是在2维图像中旋转,上面坐标中多出的一列其实是没有意义的,但很多博客都写了,那我也跟风了,你也可以去掉。2)旋转角
2020-12-27 16:27:00
3360
6
原创 3D图像线性插值算法实现
3D图像线性插值算法实现三线性插值原理三线性插值原理与双线性插值原理类似,双线性插值是根据周围四个点计算得到新的插值点,三线性插值是对一个立方体中周围8个顶点进行计算。1)首先在x轴上进行插值,根据以下公式分别求出4个边上的点C00,C01,C10,C112)在y轴上进行插值,根据一下公式得到C0和C1点3)最后在z轴上进行插值其中xd, yd,zd是指偏移量,与x,y,z较小的坐标有关。xd = x - |xd|实际上三线性插值等同于两个双线性插值与线性插值的组合。当前这样计算起
2020-12-22 21:05:30
6252
6
原创 python实现2D图像插值算法
图像插值算法有很多一般采用的是最邻近插值和双线性插值。最邻近插值最邻近插值顾名思义就是取图像最近点的值作为新的插入值,话不多说直接上代码def nearest_interpolation(src_img, tar_size): H = src_img.shape[0] #原始图像的高 W = src_img.shape[1] #原始图像的宽 channel= src_img.shape[2] tar_H = H * tar_size[0] #插值后的高
2020-12-19 16:10:36
1436
1
原创 VS配置onnxruntime包
下载onnxruntime包下载地址:https://github.com/microsoft/onnxruntime/releases/tag/v1.3.0 下载后解压即可。打开vs新建项目——>右击点击属性——>C/C++属性,添加解压后的include文件路径,注意配置平台的选择。点击链接器——>附加库目录,添加解压后的lib文件路径。点击输入——>附加依赖项,将onnxruntime.lib添加进去。...
2020-07-14 15:16:43
5709
7
原创 keras模型转换成TensorFlow的模型格式
在工作中需要用到c++调用keras训练的模型,因为keras没有提供c++接口,因此需要先将keras生的.h5模型文件转换成TensorFlow的.pb文件。利用keras训练模型如果已经有keras训练好的模型的话,这一步可以跳过。但是要注意的是,在保存模型的时候使用的是model.save(‘ keras .h5’)进行保存,因为save保存的是模型的结构和权重,如果使用的是model.save_weights('keras.h5’)保存的是模型的权重,后面转换将会出现问题。若果还没有训练
2020-07-10 15:50:03
980
原创 利用TensorBoard可视化网络
首先写一个最简单的TensorFlow程序为例。import tensorflow as tftf.reset_default_graph()logdir='F:/log'input1=tf.constant([1.0,2.0,3.0],name="input1")input2=tf.Variable(tf.random_uniform([3]),name="inout2")output=tf.add_n([input1,input2],name="add")writer=tf.s..
2020-07-07 21:52:05
182
原创 剑指offer编程题持续跟新(c++)
二维数组的查找题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:暴力求解,遍历整个数组,如果查询到目标值就返回true。代码:class Solution {public: bool Find(int target,...
2019-11-25 14:38:21
319
原创 LeetCode C++算法题持续跟新
第一部分 简单算法题题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。解题思路:通过对x数据求余数,将最后一位数字输出到第一位,难点在于考虑数字溢出情况。代码:class Solution {public: int reverse(int x) { int rev = 0; while (x != 0) { ...
2019-11-21 21:33:28
252
原创 计算机视觉/图像算法/深度学习/AI算法岗位面试问题总结
这段时间一直在找工作,经过两个月的面试经验,感觉比我三年学到的东西都多,在这里做一下总结。这四个岗位其实都是相同的,问的问题也都大差不差,主要从传统的图像算法和深度学习进行提问。1.传统图像算法问题图像预处理有哪些方法?图像增强有哪些方法?直方图均衡介绍。膨胀和腐蚀含义?开运算和闭运算先后顺序。传统的边缘检测算子有哪些?Canny算法介绍。如何极大值抑制?(重点必问)hog和ha...
2019-11-07 21:17:38
4495
2
原创 ubuntu16.04+faster_rcnn+voc2007数据集训练
前言之前写过一片博客是在Windows下配置faster_rcnn demo环境 ,如果在Windows上训练数据集会出现很多问题,于是才不得不转入Ubuntu系统,现在发觉Ubuntu系统越来越好使。1.配置caffe环境首先在Ubuntu系统下配置caffe,可以参考这篇博客ubuntu16.04+anaconda2+gpu+caffe安装如果按照上述博客配置好了caffe的话,先不...
2019-07-25 11:22:33
327
原创 ubuntu16.04+cuda9.0+cudnn V7.05+SegNet环境配置及制作数据集与训练测试
1. 前提在配置SegNet网络之前,首先确保你电脑上已经成功配置过caffe框架,因为SegNe对cudnn版本的要求可能与你电脑配置的不一样,如果换成对应版本的话很麻烦,所以在在配置SegNet网络之前,确保你电脑上已经有成功配置了最原始的caffe,如果你电脑还没安装的话,可以参考这篇博客ubuntu16.04+anaconda2+gpu+caffe安装2. 下载代码首先下载SegN...
2019-06-30 16:21:38
1719
1
原创 ubuntu16.04+anaconda2+gpu+caffe安装
1. 安装显卡驱动个人觉得安装显卡驱动是最烦的,所以单独写了博客,参考 Ubuntu16.04系统下装显卡驱动 ,在这就不再叙述。2. 安装相关依赖 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler sudo...
2019-06-22 20:21:13
1226
原创 Ubuntu16.04系统下装显卡驱动
1. 如果Ubuntu系统装过驱动的话,首先要进行卸载,打开终端输入命令sudo apt-get purge nvidia*sudo apt-get install nvidia-319-updates-devnvidia-319根据你电脑显示的显卡修改对应的名称,重启电脑。如果你电脑之前没装过仍和显卡驱动的话,这一步可以忽略。2. 禁用nouveau输入命令sudo gedit /...
2019-06-19 14:57:04
468
原创 win10系统装ubuntu16.04双系统教程与出现的问题总结
前期准备装系统前首先得准备优盘,然后下载ubuntu16.04系统,,然后安装UltraISO软件,制作系统盘,这一步网上有很多链接与教程,在这就不在叙述。装ubuntu系统需要单独分配一个盘出来,如下图所示将F盘删除,不分配磁盘。装ubuntu系统开机按f12,每个电脑可能按键不一样,你得根据你电脑设置进入系统引导界面,选择系统优盘开始装系统根据如下图所示,一直点就行...
2019-06-19 14:08:46
301
原创 windows+TensorFlow/keras+vgg16训练自己的数据集
前提要想在TensorFlow训练vgg16,首先要配置TensorFlow环境,这篇博客介绍如何配置python2.7版本的TensorFlow,在这里就不在叙述了。TensorFlow版本下载代码:VGG16下载数据集17flowers,密码:3nc4如果是训练自己的数据集,可以模仿17flowers数据集格式,将同一类的图片放在同一个文件夹中,如下图所示。下载vgg16.npy...
2019-06-07 11:31:16
6107
40
原创 Windows+caffe+vgg16训练数据集分类
前言网上有很多关于linux系统下,利用VGG16对图片进行分类,但是运用到Windows下会出现很多问题,所以写这篇博客做个总结。关于配置caffe环境可以参考这篇博客win10+vs2013+caffe+gpu+python环境配置,在这里就不在叙述了。下面将从以下5个步骤讲起。1.下载图片,生成.txt,这个txt用于转换图片格式的参数用到了2.把训练图片转换成lmdb格式3.计算...
2019-04-20 11:55:33
1276
4
原创 Windows+caffe+faster-rcnn环境配置
1. 前言在配置faster-rcnn时,前提要先配置caffe框架,看到这先别着急忙着配置caffe框架,如果你电脑已经配置好了caffe的话,那恭喜你有的你忙了,因为faster-rcnn要用到roi_pooling_layer层,但是caffe没有把这层添加到环境中,所以得重新编译caffe,但是重新编译caffe会出现很多各种各样的错误,最大的一个坑就是如果你电脑上装了python-op...
2019-04-16 12:13:21
1517
4
原创 Windows下用DCGAN训练自己的数据集
1. 训练前准备DCGAN是在TensorFlow框架下训练数据,所以在使用DCGAN前先配置好TensorFlow环境,可以参考这篇博客win10+cuda9.2+TensorFlow安装。下载DCGAN源码,百度链接:DCGAN源码,提取码:nd612. 训练自己的数据集将下载下来的DCGAN源码解压,如下图所示代码是完整的,直接运行就可以,无需修改任何语句。如果是训...
2019-03-31 13:57:37
4988
61
原创 Windows下FCN保存训练日志并画loss曲线图
前言网上有很多教程画caffe的loss图,当你试过之后才发现根本不适用于FCN,经过我几天的研究,终于有点小收获,这篇博客我将介绍两种方法画loss图。方法一保存训练日志在训练数据的时候,在训练命令后面再加一句命令2>&1 | tee out.log,如下图所示看到这先别着急训练,先介绍一下这个命令。2>&1是Linux下的信息流输出控制语法,这句命令...
2019-01-06 19:48:53
2298
11
原创 详解FCN模型中每一层的输出及可视化操作
对于FCN模型的搭建以及训练自己的数据集,其实并不是特别难。可以参考FCN训练自己的数据集。可能更多的人想知道FCN每一层输出的结果是什么。这篇博客主要介绍的是对FCN每一层输出进行可视化操作。查看FCN总体框架先打开工具netcope,然后打开fcn-master2\voc-fcn32s下的train.prototxt文件,将train.prototxt文件内容复制到网页左侧编辑框后,sh...
2018-12-21 16:28:46
5157
原创 win10+cuda9.2+TensorFlow安装
TensorFlow的cpu安装非常简单,只要输入命令pip install tensorflow即可。下面介绍的是安装gpu版本的TensorFlow。安装cuda在安装cudn之前,首先得确定你的显卡驱动安装正确,而且要下对应的版本,打开NVIDIA控制面板,点击帮助,在点击系统信息,点击组件,我的版本是cuda9.2,网上很多教程都没有说到这一块,所以我在这研究了一天才解决,你得根据你...
2018-11-20 14:42:55
7040
原创 利用FCN-32s,FCN-16s和FCN-8s训练自己制作的数据集
前言之前写过一篇博客是制作自己的数据集利用FCN-32s模型训练,对FCN-16s和FCN-8s训练写的比较粗略,所以写这篇博客主要是补充FCN-16s和FCN-8s训练过程。训练前准备在使用fcn之前需要配置caffe环境,可以参考win10+vs2013+caffe+gpu+python环境配置这篇博客,对如何制作自己的数据集以及FCN-32s训练过程可以参考FCN制作自己的数据集并训练...
2018-11-18 18:46:24
10078
8
原创 FCN制作自己的数据集并训练和测试
前言这篇博客记录的数如何制作自己的数据集,并使用FCN模型训练数据,前提要搭建caffe框架,可以参考这篇博客,我制作的数据集是仿照voc2012数据集来在做的制作图像标签这一部分是最难的部分,在制作标签之前要搞清楚你的图像共分为几类调整图像尺寸网上很多写的代码,但是我试了都不成功,于是自己写了一个matlab代码,可以将整个文件夹图片缩成256*256大小,我图片的命名规则是1,2,...
2018-11-14 21:52:45
12430
53
原创 win10+vs2013+caffe+gpu+python环境配置
前言之前写过win7+vs2013+caffe+cpu+python环境配置,但是这种低配置的电脑根本跑不动深度学习,所以最近买了一台高配置电脑,今天研究了一天终于配置成功了,所以迫不及待的想过程和心得记录下来。我的电脑配置如下所示。操作系统:win10专业版处理器: i5-8300H内存:8G显卡:GTX1600 6G独显前期准备安装vs2013网上也有教程说可以使用v...
2018-11-03 21:49:24
4035
15
原创 win7+cpu+caffe+fcn+vgg16+训练voc2012数据集
一、 前言这篇博客的主要内容是基于caffe的框架,利用全卷积神经网络(FCN)训练voc数据集。很多人刚接触FCN的时候很着急的想要制作并训练自己的数据集,我只想说路要一步一步走,先训练网上的数据集,一方面可以熟悉FCN构造和参数,一方面可以测试一下你电脑的性能。由于我的电脑配置太低了,这里我使用的是cpu,以后会补上使用gpu的方法,话不多说直接说步骤。二、训练步骤前期工作要想使用...
2018-10-28 21:59:25
2362
11
原创 win7+cpu+caffe+python环境搭建
win7+cpu/gpu+caffe+python环境搭建2018年10月26日13:57一、前言我是一名在读研究生,因为最近在研究课题全卷积神经网络(FCN),在研究FCN之前,需要搭建caffe框架,由于我的基础完全从零开始,其中走了不少的弯路,虽然网上有很多的教程,但是很多存在着错误或者不详细,所以我想在这里记录下来,希望可以帮助到更多的零基础的人。二、工具准备1.电脑系统:win...
2018-10-26 13:56:52
1201
7
ThinningAlgo3D.zip
2021-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人