自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 C++——Eigen库的学习(6)

七、特殊的矩阵和向量1.零阵与零向量在Eigen中,定义零阵的函数是zeros(),有三种定义方式,如下示例代码:std::cout << "固定大小的数组:\n";Array33f a1 = Array33f::Zero();std::cout << a1 << "\n\n";std::cout << "一维动态大小数组:\n";ArrayXf a2 = ArrayXf::Zero(3);std::cout << a2 <

2021-01-13 16:46:16 1720

原创 C++——Eigen库的学习(5)

六、矩阵的块操作(block)1.块操作的定义在Eigen库中,可以使用函数 .block() 来提取矩阵中的某一个区域, .block() 有两种形式,两种形式的功能是等价的。在Eigen库中,索引是从0开始的。定义一个从元素(i, j)为起点,大小为(p, q)的块:使用动态尺寸的block进行构建: .block(i, j, p, q)使用固定尺寸的block进行构建: .block< p,q >(i, j)以下代码详细地使用了两种块的方式进行block操作:#include

2021-01-13 16:24:43 1134

原创 C++——Eigen库的学习(4)

五、Array类在Eigen库中,除了提供Matrix类:矩阵操作(matrix是二维,Vector是一维),还提供了一种更方便通用的Array类,Array类就是普通的数组,同时包括二维和一维,有点类似python中numpy的味道,这一节就介绍这个Array类!1.Array类的定义Array类的定义和Matrix类类似,包含6个参数,唯一的区别是Array的相关操作是元素级的操作!Matrix<typename Scalar, int RowsAtCompileTime,

2021-01-13 12:45:57 595

原创 C++——Eigen库的学习(3)

四、矩阵和向量的运算这一小节主要介绍Eigen库对于矩阵运算的一些支持,基本和matlab里运算操作一致,便于数据运算,常见的包括矩阵的加减、矩阵的乘法、矩阵的转置与共轭等操作,下面将逐一介绍所有的操作符。1.矩阵的加减Eigen中进行矩阵的加减操作需要满足两点条件:1.进行加减操作的矩阵变量具有相同的尺寸(行和列);2.矩阵的元素类型相同(Eigen不自动转化类型),具体可以看下面的代码例子:#include <iostream>#include <Eigen/Dense&gt

2021-01-12 18:33:12 1131

原创 C++——Eigen库的学习(2)

三、Matrix类在Eigen库中,Matrix类是一个基类,所有的矩阵以及向量的都是该类的对象,Vector只是一种特殊的矩阵(一行或者一列)。1.Matrix类的定义Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime, int Options = 0, int MaxRowsAtCompileTime = RowsAtCompileTime,

2021-01-12 15:36:33 1494

原创 C++——Eigen库的学习(1)

学习Eigen库的初衷在于最近接触到了深度学习模型部署这块,需要进行TensorRT加速,所以C++也是跑不掉必须学会的技能,但是C++没有python中那么方便的numpy库,没法很容易得进行各种numpy矩阵的计算操作,据我现在了解到的,C++中只能用Eigen库去处理矩阵的计算,用二维矩阵去实现张量的计算。本人了解有限,如果有大佬有更好的办法欢迎指点!一、Eigen库的简介Eigen库是C++中用于处理矩阵计算的一个库,具有高效简洁的优点,与matlab中矩阵的计算方式与语法高度相似,熟悉matl

2021-01-11 17:21:32 1521

原创 YOLOv5利用ncnn部署系列(三)

五、pc端使用C++调用ncnn由于yolov5转ncnn不包括后处理部分,因此在c++的代码里需要重构整个后处理部分,不多说,直接上代码了:cmake_minimum_required(VERSION 3.17)project(yolov5s)find_package(OpenCV REQUIRED core highgui imgproc)#这里链接的时编译后的ncnn的include和lib文件夹,根据自己的路径去更改include_directories(./CLion-2020.2

2020-09-28 15:20:41 7741 39

原创 YOLOv5利用ncnn部署系列(二)

三、YOLOv5模型转onnx前面说完YOLOv5的训练,也进行了相应的测试,接下来就是对训练好的pt模型转为onnx模型!在YOLOv5的git项目里有自带的一个onnx_export.py文件,运行该文件,即可将pt模型转为onnx模型,但是里面也有很多坑!!!!先来看onnx_export.py的代码:"""Exports a pytorch *.pt model to *.onnx formatUsage: import torch $ export PYTHONPATH

2020-09-28 14:22:33 7448 13

原创 YOLOv5利用ncnn部署系列(一)

一、YOLOv5的训练yolov5的原理什么的就不说了,百度搜一搜很多,这里具体说一下怎么训练自己的数据集,官方的yolov5是在coco数据集上训练的,本文是在voc数据集上进行训练,对于自己的训练数据可以仿照voc数据集进行制作!YOLOv5的git项目:参考github项目YOLOv5,若需要官方的预训练权重,该项目的大佬也给出了,感谢大佬做出的工作!将项目git到本地!1.创建数据集文件夹数据存放的目录如下:在datasets文件夹下建立如下文件目录,其中训练需要用到的是score/imag

2020-09-24 19:18:43 4626 1

原创 ncnn库的安装以及相关环境配置

ncnn是腾讯开源的加速框架,对于移动端特别andriod做到了cpu上的极致优化,是工程落地的首选框架。对于pytorch模型转ncnn,一般的方法是先将.pt文件转为onnx,再通过ncnn库里的工具onnx2ncnn转换为ncnn模型。对于这种工程性质的落地,过程中会有数不清的坑,大家都懂!仅以此文记录一下在这个过程中踩过的坑!一、编译ncnn库的准备工作1.系统:ubuntu18.042.工具:g++、 cmake、protobu、opencv。前两个我是装的Clion,这个IDE里直接内

2020-09-24 17:23:25 2313 3

原创 Pytorch-猫狗分类实战(下)

Pytorch物体识别分类实战案例(下)前一篇文章介绍了案例中关于数据集的部分,接下来这部分是最重要的部分,包括网络的搭建、loss函数、训练和测试,还是话不多说,直接看代码。5.vgg16_net.py:搭建vgg16网络该py文件主要用于搭建网络结构,如果需要自己搭建不同的网络模型,直接仿造本文件去编写,先更改py文件的名字,定义网络的类名,在__init__f方法中对网络层进行定义,在forward方法中构建前向传播过程,大家仔细品一品这个流程,以后搭建自己的网络模型就是得心应手了!本项目搭建

2020-08-15 15:55:30 2063 36

原创 Pytorch-猫狗分类实战(上)

Pytorch物体识别分类实战案例(上)前面更新了很多关于pytorch中的函数和模块,但理论学得再好不如实战来得更快,不停地敲敲敲敲代码,你终会变强!这期的物体识别案例是个人纯手写,只要是用于熟悉pytorch搭建一个完整深度学习项目的所有过程,顺带熟悉pytorch的代码结构,其中包括数据预处理、数据集的加载、bath的读入等等,当我整个代码全部写完调试清楚,对于pytorch的代码构成有了一个大体的框架认识,看起github上别人优秀的代码会省下很多力。话不多说,接下来看看整个项目的详细内容。

2020-08-15 13:51:23 3139 20

原创 pytorch中的数据加载:Dataset与DataLoader

Dataset和DataLoader在深度学习中,往往需要经过大量的样本对网络参数进行训练,才能得到一个鲁棒性高的模型,而这么大量的样本,就需要通过mini-batch对图片进行迭代输入进网络进行训练,在pytorch中,通常使用Dataset和DataLoader这两个工具来构建数据管道,进行加载数据以及batch的迭代。Dataset定义了数据集的内容,它是一个类似列表的数据结构,具有确定的长度,能够用索引获取数据集中的元素。而DataLoader定义了按batch加载数据集的方法,每次迭代输出一

2020-08-06 22:58:51 2213

原创 pytorch中的nn.Module和nn.functional模块

这里写自定义目录标题一、nn.Module类二、nn.functional模块一、nn.Module类通过继承 nn.Module 转换成为类的实现形式,并直接封装在 nn 模块下,其中包含了常见的卷积层、池化层、以及损失函数等,下面将会介绍该模块下的一些函数,通常我们会import torch.nn as nn,以下都基于nn来表述:1.激活函数:nn.Relunn.Sigmoidnn.Tanhnn.Softmax2.模型层:nn.Linearnn.Conv2dnn.MaxPool2

2020-08-06 19:27:27 602

原创 pytorch-中常见错误(持续更新)

1. IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1在这里搭建了一个简易的全链接网络,定义的输入与输出,但是报了这么一个错误。import torchimport torch.nn.functional as F# x = torch.linspace(-1, 0, 100)# x = x.view()x = torch.squeeze(torch.linspace(-1, 0,

2020-07-26 10:56:36 2954 1

原创 pytorch-求导机制,反向传播

pytorch中的求导机制,用于反向传播在神经网络中是通过对梯度进行反向传播来对网络参数进行更新,在现有的深度学习框架,包括pytorch、tensorflow、keras、caffe等都集成了整个反向传播,通过调用函数可直接实现求梯度反向传播,省掉了许多麻烦。pytorch的反向传播主要由三种方法:1.通过调用backward的方法,求得的梯度将存放在求导变量张量的grad属性下。2.通过调用torch.autograd.grad函数3.通过SGD等优化器进行迭代优化,求得最小值一、调用bac

2020-07-23 21:56:49 1924

原创 pytorch-张量数据结构

1-1 张量数据结构  pytorch的基本数据结构是张量Tensor,Tensor也即是一个多维数组。pytorch中的语法和数据结构与numpy大多相似,张量对应于numpy中的array。tensor的type是一个元组。  在这一小节中,介绍pytorch中张量的数据类型、张量的维度、张量的尺寸等基本概念。一.pytorch中张量的数据类型pytorch中张量的数据类型和numpy.array基本一致,但是pytorch的张量不支持str类型的数据。主要的类型包括:浮点型:torch.f

2020-07-23 00:46:47 665 1

原创 pytorch学习——前言

pytorch的学习前言  刚从学校走出,步入职场的小白。学校和职场的差别还是很大,在学校里做的东西,学过的东西基本用不上,或者是不熟悉不方便,更有太多新东西需要去学习。以此来记录学习的过程。  在学校主要做目标检测,现在在公司主要方向为优化,主要做一些轻量级网络,搭建,训练,模型优化,部署等一系列事情。以后的发展方向可能向NAS方向发展,自动探索最优网络结构,以及模型的自动剪枝等。  以后所有的学习内容会同步更新在此,记录慢慢提升的过程。...

2020-07-22 23:15:14 129

空空如也

空空如也

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

TA关注的人

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