- 博客(318)
- 资源 (4)
- 收藏
- 关注
原创 SQL update select 功能使用
需要在MS.tbMSImageMapNew 表中将tagMask=1的值中随机选择1200个,将其值置为2,
2024-03-20 16:49:44
189
原创 yolov5_obb win10环境安装
yolov5 + csl_label.(Oriented Object Detection)(Rotation Detection)(Rotated BBox)基于yolov5的旋转目标检测 - GitHub - hukaixuan19970627/yolov5_obb: yolov5 + csl_label.(Oriented Object Detection)(Rotation Detection)(Rotated BBox)基于yolov5的旋转目标检测。”,这些我尝试了一些解决办法,都失败了。
2024-01-12 15:40:13
1256
翻译 Win10下编译DOTA_devkit
那个代码注释掉的是原文件的代码,意思就是说,先去找_polyiou.cp36-win_amd64.pyd文件,找到了然后就导入生成的_polyiou.cp36-win_amd64.pyd文件(后面会生成,后面说),但是遗憾的是imp现在不用了,改为用importlib了,所以更改导入代码就可以了。这里首先去下载这个文件,下载文件后,解压,进入文件夹,先找到polyiou.py这个文件,进行修改,如下图。能够输出这样的就可以了,不难的,慢慢来,到这里,已经完成了最难的了。
2024-01-12 15:16:57
316
1
原创 知识蒸馏开山之作(部分解读)—Distilling the Knowledge in a Neural Network
正常的模型学习到的就是在正确的类别上得到最大的概率,但是不正确的分类上也会得到一些概率尽管有时这些概率很小,但是在这些不正确的分类中,有一些分类的可能性仍然是其他类别的很多倍。但是对这些非正确类别的预测概率也能反应模型的泛化能力,例如,一辆宝马车的图片,只有很小的概率被误识别成垃圾车,但是被识别成垃圾车的概率还是比错误识别成胡萝卜的概率高很多倍。(cat,99%);;错误类别 dog 上的概率仍是错误类别 car 的概率的19倍 )
2023-08-23 14:34:09
471
原创 知识蒸馏Demo,非常详细,适合入门
知识蒸馏(Knowledge Distillation),简称KD,将已经训练好的模型包含的知识(”Knowledge”),蒸馏(“Distill”)提取到另一个模型里面去。
2023-08-23 10:48:46
994
1
原创 CNN的特性
换句话说,它其实就是拿了同一张“通缉令”在“全国范围”内查找“嫌疑犯”,这样一来理论上就具备了位移不变性了(当然,受限于步进跨度、卷积核大小等因素的影响,某些条件下CNN也可能会存在“漏”的情况)。所以简单来说,卷积神经网络就是通过“大”和“小”卷积核的搭配和层叠,来满足图像识别中的尺度不变性的要求,同时降低参数数量的。从上述的描述中我们也可以看到,CNN的这种旋转不变性其实是“不可靠”的,带有一定的随机性质。它指的是无论物体在图像中的什么位置,卷积神经网络的识别结果都应该是一样的。
2023-08-09 15:53:44
1347
1
原创 python路径,pathlib更优雅
os.path将系统路径视为字符串,容易出现混乱。而pathlib将路径表示为独特的对象,并且引入了更多可扩展的用法,获取路径会更方便。,如果给定的路径对象是嵌套的,则仅删除最后一个子目录。Path子类的使用,可以用该类创建文件夹和目录。它将返回带有后缀的文件名,若只想要前缀,则使用。假设我们需要获取某个文件夹下所有的txt文件。检查路径是否存在,可以使用布尔函数。如果要将路径分成多个部分,可以使用。的方式,比如,使用当前工作路径。属性,它会创建一个生成器。查找主目录中所有文本文件。要删除目录,可以使用。
2023-08-08 10:25:02
180
转载 TensorRT部署流程
第一种不够灵活,第三种比较麻烦,所以最省事方便的就是第二种方法。本文介绍第二种。ONNX 就是一个通用的神经网络格式,一个.onnx文件内包含了网络的结构和参数。甭管是用什么深度学习框架写的网络,只要把模型导出成 ONNX 格式,就跟原本的代码没有关系了。转成 ONNX 格式还没有被优化,需要再使用 TensorRT 读取它并优化成 TensorRT Engine。优化参数也在这一步指定。
2023-07-23 21:43:02
1277
原创 预训练—冻结权重
方式:将不更新的参数的requires_grad设置为Fasle,同时不将该参数传入optimizer.(1)不更新的参数的requires_grad设置为Fasle(2)不将该参数传入optimizer最优写法能够节省显存和提升速度:节省显存:不将不更新的参数传入optimizer提升速度:将不更新的参数的requires_grad设置为False,节省了计算这部分参数梯度的时间。
2023-07-12 15:56:38
1785
原创 预训练模型相关整理
本文通过实验说明结果,在ImageNet的1000个类中,作者将其分成2份(A与B),每份包含500个类,这里是随机分的。然后分别针对A和B份,分别训练一个AlexNet网络。关于AlexNet的结构就不多说了,一共8层,前面5层是卷积层,后面3层是FC层。作者分别对n=1~7进行了实验,举个例子:比如n=3,那么AnB就是说在一个新的AlexNet上,前三层采用A网络的前三层并且将其frozen,后5层随机初始化,然后在B数据上去训练。
2023-07-11 16:18:14
360
原创 AttributeError: ‘tensorrt.tensorrt.Builder‘ object has no attribute ‘max_workspace_size‘
TensorRT配置
2022-09-05 17:45:41
7250
13
原创 模型的指数移动平均EMA
1、概念指数移动平均(Exponential Moving Average,EMA),也叫权重移动平均(Weighted Moving Average),是一种给予近期数据更高权重的平均方法。就是说,用原理数据来影响现在数据的更新。通俗版本理解:EMA是将每次梯度更新后的权值和前一次的权重进行联系,使得本次更新收到上次权值的影响。2、原理公式:a代表衰减率,该衰减率用于控制模型更新的速度,一般设为0.9-0.999。该值越大表示与上一次的影响越大,本次权重变化越小,与上次权重越接
2022-01-13 12:15:08
3527
转载 机器学习分类
根据问题本身的特征来分类,机器学习问题可分为监督学习、无监督学习、半监督学习和强化学习。 ● 监督学习(Supervised Learning)的特点是训练数据是有标签的,即对于每个输入都有相对应的输出,算法的目的是训练出能反应输入与输出之间的映射关系的模型。对于输出值是离散的(有限个数),称之为分类问题(Classification Problem);对于输出值是连续的,则称之为回归问题(Regression Problem) ● 无监督学习(Unsupervised...
2021-12-06 10:50:30
559
原创 apex windows 安装步骤
第一步:直接上github上下载apex-master。链接为:GitHub - ptrblck/apex: A PyTorch Extension: Tools for easy mixed precision and distributed training in Pytorch第二步:解压后打开,可以看到requirements.txt文件夹,里面写了依赖及版本要求,需要将里面写的依赖装好,具体操作为:进入anaconda的虚拟环境,然后进入倒apex的解压目录下,执行命令:python setup
2021-11-22 10:27:02
3278
2
原创 STL——string字符串的插入和删除、子串的功能
代码实现:#include<iostream>#include<string>using namespace std;//字符串的插入和删除void test01(){ string str1 = "hello"; //字符串的插入 str1.insert(1, "111");//从第一个位置起,插入111 cout << "str1=" <<str1<< endl; //字符串的删除 str1.erase(1, 3
2021-05-07 17:14:23
817
原创 STL——string字符串比较、字符存取
一、string字符串比较功能描述:字符串之间的比较比较方式:字符串是按照ASCII码进行比较的,=返回0>返回1<返回-1函数原型:int compare(const string &s) const; //与字符串s比较int compare(const char *s) const; //与字符串s比较Demo:#include<iostream>#include<string>using namespa
2021-05-07 16:17:02
1339
原创 STL——string查找和替换
功能描述:查找:查找指定的字符串是否存在替换:在指定位置替换字符串函数原型:* int find(const string& str, int pos=0) const;//查找str第一次出现的位置,从pos位置开始查找* int find(const char*s, int pos=0) const; //查找字符c第一次出现的位置,从pos的位置开始查找* int find(const char*s, int pos, int n) const; //从pos的位置开始查找
2021-05-07 16:00:32
834
原创 STL——string的赋值操作
功能:给string字符串进行赋值 string字符串拼接操作赋值的函数原型:共有2种,分别为operate=和assign两种。string& operator=(const char *s); //char*类型字符串 赋值给当前的字符串string& operator=(const string *s); //把当前的字符串s赋值给当前的字符串string& operator=(char c); //字符赋值给当前的字符串string& ass
2021-05-07 13:39:35
1512
原创 STL——String
一、基本概念1、string是C++风格的字符串,而string本质是一个类2、string和char*的区别:char*是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器3、特点:string类内部封装了很多成员方法如,查找find,拷贝copy,删除delete,替换replace,插入insert4、string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。二、基本操作构造函数原型:
2021-05-07 11:07:59
114
原创 C++——迭代器
Vector可理解为数组容器:vector算法:for_each迭代器:vector<int>::iterator小demo:#include <iostream>#include<vector>#include<algorithm>using namespace std;void myPrint(int val){ cout << val << endl;}void test01()
2021-05-06 22:55:51
149
原创 STL——初识
一、诞生1、C++ 面向对象和泛型编程的思想,目的就是代码复用性的提升。(1)面向对象的三大特性是:封装:将一些属性和行为抽象出来形成一个整体,形成一个事和物,提高代码复用性。继承:子类继承父类,将父类中的行为和属性都可以拿到,提高代码的复用性;多态:父类指针指向子类对象,由于子类对象不同,调用同一个接口会产生不同的形态,提高代码的复用性。(2)泛型编程主要是模板,将参数模板化后,使得函数更加通用化。2、STL算法是Standard Template libaray,即标准模板库
2021-05-06 10:47:44
152
原创 C++_opencv透视变换应用—抠图和换广告牌
透视变换作用:将图片映射到一个新的视平面,也称为投影映射。透视变换和仿射变换的区别:(1)、仿射变换,它可以将矩形转换成平行四边形,也可以将矩形的边压扁但必须保持边是平行的,也可以将矩形旋转或者按比例缩放。透视变换除了能够处理仿射变换的操作外,还可以将矩形转换成梯形。即仿射变换后还是平行四边形,透视变换后是四边形。因此可以说仿射变换是透视变换的一个子集。(2)、在OpenCV中,基于2*3矩阵进行的变换,是图像的仿射变换;基于3*3矩阵进行的变换,是图像的透视变换或者单应性映射。图像透视变换多用
2021-04-25 11:48:23
1506
1
原创 C++——隐式调用动态库.dll
1、依据上个项目中创建的DemoDll工程。在此工程中添加新建项目,控制台程序。然后再新建一个.cpp文件。里面的内容如下:// XianshiInvokeDll.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。#include <iostream>#include <Windows.h>//第一步,创建一个别名,它引用的的函数类型需要和dll中的导出函数一致typedef int (*LPDO_ARRAY) (int* pArr, int
2021-03-31 17:00:04
1678
原创 C++——编写和调用动态库
1、编写动态库,新建项目——》冬天链接库(DLL)2、新建mydll.h 和mydll.cpp在mydll.h中添加一个导出函数如下:#pragma once//高亮显示的部分说明是有效的#ifdef BUILD_MYDLL#define API_SYMBOL __declspec(dllexport)#else#define API_SYMBOL __declspec(dllimport)#endifextern "C" API_SYMBOL int convert.
2021-03-31 12:00:46
2943
原创 C++——编写和调用静态库
1、新建静态库,流程和代码如下。写类,demoStaticLib.h#pragma onceclass ArrayTool{public: //找出数组中最大值的元素 int MaxElem(const int* lpHead, const int nLength); //数组元素求和 int Sum(const int* lpHead, const int nLength);};写demoStaticLib.cpp// demoStaticLib.cpp...
2021-03-31 11:04:10
1104
原创 C++——python调用C++动态库
疑问:1、python是动态语言;c++是静态语言。python调用C++的程序,在数据类型上怎么适配?2、使用的例子是动态库的导出函数,他的输入参数是数组。python里的元组和列表是类似数组的数据结构,但是不是数组,在数据结构上怎么做到适配?3、是否还有其他的问题?vscode作为python的IDEimport ctypes,cypes.util定义2个函数,用命令行运行代码。直接写:python a.pypython安装的是64位的,则需要将VS项目编译成
2021-03-30 22:53:32
653
原创 C++动态库调用——显示调用
1、第一步,创建一个别名,它引用的函数类型需要和dll中的导出函数一致typedef int (*LPDO_ARRAY) (int * pArr, int nlen);2、定义一个实例句柄,引用动态库HINSTANCE hdll;3、定义一个函数指针,用来指向导出函数LPDO_ARRAY 1pDo_array;4、引入window头文件#include<window>5、第二步,加载DemoDll.dll动态库if(hDll!=NULL)//判断获取成功或者失
2021-03-30 22:38:37
1029
原创 C++——模板基本概念
1、C++的另一种编程思想称为 泛型编程, 利用 的技术是模板C++提供了两种模板机制:函数模板和类模板2、函数模板的作用建立一个通用的函数,其函数返回值和形参类型可以不具体制定,用一个虚拟的类型来代表。语法: template <typename T>----template:声明创建模板;----typename:表明后面的符号是一种类型,可以用class代替。—T: 通用的数据类型,名称可以替换,通常为大写字母示例:...
2021-03-23 09:57:52
227
原创 C++ opencv 仿射变换详解
1、C++仿射变换中主要涉及到2个函数:getAffineTransform() 和warpAffine()2、粗略的理解:getAffineTransform()是用来求得仿射变换矩阵的;而warpAffine()是用来对原图像进行仿射变换的,从而得到目标图像。3、详解getAffineTransform函数。函数作用:用于生成仿射变换矩阵(1)一个任意的仿射变换都可以表示为:乘以一个矩阵(线性变换),加上一个向量(平移)(2)仿射变换可以用来表示的操作有:旋转(线性变换),平移(向量
2021-03-23 09:54:00
4438
原创 普通函数与函数模板的调用规则
普通函数与函数模板的自动类型匹配,规则如下:1、普通函数可以自动类型匹配2、函数模板在显示调用的情况下可以自动类型匹配3、函数模板在隐式调用下不能自动类型匹配普通函数的自动类型匹配:void my swap(int a,int b){ return a+b;}void test01(){ int a=3; int b="c"; cout<<myAdd(a,b)<<endl;//...
2021-03-23 08:42:57
577
原创 函数模板案例—选择排序
案例描述:1、利用函数模板封装一个排序算法,可以对不同数据类型数组进行排序2、排序规则从大到小,排序算法为选择排序3、分别利用char数组和int数组进行测试#include<iostream>using namespace std;//实现 通用对数组进行排序函数,从大到小//char,int数组测试//交换的函数模板template<class T>void mySwap(T&a,T&b){ T temp=a;
2021-03-22 23:09:32
1054
原创 C++——值传递和地址传递
在C++调用函数时,会存在值传递和地址传递,也叫“传引用和传值”,正好用到这方面内容,因此做个总结,加深一下理解,如果有不到位或者不准确的地方,请小伙伴们多指教。1、地址传递时,形参和实参是同一个变量,即使用相同的内存空间,二者有相同的地址。而传值时二者地址不同;2、地址传递时,由于没有新建变量,所以对于类对象参数,不会产生构造和析构。而如果是传值调用,调用时会进行构造,退出函数时会进行析构;3、由于地址传递使用的是原本实参的地址,所以对引用参数值会做修改,会在退出函数后体现在主调函数中,而传值调用
2021-03-04 19:46:12
1831
1
原创 C++——通过函数对象调用和通过指针调用的优缺点探讨
前言:由于本人初步使用C++,所以第一步保证能正常运行就行了。也没有考虑过内存和运行速度上的问题。现状(问题):本人在对类的调用时,常常按照python的方式初始化一个对象,再访问函数的某个属性,如fun.b来访问类fun的b函数。而身边有同事为此感到嘲笑。他说道:你还是用python的编程思维在写C++, 应该 fun *f=new fun();再用f来调用fun。由此:在网上查一些资料,通过指针调用的优点(相对于通过函数对象访问):指针只需要Double Word(2个字节的
2021-03-01 20:16:51
937
原创 C++将一张小图贴到一张大图上
代码实现:#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>using namespace cv;int main(){ Mat image = imread("D:/CF_new/fs_create_fake_sample/image/10.png"); Mat logo = imread("D:/CF_new/fs_create_fake_sample/image/roi.pn
2021-02-25 10:46:50
1103
原创 纯虚函数和抽象类——C++
在多态中,通常父类中的虚函数的实现是毫无意义,主要是调用子类重写的内容。因此可以将虚函数改为纯虚函数。virtual 返回值类型 函数名(参数列表)=0; 该类也成为抽象类(无法实例化对象;子类必须重写抽象类中的纯虚函数,否则子类也属于抽象类)。代码示例:使用相同的接口(makeDrink),完成不同的功能(只需在子类中重写父类的虚函数便可)。#include<iostream>using namespace std;//多态案例2——制作饮品class AbstractDr
2021-02-02 14:59:21
115
data_argument.py
2020-02-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人