自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

起点的专刊

专注于IT技术

  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 ubuntu14.04 编译安装caffe(GPU)+CUDA+(常见问题)

在我们开始caffe学习的第一步自然就是准备环境啦,对于初学者,这个过程或许很难,有的时候可能搞个几天,绕进去就出不来,今天小编将自己在学习过程中,遇到的问题说一下,希望可以节约你的精力!一、环境准备 我是在自己的笔记本上装的双系统,ubuntu14.04 配置是GTX1070+16G,当然啦如果你的电脑没有GPU环境,可以安装cpu版,或者在windows上进行编译都是可以...

2019-05-13 17:13:12 2036 4

原创 OpenCV--使用mobilenet进行目标检测(附源码)

最近在使用opencv做一些图像处理和检测的内容,今天主要讲一下基于mobilenet模型进行目标检测的一般流程。部署环境:vs2017 +opencv3.3+C++ 1、添加引用库和命名空间 添加我们所需要使用的dnn库,和相关依赖#include<iostream>#include<opencv2/dnn.hpp>//openc...

2019-05-09 22:34:41 5613 3

原创 C++指针详解(精心整理)

我想你一定和我一样刚开始接触C++的时候,被指针(pointer)引用(reference)内存分区等等诸多概念,弄得很头疼吧。其实回头想想,C/C++,python,java,shell...学习起来都有一个共性,那就是敲敲敲,多敲几遍代码,可能会有一些问题,带着问题去学习,整理它。然后将技术不断的应用于工作中的新场景,很快就可以掌握一门新技术了,不建议毫无基础的情况下,学习特别深的理...

2019-05-03 21:07:18 11006 3

原创 C++中各个容器的使用场景

Vector的使用场景:比如软件历史操作记录的存储,我们经常要查看历史记录,比如上一次的记录,上上次的记录,但却不会去删除记录,因为记录是事实的描述。 deque的使用场景:比如排队购票系统,对排队者的存储可以采用deque,支持头端的快速移除,尾端的快速添加。如果采用vector,则头端移除时,会移动大量的数据,速度慢。 vector与deque的比较: 一:vector.at...

2019-05-02 22:20:21 4228

原创 ubuntu14.04 +CUDA8.0+OpenCV3.4 编译(详细流程)

在OpenCV的图像处理过程中,高量并发任务不能完全依赖于CPU,速度达不到需求,需要我们使用CUDA的高并发特性来加速,本文中,我来介绍下如何使用CUDA对OPENCV进行编译 软件下载 在编译Opencv之前我们的电脑要安装好CUDA,这个可以参考之前caffe编译流程,下载OpenCV及OpenCV拓展包。 依赖安装 sudo apt-get up...

2019-05-31 13:27:39 1835

原创 Caffe(学习2)--隐藏层详解

在学习了上一节数据层中的参数详解后,本文内容讲主要讲述Caffe网络模型中隐藏层的独有的参数信息(name, type, bottom, top和transform_param是所有层共有参数)。1、Convolution卷积层是卷积神经网络(CNN)的核心层,但在这之前希望你了解卷积操作。拓展:在Pytorch中主要是通过nn.Conv2d(input_ch,output_...

2019-05-25 20:51:43 2180

原创 Caffe(学习1)--Data layer 详解

在开始Caffe的学习之前,希望你已经准备好了caffe环境,并且学习了Pytorch系列。CNN对我们来说不再是一个黑匣子,我们可以用自己的数据训练一个diy模型,但在实际生产中考虑到嵌入式应用和测试需要,通常将pth模型转成caffe.model进行集成,接下来我会通过Pytorch和Caffe的对比,来介绍Caffe的细节。 在Pytorch中我们可以定义一个自己的类...

2019-05-25 18:55:29 2425

原创 Pytorch(笔记7)--Data Augmentation&torchvision.transforms

对于工程算法训练,在参数和训练方法确定以后,大部分的时间是在增加数据的多样性,普适性 一方面可以防止overfiting,另外一方面可以是模型在真实场景中有更好的泛化作用。 那么如何增大我们的数据集合呢?可以通过视频数据解析,网络爬虫,数据库拖库等方法增大数据集的量级。但是一些特别的需求,比如 “face emotion”训练,这些数据是很难通过网络进行获取的,而且通过人工ta...

2019-05-21 21:55:19 5698 3

原创 Pytorch(笔记9)--读取自定义数据

Pytorch中提供一个了数据接口datasets,其中封装了很多公用数据集CIFAR10/100,ImageNet等,可以用下面的接口进行简单调用,那么如何使用Pytorch来加载我们自己制作好的trainset呢?我们从源码来找答案! train_data = datasets.CIFAR10('./cifa10',train=True,transform=trai...

2019-05-19 22:16:08 3584

原创 Pytorch(笔记8)--手写自己设计的神经网络

在训练过程中经常做的一件事儿,就是拿已有网络模型ResNet,DenseNet等迁移到自己的数据集进行finetune,之后调整各个层级的输入输出等,我们先拿经典的lenet来说如何用Pytorch实现一个网络模型。(本人推荐使用Jupyter,方便调试,也可以保存成脚本)添加依赖库import torchimport torch.nn as nnimport tor...

2019-05-19 13:45:30 3042 1

原创 Pytorch(笔记6)--nn.Module功能详解

在接触了之前所说的Conv,pool,Batchnorm,ReLU等方法都是神经网络中常见的操作,我们可以根据这些方法来自定义网络模型,也可以根据需求对经典模型进行调整,他们都继承共同的抽象类nn.Module,其中包含好了很多函数。1.nn.Sequential 这个方法中可以封装多个子类,注意,一定继承nn.Module的类,在调用的时候,可以使用下面的方法net =...

2019-05-19 13:43:23 5480 1

原创 Pytorch(笔记5) -- BatchNorm

在上一节中,我们知道使用sigmoid会出现梯度消失的情况,在实际训练中,引入了BatchNorm操作,可以将输入值限定在之间, 如下图,如果不进行Batch Norm,如果输入weight差别过大,在两个方向进行梯度下降,会出现梯度下降不平衡,在训练过程中不能稳定的收敛,在实际应用过程中也不能稳定的输出label结果,因此Normalization是很...

2019-05-18 17:10:41 3159

原创 Pytorch(笔记4) -- activation_function ReLU&Sigmoid

谈到激活函数,首先我们应该明白基本的概念,什么是神经网络算法?为什么需要激活函数?在周志华老师的西瓜书中“神经网络是由具有适应性的简单单元组成的广泛并行互联的网络”,如下图可以抽象为一个神经网络的层,神经元收到多个其他神经元传来的信号,通过激活函数进行激活输出 如果没有激活函数f,那么y接手到的结果仍然是线性结果,无法接收到非线性的信息,这对特征提取是非常不利的。接下...

2019-05-18 15:59:21 2480

原创 Pytorch(笔记3)--MaxPool2d&AdaptiveAvgPool2d

在上一节中我们详细的阐述了Conv2d的计算原理,今天我们来讲述下Pytorch中其他比较常见的操作! 在lenet5的时候,受限于计算能力和存储能力,通常采用downsample来降维 在pytorch中使用Pooling操作来实现采样,常见的pool操作包含Max_pool,Avg_pool等Max_poolx = t.rand(1,3,7,7...

2019-05-18 14:01:39 13224 1

原创 Pytorch(笔记2)--Conv2d卷积运算

当我们安装好pytorch的依赖环境以后,我们就可以学习pytorch了,我们首先引入依赖包如下:import torchimport torchvision as tvimport torch.nn as nn接下来我们主要讲述nn.Conv2d 的卷积运算函数,nn.Conv2d的功能是:对由多个输入平面组成的输入信号进行二维卷积,以最简单的例子进行说明:layer = ...

2019-05-17 21:18:06 17256 5

原创 linux--awk url拼接

刚刚在工作过程中碰到一个小问题,后来朋友给了提示,解决出来了!在这里分享一下问题描述:20180208/288235490/174_align_1.jpg 264 285 536 176 26 1 1 1 120180208/288235490/153_align_1.jpg 386 402 307 349 25 1 1 1 120180208/288235490/484_...

2019-05-16 15:04:12 1837

原创 Pytorch源码解读-- torchvision.datasets.folder

import torch.utils.data as datafrom PIL import Imageimport osimport os.pathIMG_EXTENSIONS = [ '.jpg', '.JPG', '.jpeg', '.JPEG', '.png', '.PNG', '.ppm', '.PPM', '.bmp', '.BMP',]def i...

2019-05-14 13:28:36 3685 3

原创 ubuntu14.04 更新gcc版本

在编译caffe和opencv中经常会遇到 make: *** [.build_release/cuda/src/caffe/layers/detection_output_layer.o] Error 1 主要原因是gcc版本和caffe版本不兼容,更新下版本重新编译就可以了!sudo add-apt-repository ppa:ubuntu-toolchain-r/...

2019-05-13 17:09:05 2530

原创 C++中计时器的用法

熟悉python的朋友都知道可以引用time.time()来实现程序的计时效果,那么如果换成C++如何实现呢? float start = getTickCount(); //计时器 //计时程序 float end = getTickCount(); float last = end-start; cout << "tim...

2019-05-12 18:41:58 6697

原创 OpenCV--addWeighted图像融合的用法

在opencv中一个情况下需要对图像进行融合显示,我们常用的一个函数就是addWeight,下面是对应的参数列表。//! computes weighted sum of two arrays (dst = alpha*src1 + beta*src2 + gamma)CV_EXPORTS_W void addWeighted(InputArray src1, double alp...

2019-05-12 18:19:04 2151

原创 OpenCV--基于goturn实现视频实时追踪

环境:VS2017+OpenCV3.3+C++#include <opencv2/opencv.hpp>#include <opencv2/dnn.hpp>#include <iostream>using namespace cv;using namespace cv::dnn;using namespace std;String go...

2019-05-11 20:11:44 3089

原创 OpenCV--FCN实现图像切割(附源码)

环境:VS2017+OpenCV3.3+C++ 什么是图像切割?在一幅图像中,如果我们只对其中的部分目标感兴趣,这些目标通常占据一定的区域,并且在某些特性(如灰度、轮廓、颜色和纹理等)上和临近的图像有差别。这些特性差别可能非常明显,也可能很细微,以至肉眼察觉不出来。随着计算机图像处理技术的发展,我们可以通过计算机来获取和处理图像信息。图像识别的基础是图像分割,其作用是把反映物体真实情...

2019-05-11 20:09:05 3849 1

原创 OpenCV--性别年龄预测(附源码)

环境:VS2017+OpenCV3.3+C++ 当我们接触一个全新的caffe.model文件,如何快速应用的,今天我将通过一个预测性别和年龄的实例来说明这个问题,首先来下载模型文件,保存到我们指定的自定义的目录,首先我们应该查看模型的描述文件(.prototxt),确定模型需要的输入和输出部分。name: "CaffeNet"input: "data" //输入层input_d...

2019-05-11 19:00:40 3825 3

原创 OpenCV--级联分类器HAAR的使用

环境:VS2017+opencv3.3+C++ 刚刚做人脸年龄和性别预测的时候,使用到了级联检测器,在这里简单讲一下!1、数据准备 首先我们应该应该准备一些东西,我用的是opencv3.3 版本,opencv中封装好了级联分类器的特征文件(xml文件),我的目录是D:\new_cv\opencv\sources\data\haarcascades,里面有很多的...

2019-05-11 17:36:03 3040

原创 OpenCV--视频对象的实时检测(附源码)

环境:opencv3.3+VS2017+C++ 我们讲述了如何实时的读取视频中每一帧的数据,以及基于mobilenet如何进行对象的检测,嘿嘿,如果两个流程组合起来,会怎么样呢??我们来看一下咯~ 1、前期准备 前面的文章中已经很详细的说过依赖包引用以及模型位置定义,这里不再赘述!#include <opencv2/opencv.hpp>...

2019-05-10 23:56:33 4699 1

原创 OpenCV--读取视频文件的帧(测试可用)

环境:VS2017+ OpenCV3.3 +CPP 前两天,使用opencv基于DNN实现了目标的分类和检测,但是我们在实际场景中,经常看到视频中实时的检测和目标分类,这些都是很有意思的,我也尝试的做了一个demo,首先,来说一下,如果和读取一个视频对象中的每一个帧~一、引入头文件#include <opencv2/opencv.hpp> //openc...

2019-05-10 20:31:18 6023 4

原创 OpenCV--使用dnn+googlenet进行目标分类(附源码)

今天我来简单说一下,基于opencv+googlenet模型进行图像分类教程部署环境:vs2017 +opencv3.3+C+++googlenet 1、添加引用库和命名空间 添加我们所需要使用的库,和相关依赖#include<iostream>#include<opencv2/dnn.hpp>//opencv2的dnn模块#include&l...

2019-05-09 14:55:41 3166

原创 OpenCV--使用ssd进行目标检测(附源码)

最近在使用opencv做一些图像处理和检测的内容,以下是个人学习记录,如果有问题,欢迎指正!部署环境:vs2017 +opencv3.3+C++ 1、添加引用库和命名空间 添加我们所需要使用的dnn库,和相关依赖#include<iostream>#include<opencv2/dnn.hpp>//opencv2的dnn模块...

2019-05-08 18:36:03 6161 21

原创 git 设置免密推送

使用命令git config --global credential.helper store可以省去每次都输入,用户名和密码,输入一次就可以了

2019-05-05 16:19:12 2642

转载 OpenCV 3.4.1编译与添加扩展模块

前言亲测有效!!!配置:CMake3.12.0+OpenCV3.4.1+OpenCV_contrib3.4.1+VS2015+Win1064位.写之前,大家可能会问,官网上可以下到编译好的库,为什么还要自己编译呢?原因之一:项目架构的改变是OpenCV3最大的革新之处,抛弃了整体架构,使用内核+插件的架构形式。官网上提供的编译好的库只包含其核心模块,并不包含OpenCV_contrib中的...

2019-05-04 18:20:55 2593

原创 C++类型转换

1、类型转换名称和语法C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。  static_cast 静态类型转换。如int转换成charreinterpreter_cast 重新解释类型  dyna...

2019-05-03 23:00:44 2467

原创 C++引用详解

在C++中一个很大的特色就是引用了,可以省去我们很多时间去操作复杂的指针,从使用角度,我们可以无脑的把引用当作一个变量的别名~1、引用概念 在C++中新增加了引用的概念 引用可以看作一个已定义变量的别名 引用的语法:Type& name = var 引用是否分配内存空间?是void main(){ int a = 10; int &b...

2019-05-03 22:47:13 2308

原创 C++内存四区详解

堆区,栈。。。

2019-05-03 17:26:09 2986 4

原创 STL容器操作--map/multimap详解

1、map/multimap的简介map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。 map中key值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。 map的具体实现采用红黑树变体的平衡二叉树的数据结构。在插入操作和删除操作上比vector快。 map可以直接存取key所对应的v...

2019-05-02 22:10:25 2583

原创 STL容器操作--set/multiset详解

1、set/multiset的简介set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。 set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。 set不可以直接存取元素。(不可以使用at.(pos)与[]操作符)。 multiset与set的区别:set支持唯一键值,...

2019-05-02 21:56:12 2505

原创 STL容器操作--priority_queue详解

1、优先级列表priority_list最大值优先级队列、最小值优先级队列 优先级队列适配器 STL priority_queue 用来开发一些特殊的应用,请对stl的类库,多做扩展性学习 priority_queue<int, deque<int>> pq;priority_queue<int, vector<...

2019-05-02 21:43:06 2408

原创 STL容器操作--list详解

1、list简介list是一个双向链表容器,可高效地进行插入删除元素。 list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符。It++(ok) it+5(err) #include <list>2、list对象的默认构造list采用采用模板类实现,对象的默认构造形式:list<T> lstT; 如:list<int>...

2019-05-02 21:37:48 2472

原创 STL容器操作--queue详解

1、queue简介queue是队列容器,是一种“先进先出”的容器。 queue是简单地装饰deque容器而成为另外的一种容器。 #include <queue>queue对象的默认构造queue采用模板类实现,queue对象的默认构造形式:queue<T> queT; 如:queue<int> queInt; //一个...

2019-05-02 21:32:11 3019

原创 STL容器操作--stack详解

1、stack简介stack是堆栈容器,是一种“先进后出”的容器。 stack是简单地装饰deque容器而成为另外的一种容器。 #include <stack>2、stack对象的默认构造stack采用模板类实现, stack对象的默认构造形式: stack <T> stkT;stack <int> stkInt; /...

2019-05-02 21:21:02 2328

原创 STL容器操作--deque详解

1、deque简介deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的。 deque在接口上和vector非常相似,在许多操作的地方可以直接替换。 deque可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲)。 deque头部和尾部添加或移除元素都非常快速。但是在中部...

2019-05-02 21:17:31 2546

opencv性别年龄预测caffe.model模型

该caffe.model适用于opencv入门学习中的实验教程,主要完成性别和年龄的预测,下面是参考教程:https://blog.csdn.net/Haiqiang1995/article/details/90113486

2019-05-11

空空如也

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

TA关注的人

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