自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 YOLACT

论文:YOLACT: Real-time Instance Segmentation - 2019作者:Daniel Bolya, Chong Zhou, Fanyi Xiao, Yong Jae Lee团队:University of California, Davis开源:Github - dbolya/yolactYOLACT(You Only Look At CoefficienTs) 论文主要是提出了一种简单、快速的实时实例分割的全卷积模型,基于一块 Titan Xp 显卡,在 MS COCO 数

2021-05-23 19:08:06 3463 2

原创 flask框架的深度学习模型部署

环境:python3.7第一种:使用Flask远程上传图片到服务器,然后返回一个json目录结构搭建服务器:import flaskfrom flask import Flask,make_responsefrom tools import *import ioimport time# 调用flask初始化一个appapp = Flask(__name__)model = Noneuse_gpu = Truedef load_model(): global mode

2021-05-10 20:09:16 753

转载 Dice系数(Dice coefficient)与mIoU与Dice Loss

Dice系数和mIoU是语义分割的评价指标,在这里进行了简单知识介绍。讲到了Dice顺便在最后提一下Dice Loss,以后有时间区分一下在语义分割中两个常用的损失函数,交叉熵和Dice Loss。 一、Dice系数 1.概念理解 Dice系数是一种集合相似度度量函数,通常用于计算两个样本的相似度,取值范围在[0,1]: 其中 |X∩Y| 是X和Y之间的交集,|X|和|Y|分表表示X和Y的元素的个数,其中,分子的系数为2,是因为分母存在重复计算X和Y之间...

2021-03-22 15:06:17 2428

转载 【C++】判断vector是否为另一个vector的子集

C++不像python自带issubset方法,用来判断一个元素是否为另一个元素的子集,需要自己写一个,但是也不能对vector1的一个一个元素判断是否都属于vector2,这个子集最基本的定义去判断,这样做时间复杂度太大了,如果vector1的长度为m,vector2的长度为n,那么时间复杂度将去到O(m*n)之久,元素一多,这很致命,可以用如下的方式去判断vector是否为另一个vector的子集:#include "iostream"#include "vector"#include "algo

2021-02-26 16:40:13 1886

转载 【C++】判断元素是否在vector中,对vector去重,两个vector求交集、并集

#include <iostream>#include <vector>#include <algorithm> //sort函数、交并补函数#include <iterator> //求交并补使用到的迭代器using namespace std;//打印容器vectorvoid print_vector(vector<int> v){ if(v.size()>0){ cout<<"{";

2021-02-26 16:39:07 492

原创 c++ 排序后如何获取索引排列

给定一个数组arr = {5,16,4,7},我们可以通过sort(arr,arr sizeof(arr)/ sizeof(arr [0]))进行排序。所以现在阵列arr = {4,5,7,16},排序数组的置换索引为{2,0,3,1}。换句话说,原始数组中的arr [2]现在是位置0中排序数组中的最小元素但是如果想返回排序索引表就需要额外加点东西了,a是需要排序列表,b是原始索引表,实质是根据a的value去对b进行重排列。这个[&a](int i, int j)->bool{re

2021-02-26 11:47:25 3799 1

原创 yolov5转rt问题

电脑上先装的cuda10,再装vs2015,由于某些原因再装cuda9,导致vs2015支持cuda9,在现在是改正的。上面说cuda环境是从 .props文件 继承的,所以再重装cuda10,只装vs相关部分,可以看到在vs文件下有CUDA 10.0.props文件解决。注释:要先vs支持cuda,要先装vs,再装cuda,装cuda时会有环境检测到vs,有vs选项的...

2021-02-03 11:55:32 149

转载 目标检测之非极大值抑制(NMS)各种变体

简介最近比较忙,很长时间没分享了.本想着今天把这篇文章全部完成,结果下班回家时忘记车停在哪里,在单位地库找了20多分钟才找到,脑子闷闷的,今天这篇文章中还有点未完成,后期会补上.好了,进入正题.NMS(Non Maximum Suppression),又名非极大值抑制,是目标检测框架中的后处理模块,主要用于删除高度冗余的bbox,先用图示直观看看NMS的工作机制: 从上述可视化的结果可以看出,在目标检测过程中,对于每个obj在检测的时候会产生多个bbox,NMS本质就是对每个obj的多个bbox去冗余,得到

2021-01-21 11:23:53 1808

原创 python的包(geopandas和shapely)

1、使用pip install shapely后使用时出现以下问题2、解决办法使用命令conda config --add channels conda-forgeconda install shapely

2021-01-20 15:34:19 399

转载 深度学习基础loss和目标检测loss总结

深度学习Loss总结–目标检测: 1-5为基础的loss总结 6-:都是目标检测中,比较实用,比较新的loss 1. nn.L1Loss loss_fn = torch.nn.L1Loss(reduce=False, size_average=False)1 文章的最下方会解释什么是鲁棒,稳定解等 2 nn.smoo...

2021-01-18 17:10:35 5578

原创 使用仿射变换实现图像裁剪和letterbox变换

从几何上来讲,图像可以被理解为像素的二维平面,平面上最简单的变换是线性变换,在图像上我们通常叫它们为仿射变换,仿射变换通常由一个2x3的矩阵,之所以用2x3的矩阵,而不由2x2方阵来描述,是考虑到了平移,任意仿射变换都可以分解为以下四类变换的叠加:平移,放缩(尺度变换),旋转和切变。更一般的,在图像几何变换中我们更常用的一般是旋转,裁剪和resize,它们都是仿射变换的具体类型。在用深度学习做目标检测的时候,我们通常需要把检测框检测到的物体,裁剪出来,如果检测框有旋转,我们还需要旋转检测框,并缩放到同一尺寸

2021-01-14 15:00:03 706

转载 Yolov4模型训练规则和技巧

Yolov4模型训练技巧总结Training Yolo v4 (and v3):AlexeyAB官方github介绍:训练对应的yolov4.cfg,cfg/yolov4-custom.cfg,cfg/yolov4-tiny.cfg,需下载对应的yolov4.conv.137,yolov4-tiny.conv.29 预训练模型How to improve object detection:1、修改cfg文件中设置 random=1 ,多尺度训练2、提高网络分辨率,修改cfg文件中的尺寸(heig

2021-01-14 14:26:49 2730

转载 一文看尽物体检测中的各种FPN

一文看尽物体检测中的各种FPNhttps://zhuanlan.zhihu.com/p/148738276?utm_source=wechat_session&utm_medium=social&utm_oi=1276930651766558720&utm_campaign=shareopn&s_r=0

2021-01-08 17:11:39 234

转载 深入浅出YOLOv5

https://mp.weixin.qq.com/s/XEDl37pG8zUvHyJ0iZFCPQ本文作者:江大白https://zhuanlan.zhihu.com/p/172121380

2021-01-08 16:22:44 1177

转载 深入浅出Yolov3和Yolov4

https://mp.weixin.qq.com/s/2AR6ON9CrREYnqnOjLkSnw

2021-01-08 16:21:11 272

原创 梯度累加实现 “显存扩大“

PyTorch中的梯度累加 使用PyTorch实现梯度累加变相扩大batch PyTorch中在反向传播前为什么要手动将梯度清零? - Pascal的回答 - 知乎 https://www.zhihu.com/question/303070254/answer/573037166 这种模式可以让梯度玩出更多花样,比如说梯度累加(gradient accumulation) 传统的训练函数,一个batch是这么训练的:for i,(images,target) in...

2021-01-08 14:07:06 421

原创 c++日志管理

VC-Logger 是一个简单易用的 C++ 程序通用日志组件。设计时着重考虑三个方面:功能、可用性和性能。Logger.h/* * Copyright Bruce Liang ([email protected]) * * Version : 2.0.3 * Author : Bruce Liang * Website : http://www.jessma.org * Project : https://github.com/ldcsaa * Blog : http://www.cnb

2021-01-07 16:22:26 413

转载 C++文件操作——获取当前工作路径的几种方法

1.采用GetCurrentDirectory,用于获取当前进程的当前目录2.getcwd获取当前工作目录,类似上一方法#include <direct.h> #include <stdio.h> char buffer[MAX_PATH]; getcwd(buffer, MAX_PATH); 运行得到"D:\<项目名>\<项目名>"...

2021-01-07 14:50:20 29157

原创 rnn中嵌入(embedding)层的理解

首先,我们有一个one-hot编码的概念。假设,我们中文,一共只有10个字。。。只是假设啊,那么我们用0-9就可以表示完比如,这十个字就是“我从哪里来,要到何处去”其分别对应“0-9”,如下:我  从  哪  里  来  要  到  何  处  去0    1    2    3   4&n...

2021-01-06 11:18:07 2643 4

原创 C++头文件和源文件

//a.h文件void foo();//a.c文件#include “a.h” //我的问题出来了:这句话是要,还是不要?void foo(){return;}//main.c文件#include “a.h”int main(int argc, char *argv[]){foo(); return 0;}针对上面的代码,请回答三个问题:a.c 文件中的 #include “a.h” 这句话是不是多余的?为什么经常见 xx.c 里面 include 对应的 xx.h?

2020-12-25 15:16:09 221

转载 vs的各种目录设置

 好麻烦的设置关系,经常忘记,转载一个 首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件夹以及解决方案和各个项目对应的配置文件包含关系,假设新建一个项目ssyy,解决方案起名fangan,注意解决方案包括项目,此时生成的最外层目录为fangan代表整个解决方案的内容都在这个文件夹内。在这个fangan文件夹内包含有fangan.sln的解决方案配置文件和一个ssyy文件夹,ssyy文件夹代表整个ssyy项目的所有内...

2020-12-23 17:26:31 2960

原创 Pytorch中的仿射变换(affine_grid)

在看 pytorch 的 Spatial Transformer Network 教程 时,在 stn 层中的 affine_grid 与 grid_sample 函数上卡住了,不知道这两个函数该如何使用,经过一些实验终于搞清楚了其作用。参考:详细解读Spatial Transformer Networks (STN),该文章与李宏毅的课程一样,推荐听李老师的 STN 这一课,讲的比较清楚;假设我们有这么一张图片:魁拔中的卡拉肖克·玲下面我们将通过分别通过手动编码和pytorch方

2020-11-16 16:37:39 1424

原创 缩放图像的单应性矩阵

def trans_m(W,H,w_out,h_out,M): S1 = np.array([[w_out / W, 0, 0], [0, h_out / H, 0], [0, 0, 1]]) S2 = np.array([[w_out / W, 0, 0], [0, h_out / H, 0], [0, 0, 1]]) H_sca

2020-11-16 16:29:34 533

原创 仿射变换和透视变换矩阵的参数含义与区别

从直观的角度看,仿射变换和透视变换的最大区别是:一个平行四边形,经过仿射变换后依然是平行四边形;而经过透视变换后只是一个四边形(不再平行了)。仿射变换 仿射变换是把一个二维坐标系转换到另一个二维坐标系的过程,转换过程坐标点的相对位置和属性不发生变换,是一个线性变换,该过程只发生旋转和平移过程。因此,一个平行四边形经过仿射变换后还是一个平行四边形。 所以,仿射= 旋转 + 平移 仿射变换矩阵为: 其中,(x,y)是原图坐标,(x’,y’)是变换后的坐标;m11,m12,m21,m22为旋转量,m13,

2020-11-16 16:22:30 9522 6

原创 OpenCV图像旋转无缺失算法实现

旋转后的新图像包含了原图像所有内容,没有存在像素缺失的情况python版:import cv2import numpy as npfrom math import *img=np.ones(shape=(100,200,3),dtype=np.uint8)img[:,:,0]=255'''对图像进行旋转的函数'''def rotate(image,angle): height, width,channels=image.shape #变换后新图像的大小是原图像旋转..

2020-11-16 16:10:43 673

原创 opencv读取海康相机

海康的摄像头是用rtsp网口通信的,只要调用opencv的videocapture类即可,里面包含网口的通信协议,具体的协议为:“rtsp://用户名:密码@ip地址/h264/ch1/main/av_stream”需要注意的一点是,当你知道了海康的ip地址后,需要将你电脑的ip地址改为和它同一个网段即可,以我的为例,我的摄像头ip是192.168.1.64,那么我的本地ip就改为192.168.1.63,这样便可以达成局域网的效果。。。#include <opencv2\opencv.hpp&g

2020-11-12 14:34:07 1839

原创 OpenCV+海康威视摄像头的实时读取

OpenCV 4.4版本一、海康威视SDK下载以及VS工程配置:下载海康威视SDK:下载SDK2. 新建控制台工程:将工程模式调至Release|X64模式在工程目录下新建一个命名为3rd_x64的文件夹存放三方库,再在此文件夹中新建一个名为HC_vision_SDK_x64库文件夹,并新建include文件夹和lib文件夹(如下图所示),其中的文件分别来自于我们下载的64位SDK中的头文件(CH-HCNetSDK(Windows64)V5.3.1.22_build20170909\头文

2020-11-12 14:17:39 4630 3

原创 数据类型转换

C++ 将string转换成char字符串我们经常会使用C和C++的混合编程,在某些情况下,需要将C++的string,转换成char 的字符串。下面说两种可行的方法,作为总结。data();如:string str=“abc”;charp=(char)str.data();2.c_str();如:string str=“adcd”;char p=(char)str.c_str();c++中char转换为string类型//1、构造函数里有个string(size_t,char)

2020-11-11 10:47:35 136

原创 win api 读写配置文件

#include <atlstr.h>#include <Windows.h>#include <iostream>#include <string>void operate_config() { LPTSTR lpPath = LPTSTR(new char[MAX_PATH]); strcpy(lpPath, ".\\IniFileName.ini"); WritePrivateProfileString("LiMing", "Sex

2020-11-06 15:29:30 271

原创 多线程,两个线程写,一个线程读

多线程,两个线程写,一个线程读,读完删除,(读完删除,再写(注释掉的部分),当两个写的线程没有写,就读的线程一直读写删)1、采用thread类#include <iostream> #include <thread> #include <Windows.h> #include <mutex> using namespace std;mutex mu; //线程互斥对象 struct A1{ int a; strin

2020-11-06 13:59:49 1508

原创 指针或者引用作为形参

作者:573xmcgcg链接:https://www.zhihu.com/question/30000523/answer/46387415来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。使用指针或者引用作为形参是为了解决按值传递可能导致的问题。所以这里再次讲一下使用指针,引用和值作为形参所导致的结果。C++教科书都会用一个交换两个变量的值的函数来举例:void swap(int a, int b); //使用指针和引用的情况下形参类型分别为int和int&{

2020-11-03 09:43:50 1680 4

原创 Windows下编译OpenCV+OpenCV_Contrib

Windows下编译OpenCV+OpenCV_Contrib 0 OpenCV及OpenCV_Contrib1 准备工作2 CMake生成VS2017工程2.1 OpenCV4.0.1 编译配置2.2 OpenCV_Contrib4.0.1编译配置2.3 生成工程 3 VS2017生成解决方案及安装文件4 VS2017配置OpenCV开发环境4.1 配置环境变量4.2 VS2017工程包含(include)目录的配置4.3 VS2017工程库(lib)目录的配置4.4 链接库的配置 5 测试代.

2020-10-20 13:36:38 288

原创 【编程实例】 (在Visual Studio中使用C++创建和使用DLL)

什么是DLL(动态链接库)?    DLL是一个包含可由多个程序同时使用的代码和数据的库。例如:在Windows操作系统中,Comdlg32 DLL执行与对话框有关的常见函数。因此,每个程序都可以使用该DLL中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。这篇文章的目的就是让你一次性就能了解和掌握DLL。 为什么要使用DLL(动态链接库)?    代码复用...

2020-10-19 13:27:39 591

原创 python opencv给视频添加矩形mask以及读取视频中的暂停和退出

以给视频中某个区域添加mask为例import cv2import numpy as npdef image_pre(img): # binary mask mask_threth = 50 coordinates = [[[200, 150], [250, 150], [250, 350], [200, 350]]] coordinates = np.array(coordinates) mask = np.zeros(img.shape[:2], dtyp

2020-10-10 15:59:46 839

原创 pytorch 自己选择模块加载权重

打印一个权重模型的节点名称pretrained_dict = torch.load(r"logs_c_3/LPRNet__iteration_70000.pth", map_location=device)for k, v in pretrained_dict.items(): print(k)加载匹配上的权重lprnet = build_lprnet(lpr_max_len=args.lpr_max_len, phase=.

2020-09-24 11:08:54 1114

原创 pytorch 学习率调整

def adjust_learning_rate(optimizer, lr, gamma, step): lr = lr * (gamma ** (step)) for param_group in optimizer.param_groups: param_group['lr'] = lr return lr调用optimizer = optim.Adam(net.parameters(),lr=lr)for epoch in range(Start...

2020-09-24 10:56:04 374

原创 人脸检测

由于在自然场景的图像中,人脸的尺寸大小不一的。而所谓的尺度不变性则是指模型对于图像中不同尺寸大小脸的检测均具有良好的鲁棒性,很多模型检测尺寸比较大的人脸具有良好性能,然而却不能检测到尺寸小的人脸。对于这一问题,有些论文(例如MTCNN和HR)中的思路则是通过构造图像金字塔,但是其带来缺点则是运行inferrence的时候,每检测一张图像都要对该图像的构造一次图像金字塔结构,且每层的金字塔图像均进行一次前向运算,这显然是会对模型的耗时带来影响。而SSH通过在三个不同深度的卷积层feature map 上,拼接

2020-09-23 10:28:42 219

原创 djongo的ip设置

在与项目名同名的python包中,urls.py (url.py 文件用于记录 Django 项目的 URL 映射关系,它属于项目的基础路由配置文件,路由系统就是在这个文件中完成相应配置的,项目中的动态路径必须先经过该文件匹配,才能实现 Web 站点上资源的访问功能。)一、from django.contrib import adminfrom django.urls import pathurlpatterns = [path(‘admin/’, admin.site.urls),]刚开始,访

2020-09-21 16:15:00 221

原创 Python与anaconda之间的环境的选取问题

        anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda 的下载文件比较大(约 515 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和 Python)...

2020-09-18 16:50:58 1094

转载 Git 提示fatal: remote origin already exists 错误解决办法

今天使用git 添加远程github仓库的时候提示错误:fatal: remote origin already exists. 最后找到解决办法如下: 1、先删除远程 Git 仓库 $ git remote rm origin2、再添加远程 Git 仓库 $ git remote add origin [email protected]:FBing/java-code-generator如果执行 git remote rm origin 报错的话,我们可以手动修改gitconfig文

2020-09-18 14:41:52 129

空空如也

空空如也

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

TA关注的人

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