自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深度学习之视频分类项目小记

写在前面,最近一阵在做视频分类相关的工作,趁有时间来记录一下。本文更注重项目实战与落地,而非重点探讨多模/视频模型结构的魔改。

2023-09-03 08:40:58 596

原创 Git之Reset的三种模式

前言使用场景:当commit的内容有错误,需要回撤到之前的某个版本时。git reset一句话概括:git-reset - Reset current HEAD to the specified state意思是可以让HEAD这个指针指向其他的地方。例如我们有一次commit不是不是很满意,需要回到上一次的Commit里面。那么这个时候就需要通过reset,把HEAD指针指向上一次的commit的点。`Git Reset的三种模式Git Reset有三种模式,soft,mixed,hard

2021-07-09 23:09:14 7797 4

原创 深度学习之OCR相关经验记录

写在前面:最近实习阶段做了一些关于OCR相关的内容,在此记录一下Q1:基于深度学习的文字检测方法有哪几种?各有什么优缺点?A:常用的基于深度学习的文字检测方法一般可以分为基于回归的、基于分割的两大类,当然还有一些将两者进行结合的方法。(1)基于回归的方法分为box回归和像素值回归。a. 采用box回归的方法主要有CTPN、Textbox系列和EAST,这类算法对规则形状文本检测效果较好,但无法准确检测不规则形状文本。 b. 像素值回归的方法主要有CRAFT和SA-Text,这类算法能够检测弯曲文本且对

2021-01-15 14:34:34 1225 1

原创 深度学习之OCR识别

写在前面,最近两天在做ocr识别相关内容,趁有时间来记录一下。本文的代码是基于Pytorch框架mobilenetv3基础网络的CRNN+CTC网络实现文字检测与识别介绍文字识别也是图像领域一个常见问题。然而,对于自然场景图像,首先要定位图像中的文字位置,然后才能进行识别。所以一般来说,从自然场景图片中进行文字识别,需要包括2个步骤:文字检测:解决的问题是哪里有文字,文字的范围有多少文字识别:对定位好的文字区域进行识别,主要解决的问题是每个文字是什么,将图像中的文字区域进转化为字符信息。在

2020-12-18 15:00:28 3612 3

原创 深度学习之学习率退火的六种调整策略

记录下SGD优化时几种常见的学习率调整策略,方便后续使用PyTorch学习率调整策略通过torch.optim.lr_scheduler接口实现。PyTorch提供的学习率调整策略分为三大类,分别是a. 有序调整:等间隔调整(Step),按需调整学习率(MultiStep),指数衰减调整(Exponential)和 余弦退火CosineAnnealing。b. 自适应调整:自适应调整学习率 ReduceLROnPlateau。c. 自定义调整:自定义调整学习率 LambdaLR。1 等间隔调

2020-12-10 14:28:55 4396

原创 Python之常用函数小结

进制转换:# 10->2a = bin(int(2)) # a = 0b2 # 2->10str = "10001"a = int(str, 2) # a = 17

2020-11-23 18:52:11 607

原创 Python之Numpy常用操作

Numpy常用操作文章目录Numpy常用操作1.数组初始化2.数组基本运算3.多维数组组合4.数组中查找最大/小索引5.查找符合条件元素索引6.更改数组维度1.数组初始化# 生成特定数组print(np.array([2, 3], dtype=np.int16)) # shape: (, 2)print(np.zeros((2, 3))) # shape: (2, 3)print(np.empty((2, 3))) # shape: (2, 3)p

2020-11-23 18:51:38 119

原创 项目之爬虫入门(豆瓣TOP250)

本文的代码是基于Python的爬虫练手,爬取豆瓣电影top250的信息配套视频:爬虫视频先贴一张爬虫结果图:预备知识浏览器访问网址的步骤是:1)用户发送一个url链接访问请求;2)服务器根据请求返回特定的响应;3)浏览器解析返回的响应(HTML),获取目标信息等展示出来。爬虫的目的就是在3)步时,不全部解析出来,而是只取自己需要的部分保存下来。所以爬虫的整体流程分3步发送url,获取响应数据(html)解析数据保存结果1. 发送url,获取响应使用urllib包参考:

2020-11-19 10:36:50 653 11

原创 深度学习之权重初始化

四种权重初始化方法:把w初始化为0对w随机初始化Xavier initializationHe initialization把w初始化为0:缺点:因为如果把w初始化为0,那么每一层的神经元学到的东西都是一样的(输出是一样的)。在梯度回传阶段,同一层内的所有神经元都是相同的,这样的话神经网络就没有意义了,相当于每一层只有一个神经元。因为在前项传播时,同层的所有神经元都相同,w也相同,在回传计算的梯度时,w的梯度也相同,同层内的神经元同步更新,数值都一样。对w随机初始化

2020-08-10 22:29:15 592

原创 C++的基础知识【面试遇到】

文章目录1. 多态1.1 多态的分类1.2 动态多态满足的条件1.3 动态多态的使用2. 空指针与野指针2.1 空指针2.2 野指针3. const关键字3.1 const修饰指针3.2 const修饰函数4. static关键字4.1 静态成员变量4.2 静态成员函数1. 多态参考:参考视频1.1 多态的分类静态多态:函数重载和运算符重载属于静态多态,复用函数名,但是形参的个数或类型不...

2020-08-06 16:22:05 184

原创 部署模型之Libtorch学习(一)

最近接触到一些工程落地的任务,大体是将pytorch的模型转成Libtorch,去部署到c++工程上,特此记录一下1. Libtorch安装pytorch官网上下载libtorch各个版本的url(1.0 - 1.4)1.5版本官网下载就好 注:安装时尽量pytorch版本和libtorch版本保持一致2. 转换模型import torchimport torchvision# An instance of your model.model = torchvision.models.

2020-06-18 19:35:04 2265

原创 Linux之SWIG安装(无需安装pcre依赖)

官网下载swig-4.0.0.tar.gz;swig-4.0.1下载地址解压;进入解压后的目录,依次运行:bash ./configure --prefix=/usr/local/swig-4.0.1 --without-pcre【注:1. --prefix 后面加上想安装的路径;2.无需安装pcre】配置环境变量vim ~/.bashrc引入环境变量wq!source ~/.bashrc查看版本是否成功swig -version...

2020-05-31 17:50:02 2403

原创 libtorch下tensor与img的互相转换

最近在使用libtorch部署项目,在此记录一下img->tensor,tensor->img。img到tensor//大体思路:img->mat->tensorcv::Mat image = cv::imread("gt_4.jpg");torch::Tensor ten_img = torch::from_blob(image.data, {1, image.rows, image.cols, 3}, torch::kByte).to(device);ten_img =

2020-05-26 11:22:06 2599 5

原创 Git和Github实现代码同步

0. 背景最近需要多人合作来维护一个项目,需要使用Git同步代码到Github,因此来记录一下1. 配置首先你需要有一个自己的github账号,并登入创建一个远程工程,并填写必要信息下载安装Git下载地址:https://git-for-windows.github.io/一路默认安装就好配置Git与github生成一个新的SSH密钥并将其您的帐户关联到Github的SSH密钥列表:a) 找到安装的Git,打开Git Bashb) 输入命令ssh-ke

2020-05-14 22:11:44 346

原创 薄板样条插值(Thin plate splines)的实现与使用

最近项目用到了tps算法,opencv2封装的tps实现起来比较慢,于是用pytorch实现了一下,可以支持gpu加速,就很nice了,在这里记录一下!1. 简介薄板样条函数(TPS)是一种很常见的插值方法。因为它一般都是基于2D插值,所以经常用在在图像配准中。在两张图像中找出N个匹配点,应用TPS可以将这N个点形变到对应位置,同时给出了整个空间的形变(插值)。2. 实现1. opencv的tps使用def tps_cv2(source, target, img): """ 使用cv2自带的

2020-05-14 21:45:21 10885 19

原创 人脸识别+检索项目记录

人脸检索主要分为3个部分介绍:mtcnn、facenet、faiss首先,使用opencv读取视频,每25帧检测一次(1秒25帧,1秒取1次);使用mtcnn处理视频的帧 返回若干个人脸框、置信分及关键点,将图片按人脸框切割并resize成指定大小(160x160),然后利用关键点将人脸对齐,后送入faceNet提取人脸特征(128维),然后l2归一化后存储。最后用faiss对提取的人脸特征进行...

2020-05-04 12:27:48 2499 22

原创 Pycharm远程调试:变量内容加载过慢或不能加载

Preference --> python debugger --> Gevent compatible勾选后重跑

2020-05-03 21:29:54 1853

原创 Pytorch常用总结(持续更新...)

Pytorchdim用法:参考:https://blog.csdn.net/qq_27261889/article/details/88613932### testa = torch.rand((3,4))print(a.size())print(a)b = torch.argmax(a, dim=1) #意味着以行为单位操作所有列,从每一行的所有列中找最大print(b)pr...

2020-05-03 21:13:10 298

原创 语义分割之图像经镜像、翻转、裁剪后像素点的位置映射

1. 问题标注完数据之后,因为数据量太小经常会做一些数据增广,但是经过旋转等操作之后,原先标注的坐标就不再准确,需要重新标注。2. 解决通过计算原标注的边界点随图像增广后的映射位置,可以解决重新标注的问题。3. 实现#1.图像水平翻转,对应坐标映射 def mirror_position(height,width,x,y): #height/width:为图片的高和宽;x/y为像素...

2020-05-03 20:57:21 1288 1

原创 Anconda之常用命令汇总

1. 创建环境并激活(以python27为例)conda create -n python27 python=2.7conda activate python27 注,每个子环境用单独的pip,安装的包也是属于子环境的,最好每次创建子环境后进入使用which pip查看一下pip是子环境的还是base的2. 列出所有环境conda info --envs3. 删除一个环境cond...

2020-05-03 17:48:37 450

原创 Linux之解决终端关闭,程序停止运行问题

问题:实验室电脑使用服务器跑程序时,经常遇到电脑重启或停电等问题导致终端关闭,正在运行的程序无法中断问题。解决:方法1可以使用nohup命令;方法2使用screen(推荐)使用:安装screenyum install screen创建一个screen会话并进入(如会话:me)screen -S me然后在会话内执行需要执行的命令,待程序运行起来,关闭终端,此时程序会继...

2020-05-03 17:07:37 2217

原创 Python之pyclipper使用

问题:在对图片中的重要像素点进行旋转、平移等操作时,部分关键点可能会超出图片的边界,导致关键点的缺失。解决:在网上查到了pyclipper函数,可以使用有界多边形去切割无界多边形,对应到图片可以使用图片的大小作为界限去切割越界的像素点,类似于在图片范围内找到与越界像素点最近的位置来代替它。使用:import pyclipperimport numpy as np#重要的点,有的点可...

2020-05-03 15:13:04 7839 2

原创 Python之np.where的使用

目的:在numpy数组中查找到符合条件元素的索引函数: np.argwhere、np.whereimport numpy as npdata = np.arange(15).reshape(5, 3)print(data) #[[ 0 1 2] #[ 3 4 5] #[ 6 7 8] #[ 9 10 11] #[12 13 14]]print(np.where(d...

2020-05-03 14:35:41 4886

原创 Markdown常用语法汇总(缩进、换行、字体大小等)

文章目录1. 实现缩进2. 实现换行3. 字体大小、颜色、类型、加粗、倾斜4. 超链接5. 图片6. 分割线7. 标题8. 生成目录1. 实现缩进切换至全角入职状态下,直接使用空格键注,全角与半角切换2. 实现换行法1,使用回车法2,<br>文本</br>3. 字体大小、颜色、类型、加粗、倾斜<font size=1> 缩小字体大小为1&...

2020-05-03 11:19:57 3039 1

原创 【Pytorch】nvidia-dali——一种加速数据增强的方法

Tutorials1. Generaldata loading:讲自定义数据加载操作iteratorpipeline构建DALI expressions and arithmetic operations:: 讲可以在tensor上自定义一些+ - * /操作Multiple GPU support:主要讲多GPU(shard_id:显卡id, num_shards:将数...

2020-05-03 10:19:40 7754 7

原创 常用的Opencv函数汇总(持续更新...)

cv.read()、cv.imwrite()作用:读取/写入图片(注意:读取的通道为BGR)使用:#读取图片img_path = "img.jpg"img = cv.imread(img_path) #BGR#写入图片cv.imwrite("img.png", img) 注,在读取操作时,PIL的Image.open函数读取的通道为RGB,速度比cv.read快。cv...

2020-05-02 22:47:29 4958

原创 语义分割之原图与mask的可视化

目的语义分割中,标注或由其产生的mask与原图可以正确匹配,是训练模型的前提。接下来介绍1种可视化方法,可以直观且方便的check匹配的正确性。实现原图(我把gt打印出来了,没影响):mask:代码:imgfile = 'image.jpg' #原图路径pngfile = 'mask.png' #mask路径img = cv2.imread(imgfile, 1)mask ...

2020-05-02 21:41:18 5064

原创 计算机基础【面试遇到】

操作系统并发与并行并发:指宏观上在一段时间内能同时运行多个程序,但任一个时刻点上只有一个程序在处理器上运行,是逻辑上的同时发生(并行更多是侧重于物理上的同时发生)。并行:指同一时刻能运行多个指令,需要硬件支持,如多流水线或者多处理器。同步与异步同步:是所有的操作都做完,才返回给用户结果(等结果产生,才将结果返回)异步:不用等所有操作都做完,就相应用户请求(类似先返回...

2020-04-22 15:13:57 125

原创 语义分割之OCR的评判标准

参考:中文文字检测与识别的评测方法Challenges 4使用的评测方法1. 介绍不同于Challenges 1和2,是Challenges 4标定的框多种多样,并不是水平的,如果像之前那样可能各种匹配形式会很复杂。Challenges 4的评测方法采用简单的计算IoU来进行评测,在Challenges 4中标定框与检测框都为多边形而不是之前的水平矩形了。2. 具体方法针对每张图片,...

2020-04-09 17:12:12 882

原创 语义分割之PointRend论文与源码解读

参考:https://zhuanlan.zhihu.com/p/98508347?utm_source=qq存在问题:一般的语义分割网络,在得到一定分辨率的mask之后,都会直接插值回原像素尺寸,这会导致回插的物体边缘像素十分不准确。以MaskRCNN举例,由于计算量和显存的原因,对于每一个ROIAlign之后的proposal我们一般只会upsample到28*28的分辨率的mask,这...

2020-04-08 10:35:03 3324 86

原创 语义分割之评价指标MIoU介绍

预备知识我们在进行语义分割结果评价的时候,常常将预测出来的结果分为四个部分:True Positive,False Positive,True Negative,False Negative,其中negative就是指非物体标签的部分(可以直接理解为背景),那么显而易见的,positive就是指有标签的部分。下图显示了四个部分的区别:在图上可以清晰的看到,prediction图被分成四个部分...

2020-03-29 14:37:29 4578 2

原创 Python的基础知识【面试遇到】

1. 可变与不可变对象参考:https://blog.csdn.net/qq915697213/article/details/669728361.1 分类可变对象:Number ,String , Tuple不可变对象:List , Set , Dictionary1.2 参数在函数体内改变对参数本体的影响:注:栈中存储的是函数中的变量,堆中存储的是动态生成的值,栈中的变量一般...

2020-03-20 11:47:56 153

原创 语义分割之Deeplabv3源码解读

写在前面,本文的代码是基于resnet50基础网络的预备知识本文提到的output_stride来源于deeplabv3论文,指的是(输入图像的分辨率/特征图的分辨率),可以看出,output_stride越大,说明特征图越小,每个特征图网格包含的原图像素越多,越高层。【论文中resnet50对应 8, resnet101对应16】ResNet50ResNet50包括一个Init Bloc...

2020-03-18 23:39:52 1462 22

原创 语义分割之VOC2012、Cityscapes数据集介绍

PASCAL-VOC2012数据集介绍官网: 参考数据集下载地址:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tarVOC2012数据集分为20类,包括背景为21类,分别如下:Person: personAnimal: bird, cat, cow, dog, horse, sheep...

2020-03-16 23:06:12 3753

原创 Pycharm远程调试报错:undefined symbol: AttachDebuggerTracing

最近PyCharm升级到2019.3版本,然后远程连接服务器,进行Debug的时候,发现会报错AttributeError: /home/wangdepeng/.pycharm_helpers/pydev/pydevd_attach_to_process/attach_linux_amd64.so: undefined symbol: AttachDebuggerTracing解决方法:...

2020-03-16 20:38:49 1400

原创 Linux之常用操作总结

查看cuda版本和cudnn版本cuda 版本cat /usr/local/cuda/version.txtcudnn 版本cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

2020-03-16 08:33:22 161

原创 解决百度云下载过慢、Linux下载百度云数据问题

1. 找到你要下载的百度云链接我这里是:https://pan.baidu.com/s/1uzwqLaCXcWe06xEXk1ROWw2. 第二步找到文件实际下载路径两种方式:使用f12/Fn+f12进入控制台,输入【这种方式,我尝试不好使,网上说好使,可能是以前网盘分享可以无密码分享的原因,现在不行了】具体参考:(function(){ var _id = 3098...

2020-03-15 16:27:52 1638 1

原创 C++之实现优先队列

二叉堆详解实现优先级队列二叉堆主要操作有2个:sink(下沉)和 swim(上浮),用以维护二叉堆的性质。其主要应用有两个,首先是一种排序方法【堆排序】,第二是一种很有用的数据结构【优先级队列】。二叉堆首先,二叉堆和二叉树有啥关系呢,为什么人们总数把二叉堆画成一棵二叉树?因为,二叉堆其实就是一种特殊的二叉树(完全二叉树),只不过存储在数组里。一般的链表二叉树,我们操作节点的指针,而在...

2020-03-14 22:44:03 1262 2

原创 机器学习(西瓜书)读书难点参考资料

7 贝叶斯分类器7.1贝叶斯朴素贝叶斯分类,假设特征相互独立图解贝叶斯定理贝叶斯分类算法【嫁/不嫁实例】7.2极大似然估计极大似然估计7.6EM算法人人都懂EM算法...

2020-03-14 15:02:17 234

原创 目标检测之Mtcnn网络详解(人脸检测)

本文记录了学习MTCNN的一些细节,参考Mtcnn的预测过程(大体流程介绍)这是论文中的原图,揭示了MTCNN预测时的主体流程,主要分为4个部分:图像金字塔、PNet、RNet、ONet首先对test的图片进行resize,得到图片金字塔。按照resize_factor(如0.709,这个具体根据数据集人脸大小分布来确定,基本确定在0.70-0.80之间会比较合适,设的比较大,容易...

2020-03-03 16:47:50 1124

空空如也

空空如也

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

TA关注的人

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