自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Window10上CLion配置

或许,你是嫌弃VS太麻烦,操作不方便。或许,你是习惯了IDEA的开发。总之,你就是心血来潮想试试CLion。我相信,看到这篇教程的读者可能已经被CLion搞烦了,什么MinGW,Cygwin都是什么鬼,下载慢的要命,安装慢的要命,各种烦。在本人努力爬坑的情况下,总算找到了一种极简的方法。不说了,进入正题。Window10上CLion极简配置教程1. 首先,下载安装CLion去JB公司官网下载CLion,https://www.jetbrains.com/clion/download/#

2021-01-15 13:43:55 1509

原创 仿射变换和透视变换

图像处理基本算法--仿射变换和透视变换仿射变换和透视变换更直观的叫法可以叫做“平面变换”和“空间变换”或者“二维坐标变换”和“三维坐标变换”。一个是二维坐标(x,y),一个是三维坐标(x,y,z)。也就是:仿射变换:透视变换:从另一个角度也能说明三维变换和二维变换的意思,仿射变换的方程组有6个未知数,所以要求解就需要找到3组映射点,三个点刚好确定一个平面。透视变换的方程组有8个未知数,所以要求解就需要找到4组映射点,四个点就刚好确定了一个三维空间。图像..

2021-01-11 13:54:01 1903

原创 轻量级网络论文:GhostNet

GhostNet: More Features from Cheap OperationsPDF:https://arxiv.org/pdf/1911.11907.pdfPyTorch代码:https://github.com/shanglianlm0525/PyTorch-Networks1 Motivation作者分析了一些训练好的网络输出的特征图,发现其中存在大量冗余信息, 一些特征图可以可以由其他特征图经过一些简单的变化得到. 因此提出了能用更少参数提取更多特征的Ghost模块...

2021-01-08 13:51:58 1594

转载 学C++要看的书

初级阶段:1. C++基础语法:《C++ Primer 第五版》C++语法太过繁杂,很多语法特性一辈子也用不上。对于初学者来说,学完前7章就能写简单的程序。2. 数据结构和算法:《大话数据结构》这实在是一本对新手非常友好的书,暂时先看完前5章就够了。此时应该多做一些练习,可以是简单的小软件或小游戏。3. C++标准库:《C++ Primer 第五版》没错还是这本书,之前7章学了基础语法。现在继续学习8~12章,涵盖了标准库常用组件的基本用法。想完整学习标准库的同学可以在未..

2020-12-30 11:37:47 275

转载 C++和python

说C++变得越来越像Python,可能有点过分,只不过是对比学习而已,请勿见怪!字面量static const int primes = 0b10100000100010100010100010101100;1原始字符串Python中:path = r'c:\noway'1C++中const char* path = R"(c:\this\string\has\backslashes)";1基于范围的循环Python中:for x in myList:

2020-12-30 11:33:24 82

转载 常用数据结构总结

前言 所有的容器归根到底都是内存空间的排列方式和在空间上施加各种各种不同的限制所得的。空间排列方式只有线性和链式两种方式,链式是通过记录每一个数据的地址来实现查找下一位数据的。而每一个容器所具有的特性就决定了它所适用的情况,总的来看容器常用的无非是增删改查操作,下面将从适用场景、常用操作来进行总结。 array数组 内存空间为连续的一段地址,适用于提前已知所要存储的数据类型和数量、进行大量的查、改操作,不适用于含有大量交换、删除、增加数据的操作,该容器无法动态改变大小,所以说提前已知存储数..

2020-12-30 11:12:17 94

原创 迭代器与生成器

迭代器迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter() 和 next()。字符串,列表或元组对象都可用于创建迭代器:实例(Python 3.0+)>>> list=[1,2,3,4]>>> it = iter(list) # 创建迭代器对象>>&

2020-12-07 20:00:00 86

转载 两种scope:variable与name

两种scope:variable与nametf.variable_scope()是对变量进行命名管理,而tf.name_scope()是对算子(op)进行命名管理,二者相互不影响。见下例: import tensorflow as tf for i in range(10): with tf.name_scope('test'): a = tf.constant([1]) b = tf.constant([1]) c = a + b

2020-12-07 16:24:50 173

原创 lambda

四个用法由于lambda语法是固定的,其本质上只有一种用法,那就是定义一个lambda函数。在实际中,根据这个lambda函数应用场景的不同,可以将lambda函数的用法扩展为以下几种: 将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。 例如,执行语句add=lambda x, y: x+y,定义了加法函数lambda x, y: x+y,并将其赋值给变量add,这样变量add便成为具有加法功能的函数。例如,执行add(1,2),输出为3。 将lamb.

2020-10-30 11:31:21 523

原创 动态库与静态库的调用

目录静态库什么是静态库?怎么创建如何使用静态库的第一种使用方法静态库的第二种使用方法动态链接库动态库是什么?怎么创建如何使用隐式调用显式调用静态库什么是静态库?我们先来说一下什么是静态库,维基百科对其的解释是这样的:在计算机科学里,静态库(英语:Static library, Statically-linked library),或称静态库,是一个外部函数与变量的集合体。静态库的文件内容,通常包含一堆程序员自定的变量与函数,其内容不像动.

2020-10-10 01:05:46 2091

转载 C语言--指针一般在什么时候需要申请内存空间

1. 指针所指向的地址需要存放数据的时候需要申请空间。int *q;只有地址,没有内存空间。这个地址是随机地址。(1)没有申请内存空间: int *q; *q = 1; cout<<*q<<endl;错误! 指针变量q没有空间,不能直接存放数据。(2)申请内存空间:int *q = new int;*q = 1;cout<<*q<<endl;正确,存放数据之前给指针变量申请了一个int类型

2020-10-10 00:47:49 3484

原创 为指针指向的内存赋值

char **temp_pointer=NULL; temp_pointer=(char **)malloc(sizeof(char *) * number); // 申请内存空间 if(temp_pointer==NULL) // 申请内存空间失败则退出 { fclose(fp1); return -1; } for(i=0; i<number; i++) { //为指针指向的内存赋值 temp_pointer[i]=(char *)malloc(siz...

2020-10-10 00:38:05 492

原创 为p指向空间赋值

为p指向空间赋值[c]代码库/* 使用calloc来为数组申请空间 */#include <stdio.h>#include <stdlib.h>#define SIZE 5 int main(void) { int *p = NULL; int i = 0; /* 为p从堆上分配SIZE个int型空间 */ p = (int *) calloc(SIZE, sizeof(int)); /* 检查p的分配结果 */

2020-10-10 00:24:58 142

原创 (C++)函数参数传递中的一级指针和二级指针

主要内容:1、一级指针和二级指针2、函数指针传递的例子3、什么时候需要传递二级指针?4、二级指针在链表中的使用1、一级指针和二级指针一级指针:即我们一般说的指针,就是内存地址;二级指针:指向指针的指针,就是地址的地址;如:int a=1;int *p=&a;  // p为a变量的地址,通过*p可以得到a的值int **q=&p;   // q为p指针的地址,通过**q可以得到a的值2、函数指针传递的例子程序1: #include.

2020-10-09 00:48:20 482

转载 二级指针和指针引用函数传参(C++)

在函数的使用过程中,我们都明白传值和传引用会使实参的值发生改变。那么能够通过传指针改变指针所指向的地址吗?在解决这个问题之前,也许我们应该先了解指针非常容易混淆的三个属性:①.指针变量地址(&p)②.指针变量指向的地址(p,存储数据的地址)③.指针变量指向的地址的值(*p)当我们将指针变量与其它变量比较之后就会发现,指针变量同其它变量是相似的,只是多了最后一种操作。比如一个int类型的变量,int x=5;&x取出存储5这个数据的地址,同样,&p也是存储指针的地址,p就是

2020-10-09 00:34:03 691

原创 struct与指针

#include<stdio.h> #include<stdlib.h> //一级指针的用途:简介访问结构体,创建一个堆上个变量,储存这个变量的地址 struct info { int num; float score; }; void main1() { //如何构建一个指针变量访问结构体info struct info info1;//构建一个变量in...

2020-10-09 00:15:32 2269

原创 struct

结构体很重要,初学者一定要掌握。比如存储一个班级学生的信息,肯定包括姓名、学号、性别、年龄、成绩、家庭地址等项。这些项都是具有内在联系的,它们是一个整体,都表示同一个学生的信息。但如果将它们定义成相互独立的变量的话,就无法反映它们的内在联系:char name[20]; //姓名int num; //学号char sex; //性别int age; //年龄float score; //成绩char addr[30]; //家庭住址而且问题是这样写的话,只是定义了一个学生,如果.

2020-10-08 21:49:01 153

原创 DNN模块

1.OpenCV3.3 DNN模块介绍在OpenCV3.3版本发布中把DNN模块从扩展模块移到了OpenCV正式发布模块中,当前DNN模块最早来自Tiny-dnn,可以加载预先训练好的Caffe模型数据,OpenCV做了近一步扩展支持所有主流的深度学习框架训练生成与导出模型数据加载,常见的有如下:CaffeTensorFlowTorch/PyTorchOpenCV中DNN模块已经支持与测试过这些常见的网络模块:AlexNetGoogLeNet v1 (also referred to as .

2020-10-08 13:11:09 460

原创 数组元素首地址和数组首地址

int main(){ int arr[10] = {0}; printf("数组元素首地址 :%d\n",arr); //数组元素首地址 2293280 printf("数组首地址 :%d\n",&arr); //数组首地址 2293280 printf("数组元素首地址+1 :%d\n",arr+1); //数组元素首地址 2293284 printf("数组首地址+1 :%d\n",&arr+1); //数组首地址 2293320 retu.

2020-10-07 21:38:16 2934

原创 C/C++申请和释放内存

new 和 delete 是 C++ 用于管理堆内存的两个运算符,对应于C语言中的 malloc 和 free,但是 malloc 和 free 是函数,而new 和 delete 是运算符。除此之外,new 在申请内存的同时,还会调用对象的构造函数,而 malloc 只会申请内存;同样,delete 在释放内存之前,会调用对象的析构函数,而 free 只会释放内存。###C++new运算符申请内存:将调用相应的 operator new(size_t) 函数动态分配内存,在分配到的动态内存块上

2020-10-07 18:25:53 632

原创 c++中的c_str()用法

语法: const char *c_str();c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针1、比如:最好不要这样:char* c;string s="1234";c = s.c_str(); //c最后指向的内容是垃...

2020-10-06 20:39:21 112

原创 getopt_long 函数解析命令行参数时的 struct option

staticconststructoptionoptions[]={{"help",no_argument,NULL,'h'},{"output",required_argument,NULL,'o'},{"level",required_argument,NULL,'l'},{"size",required_argument,NULL,'s'},{"symversion",...

2020-10-06 20:19:48 259

原创 getopt和getopt_long的使用方法

  getopt(分析命令行参数)  相关函数  表头文件 #include<unistd.h>  定义函数 int getopt(int argc,char * const argv[ ],const char * optstring);  extern char *optarg;  extern int optind, opterr, optopt;  函数说明 getopt()用来分析命令行参数。参数argc和argv是由main()传递的参数个数和内容。参数 optstri.

2020-10-06 20:08:02 225

原创 switch用法

当程序的一部分导致另一部分执行时,会发生分支。if-else if 语句允许程序分支到几个可能的路径之一,当这些测试之一成立时,它执行一系列测试(通常是关系)和分支。switch 语句是一个类似的机制,但是它测试的是整数表达式的值,然后使用该值来确定要分支到哪一组语句,以下是 switch 语句的格式:switch只能接受整型和字符型:整型:#include <iostream>using namespace std;int main(void){ int a;

2020-10-06 18:48:47 224

原创 tensorrt使用文档(一)

OverviewNVIDIATensorRT™是一个C ++库,可以帮助NVIDIA图形处理器(GPU)进行高性能推理。 TensorRT通过合并张量和图层,转换权重,选择高效的中间数据格式,并根据图层参数和测量的性能从大型内核目录中进行选择,从而对网络进行定义并对其进行优化。TensorRT包含导入方法,可帮助您为TensorRT表达训练有素的深度学习模型以优化和运行。 它是一种优化工具,可以应用图形优化和图层融合,并利用各种高度优化的内核集合找到该模型的最快实现,以及可用于在推理上下..

2020-10-05 14:44:21 1246 1

转载 智能指针

unique_ptr 是 C++ 11 提供的用于防止内存泄漏的智能指针中的一种实现,独享被管理对象指针所有权的智能指针。unique_ptr对象包装一个原始指针,并负责其生命周期。当该对象被销毁时,会在其析构函数中删除关联的原始指针。unique_ptr具有->和*运算符重载符,因此它可以像普通指针一样使用。查看下面的示例:#include <iostream>#include <memory>struct Task { int mId; Ta

2020-10-04 23:37:55 49

转载 C++ main函数命令行参数使用

1. C/C++语言中的main函数,经常带有参数argc,argv,如下:int main(int argc, char** argv)int main(int argc, char* argv[])C语言还规定argc(第一个形参)必须是整型变量,argv(第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为:main(intargc,char*argv[])2. 由于main函数不能被其它函数调用,因此不可能在程序内部取得实际值。...

2020-10-04 22:35:38 1952

转载 c++define的用法

在写程序时经常会碰到这样一个问题,我们需要重复写很多相同的代码,并且这些代码结构相同。总是想自己把这段代码封装一下然后直接进行调用,但是如果这段代码逻辑并不复杂,并且代码量也不大,不适合进行封装,那么我们就会想到c++中的关键字define。其实明智的你,遇到上面的这些情况估计还会想到另一个东西----template,后面我们也会说一下两者的却别。今天自己看了一下c++ define的相关知识,做个记录。  1.什么是define: 宏定义,简单的理解就是替换,其实这也是本质。如果熟悉g++编译过程的

2020-10-03 15:28:10 6841

转载 Flask中@app.route

本文我们先来说说Flask,深入探讨Flask如何实现在函数上方写“@app.route()”就能在因特网上输出函数的执行结果。下面是Flask主页给我们的第一个例子,我们现在就由它入手,深入理解“@app.route()”是如何工作的。app = Flask(__name__)@app.route("/")def hello(): return "Hello World!"@app.route和其它装饰器要想明白“@app.route()”的工作原理,我们首先需要..

2020-10-01 19:27:29 2084

转载 Darknet53网络结构图及代码实现

Darknet53网络结构图及代码实现本文链接:https://blog.csdn.net/leiduifan6944/article/details/104857968Darknet是最经典的一个深层网络,结合Resnet的特点在保证对特征进行超强表达的同时又避免了网络过深带来的梯度问题,主要有Darknet19和Darknet53,当然,如果你觉得这还不够深,在你条件允许的情况下你也可以延伸到99,199,999,…。1、结构图大致如下(这张图是从网上扒来的,凑合着,懒得自己画了)..

2020-09-13 22:47:20 3177

原创 面试前要读

yolov4:https://zhuanlan.zhihu.com/p/136172670

2020-09-11 23:02:04 77

原创 2020-09-07

# Copyright 2018 The AI boy xsr-ai. All Rights Reserved.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at## http://www.apache.

2020-09-07 14:03:38 1455

原创 resnet50实现

import tensorflow as tfimport tensorflow.contrib.slim as slimWEIGHT_DECAY = 0.01# 这段是我之前看别人的帖子上做的,但是后来我做的过程中我发现其实并没有什么用,# 改变featuremap的大小用卷积也完全可以实现,所以我把它注释掉,发现也是正常的# 但是由于tensorflow老大哥最近又开始迭代更新了,所以可能会有warning,但是# 没什么大影响# def sampling(input_tensor.

2020-09-07 13:51:26 208

原创 Dijkstra

Dijkstra(迪杰斯特拉算法)#Dijkstra(迪杰斯特拉算法) 带权无向图中寻求最短路径#动态演示过程: https://www.bilibili.com/video/BV1q4411M7r9?from=search&seid=5585063956337033177#实现的话用优先队列实现(出队的都是确认是到该点的最短路径)import heapqimport mathgraph = { "A": {"B": 5, "C": 1}, "B": {"A":.

2020-09-06 12:59:41 178

原创 图的BFS算法和DFS算法

BFS(breadth first search)广度优先搜索,和二叉树广度优先搜索算法一样,一层一层的搜索,只不过得先找个起始点,如下图所示,比如起始点设为A,那就是A,B,C,D,E,FDFS,也是先找个起始点,然后一条路走到底,走到不能走为止,再往回看上一个点的其他路径,直到探索完所有的点。如下图所示,不如起始点设为A,那就是,A,B,D,F,E,C,当然走法有多种。BFS可以用queue(先进先出)来实现。DFS可以用栈来实现(后进先出)来实现。BFS:graph = {

2020-09-05 15:47:08 331

转载 利用mAP计算目标检测精确度

睿智的目标检测20——利用mAP计算目标检测精确度学习前言 GITHUB代码下载 知识储备 1、IOU的概念 2、TP TN FP FN的概念 3、precision(精确度)和recall(召回率) 4、概念举例 5、单个指标的局限性 什么是AP 绘制mAP学习前言好多人都想算一下目标检测的精确度,mAP的概念虽然不好理解,但是理解了就很懂。GITHUB代码下载这个是用来绘制mAP曲线的。https://github.com/Cartucho/mAP.

2020-08-20 14:29:29 1081 2

转载 windows下的torch=1.2.0环境配置

神经网络学习小记录48——windows下的torch=1.2.0环境配置学习前言 环境内容 Anaconda安装 下载Cudnn和CUDA 配置torch环境 安装VSCODE学习前言好多人问环境怎么配置,还是出个教程吧。环境内容torch:1.2.0torchvision:0.4.0Anaconda安装最新版本的Anaconda没有VSCODE,如果大家为了安装VSCODE方便可以直接安装旧版的Anaconda,百度网盘连接如下。也可以装新版然后分开装VSCO.

2020-08-20 11:39:30 12048 4

原创 目标检测中的AP,mAP

AP (Average precision)是主流的目标检测模型的评价指标。再介绍AP之前,我们先来回顾一下需要用到的几个概念precision,recall以及IoU。IoU(Intersection over union)交并比IoU衡量的是两个区域的重叠程度,是两个区域重叠部分面积占二者总面积(重叠部分只计算一次)的比例。如下图,两个矩形框的IoU是交叉面积(中间图片红色部分)与合并面积(右图红色部分)面积之比。在目标检测任务中,如果我们模型输出的矩形框与我们人工标注的矩形框的IoU值

2020-08-20 10:05:50 1162

转载 pytorc中的contiguous

本文讲解了pytorch中contiguous的含义、定义、实现,以及contiguous存在的原因,非contiguous时的解决办法。并对比了numpy中的contiguous。contiguous 本身是形容词,表示连续的,关于 contiguous,PyTorch 提供了is_contiguous、contiguous(形容词动用)两个方法 ,分别用于判定Tensor是否是 contiguous 的,以及保证Tensor是contiguous的。PyTorch中的is_contiguous是

2020-08-19 15:20:57 187

原创 PyTorch容器(Containers)中几个比较常用的CLASS

一、官方文档首先看官方文档的解释,仅列出了容器(Containers)中几个比较常用的CLASS。CLASS torch.nn.ModuleBase class for all neural network modules.Your models should also subclass this class.import torch.nn as nnimport torch.nn.functional as Fclass Model(nn.Module): def __

2020-08-19 14:35:42 1038

空空如也

空空如也

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

TA关注的人

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