自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

herr_kun的博客

小硕一枚,热爱生活,热爱交友,童叟无欺

  • 博客(110)
  • 资源 (2)
  • 收藏
  • 关注

原创 Leetcode 刷题 一点点心得

常用到的几个 包1、from collections import dequepython 中的 collections 模块里面包含了很多较为高级的数据结构,比如 队列 哈希表等,可以在刷题的时候使用队列的使用方法初始化 a =deuqe() or deque(list) ,pop()为弹出最右端(队尾),popleft为弹出队首元素(常用),len(),append(),2、import heapq最大/最小 堆的基础使用方法初始化/添加:q = [xxxx] heap.h

2020-12-03 16:29:27 188 1

原创 Keras模型中有趣的技巧

Keras 在实际使用中除了常规的模型搭建和训练外,还有一些能加快开发效率的小技巧1、K.function 在调试的时候特别方便,直接就可以获得某一层的输出了,像是函数方法一样,直接输入就是照片 array,输出就是对应的层的向量2、Model(input, output)直接在原有模型的基础上定义新的模型,一般用于部署前的准备,改变模型的输出,或者改成多个输出3、CSVLogger 可以在训练的时候记录每个 epoch 的 LR ACC loss等等,包括训练集和验证集的,在训练的时候就可以随时.

2020-11-26 11:24:44 94 2

原创 REID重识别的一些思考-项目/工程实现(四)

REID目前是一个较为火热的研究热点,不管是在业界还是在学术界,在工业界实现项目的时候最大的问题就是如何快速设计一个baseline,并且是一个strong baseline,后续可在次基础上进行更改和优化。由于不同的项目,不同的数据有各自的特点,所以这里只是说一种常见的baseline,不一定对所有的项目都是最好的,只是说优化潜力较大。该方案来自 paper: 《 A Strong Baseline and Batch Normalization Neck 》该篇paper虽然是一个学术pape.

2020-11-23 17:59:43 109

原创 大数处理问题汇总

1、找出中位数思想: 划分区间,遍历数组将对应的数据放在对应的桶中,并统计每个桶中的元素数量,只要两次读取全部的数据就可以重点/细节: (1)、两次读取数据,第一次划分区间划分的比较细,第二次划分就可以粗一点划分区间的思想另外一个应用:找出最大的重复的URL\IP\WORLD,首先就是进行一个映射hash(因为对字符无法进行大小的划分,数字最好),然后进行大区间的划分,再划分更小的区间。(2)、对数据的大小以及内存的计算(1G=10^9byte 1亿=10^8),具体的计算可以看这个,里面还有

2020-10-19 15:45:10 183

原创 center loss的完全理解以及实现

最近项目中需要 center loss 提升模型的效果,但是 center loss 的实现就有点不确定,看了很多的博客,基本都是臆测,还是看源码来的实在。下面就大致说下 center loss 的实现:1、原理:原理这块大家可以参考别人的博客,或者paper,这里就简单叙述下:让得到全连接层向量距离对应类别中心的距离最小2、问题类别中心是动态变化的么?如何进行变化?(1)是每个epoch结束后使用所有的样本重新聚类计算得到样本中心么?(2)在每个batch内计算动态变化得到聚类中心.

2020-07-29 16:29:38 755

原创 keras model.save() OSError: Unable to create file(error message = ‘‘)

前言:最近再保存模型的时候,突然出现了上述的错误,一直以为时模型的问题,用了最简单的load,然后save的方式还是出错,最后发现是包依赖的问题很大的可能是 h5py keras的版本不一致的问题修改之前(出错) h5py==2.10修改之后的可行版本 h5py==2.7.1...

2020-07-27 19:07:54 351

原创 A Strong Baseline and Batch Normalization Neck for Deep Person Re-identification REID文章解读

文章解读:这两篇文章 A Strong Baseline and Batch Normalization Neck for Deep Person Re-identification Bag of Tricks and A Strong Baseline for Deep Person Re-identification 主体思想是一样的,但是区别在于第一篇文章更为全面,而且还分析backbone改动时的准确率的变化等,第二篇文章里面多的就是一些baseline具体训练策略和数据预处理A St

2020-07-20 19:23:07 648

原创 REID重识别的一些思考-转载 MAP 的计算(三补充)

ReIDReID指Re-identification,常翻译为重识别。ReID任务本身分类很多,本文只讨论基于图片的ReID任务中single-gallery-shot这一最简单的情况。重识别任务可以描述如下:给定一个Gallery集合GGG,包含有NNN张图片,分属MMM个ID(identity)。给定一张未知ID的图片做query(或者叫probe), 计算出下式的结果:max(Similarity(query,gi)),i∈1,2,3,...,N,gi∈Gmax(Similarity(query, g

2020-07-20 18:07:15 96

原创 REID重识别的一些思考-MAP指标的计算详细(三)

前言:网上搜索reid map的计算,会出现很多版本的计算方式,有很多中计算方式,但是这么多哪一个是正确的,看了这么多版本该信谁的?所以还是去Google找资料,看paper,下面是我的个人理解,希望能帮到你MAP的计算在目标检测中和图像检索中稍有不同首先说一下 REID的评价标准,常见的有 top-1 top-5 top-10 CMC MAP评价指标,那么为什么要有这么多的评价指标,都是干嘛的,简单来说top-n的指标大家都知道是干嘛的,但是这个指标不能很好的评价模型的好坏,所以这里就提出了另外的.

2020-07-20 18:06:26 1048

原创 open-set recognition(OSR)开集识别的一些思考(四)

前言:目前基于CNN方式的开集识别的方案最为经典的要数openmax方法,但是目前所能查到的资料对openmax解读的资料实在是太少,所以这里通过对openmax的实现过程进行讲解以达到理解的目的下述的观点和叙述来自个人理解和对论文的解读-Towards Open Set Deep Networks softmax是分类网络中最常见的最后一层的激活函数,用于概率值的生成,但是之前的文章说到过因为softmax的特性,导致不太适用于开集识别,所以这篇文章中提到了openmax,其可以认为是softma.

2020-07-15 15:06:10 2504 6

原创 open-set recognition(OSR)开集识别的一些思考(三)

前言:在之前的博客中提到了开集识别的一些方案,主线是基于DNN方式,但是基于ML方式的解决方案有很多是很经典的,所以这里介绍下基于ML的方式基于ML的方式 SVM based (待展开) Sparse Representation based (待展开) Distance based (待展开) Margin Distribution based (待展开)…...

2020-07-15 14:15:10 975

原创 open-set recognition(OSR)开集识别的一些思考(二)

前言:在开集识别的学习中,也是进行的一步步的摸索,一开始发现模型上线后变现不是很好,后来找到原因就是因为线上的图像太复杂了,没有开集识别的模型是不可靠的,所以就进行了开集识别,接下来记录下学习的记录供大家一起学习,也供自己后续查阅1、开集识别学习路径 开始根据自己的遇到的情况进行查询,发现开放长尾识别问题中的开放问题就是目前自己遇到的问题,下面这张图很清晰的展示常见任务的划分标准,后续查询到了自己遇到的问题可以更为具体的归属为开集识别的问题,所以后续一直查询开集识别的一些问题,Google Yout.

2020-07-15 11:31:32 1412 5

原创 open-set recognition(OSR)开集识别的一些思考(一)

开集识别是一个在现实世界中很常见的一个问题,但是这个问题只有你在真正实施项目的时候才会遇到,使用公开数据集是不会遇到这个问题的。当你看到这篇文章的时候就默认你大致了解开集识别是什么了下面就是干货了开集识别 open-set recognition (OSR)1、什么是开集识别:1) 什么是闭集识别: 闭集识别:训练集中的类别和测试集中的类别是一致的,最常见的就是使用开放数据集进行训练,所有数据集中的图像的类别都是已知的,没有未知种类的图像。2) 所谓的开集识别 白话说就是 在一个开放的数.

2020-07-15 10:32:13 1497

原创 原理分析-CAM模型可视化(可解释)

> 前言:模型在训练的时候,你不知道模型到底学到了什么,就像是你教一个孩子学习东西,最终你给一两个示例,孩子分对了,但是孩子真的学习到你想要的区分特征了么,也就是说 get 到你的点了么?模型可视化就是做的这件事情模型有很多的可视化方案:直接可视化:最容易被想到的一种方式就是对特征图进行可视化,想法是对的,直接对 feature map 进行粗暴的 resize, 或者更为精细点的操作是进行反卷积,将 feature map 放大至和原图一样的大小,但是这样智能算是 特征图的可视化,并非模型的可视

2020-06-28 15:44:58 2790 1

原创 semi-triplet loss在线难分样本选取深入理解

> 前言:在做REID任务的时候经常会用到triplet loss,后续我们常常会进行模型的优化,其中就包括难分数据的挖掘,也就是让模型更加关注难分样本。两种方式去实现:1、离线的方式,就是在挑选样本的时候进行,一种是在线的方式,其本质上就是在训练的时候进行难分样本的挑选,离线的方式更好实现一些,但是造成的后果就是不方便,每一个epoch结束时就要单独就行计算2、在线的方式直接就在训练的过程中就进行处理了,所以现在大家都更青睐在线的训练方式使用trilet loss进行模型的搭建和数据的组织很

2020-06-24 10:37:13 374

原创 REID重识别的一些思考-REID场景介绍-初探(一)

前言:该博客较为适合刚开始从事REID研究的同学,从头介绍了什么是REID,REID的应用价值是什么,并且介绍了一个Baseline,通过这篇博客你应该对REID有了一个大致的了解,避免了很多的弯路。1、什么是REID?对于行人和车辆重识别可能称之为跨境重识别更容易理解一些,即在不同的镜头下,识别同一个个体,实现某一个个体的再次识别。听起来像是多分类,但是其本质是检索,而不是分类,后续会提到他们之间的区别。2、REID的应用之一就是进行人轨迹的追踪和串联,比如在某个区域通过不同摄像头对同一个人的识.

2020-06-23 19:26:36 1008

原创 keras load_model 加载模型出现的错误

Keras在load_model 时,如果模型中含有自定义Layer或者损失函数的时候会报错先看下load_model 的函数定义:法一:利用 custom_objects 参数#假设模型包含一个 xxxxLayer 自定义层或者 xxxxloss自定义lossfrom keras.models import load_modelmodel = load_model('./model.h5', custom_objects={'xxxxLayer ': xxxxLayer })法二: 利用

2020-06-23 10:54:41 1256

原创 MAP在目标检测和图像检索中的计算(详细)

前言:该博客没有进行IOU Precision Recall等指标的计算讲解,默认这些基本知识已经掌握,这里只对 map 中比较难懂且和其他博客中存在歧义的部分进行讲解。目标检测中的 map 计算:举个栗子:Image 1:预测出了5个框(在一定的阈值下,且经过了NMS等处理),真实的标注信息只有三个框(也就是只能有3个correct 框),将5个预测框通过置信度进行排序,然后分别从上至下计算 precision 和 recall ,得到这些值就可以绘制 P-R 曲线了,计算面积就是最终的AP.

2020-06-22 15:56:19 1270

原创 model checkpoint保存模型出错问题分析

问题描述:model在训练的时候不断调用 checkpoint 进行模型的报错,但是在调用的时候回报错:TypeError: No conversion path for dtype: dtype(’<U49’),当设置只保存模型权重的时候又会报错:RuntimeError: Unable to create link (name already exists),综合应该是H5文件读写的问题问题分析:针对只保存模型权重时的报错:RuntimeError: Unable to create lin

2020-06-19 14:47:39 943

原创 AttributeError : Layer model has multiple inbound nodes

前言:当在一个baseline上做修改(改变原有结构,增/减一些自定义网络),模型重载并获得输入输出的时候容易出一些问题,就比如这个error:AttributeError: Layer model has multiple inbound nodes,hence the notion of “layer output” is ill-defined.Use get_output_at(node_index) instead.这个问题主要由于TF的图造成的,比如下述对网络的定义,仅仅是将原有的d.

2020-06-09 19:07:57 734

原创 faster json序列化

前言:在实际的json序列化过程中,json的dump(dumps)方式比较慢,浪费时间,有没有一种比较快速的替代方式(非自己手动实现并优化)? 使用优化后的orjson库代替json库在实际的项目中 当我们序列化一个矩阵时,以CV任务中传入图像数组为例,比如传入的数组大小为 [10,640,640,3]下面是两个不同json库的dumps时间:1、Json2、Orjson3、Conclution总的来说,orjson库的处理方式比json的处理方式快了约14倍(在该例子中),可以作为j.

2020-06-02 11:07:38 114

原创 Mobilenet_v2的参数alpha和depth_multiplier

Mobilenet_v2 是一个十分常用的轻量级网络,很多人直接使用的时候会忽略有两个参数 alpha和depth_multiplier,这两个参数也控制着网络的结构,那么这两个参数什么意思?首先看下Mobilenet_v1中提到的可分离深度卷积,该卷积可以分为两部分:depth_wise卷积 and point_wise卷积,这两个参数也就对应着这两个卷积。# 1、先进行 depth_wise 卷积 x = DepthwiseConv2D((3, 3), .

2020-06-01 16:46:55 1080 2

原创 多模型相互嵌套调用,图冲突BUG(keras/tf)

前言:在普通的任务中,我们经常使用训练好的模型进行预测推理,单模型的推理任务处理版本的问题应该不会存在其他的BUG。但是在实际的业务处理场景中,往往会使用多个模型共同来处理,一个模型的输出可能就是另一个模型的输入之一或者是另一个模型的数据处理方式。场景:模型B训练地过程中需要A模型不断地参与使用错误error: tensorflow.python.framework.errors_impl.InvalidArgument:xxxxxx1、Younger的处理方式:(适用于模型比较简单,命名较为规范.

2020-05-12 16:03:47 456

原创 图像分辨率、像素总数、文件大小之间的详细区别

一张3456*2048的图像指的是其总像素数为(3456*2048),其中长边有3456个像素,宽边有2048个像素。我们所说的手机1500万像素等概念就是源于这个乘积得出来的数值。分辨率指的是每英寸中含有的像素点的个数,即像素密度单位为(dpi:dots per inch,像素点/英寸)或者也有称之为点密度(ppi),视网膜屏就是因为ppi较高才这样称之为的。那么图像的一张3456*20...

2020-03-04 10:25:47 1822

原创 keras中的BN层Dropout层的小坑(方差-learning_phase)

BN层Dropout层都是为了防止模型过拟合而设计的结构,特别是BN层,在其出现之后模型的表现又上升了一个台阶,但是在实际的使用过程中会发现训练和预测的时候这两个层总是出岔子那么是什么岔子:首先来解决好解决的:1、Dropout层-问题需要先知道的是Dropout层在训练的时候是随机让一定比例的节点失活,不参与该批次的训练,但是在预测的时候,所有的节点参与预测,只是每个节点的值乘以设置...

2019-12-18 17:50:14 1951

原创 python 显式指定导入模块(优先级)

在python中,一个文件夹和模块一样,可以被当作模块进行导入。我目前遇到的两种需要显示指定导入的模块有两种情况:**1、**有两个相同但是不同版本的包同时存在,需显示指定调用某一个版本的包**2、**远程调用服务器上的某一具体的包。因此就需要 显示的指定该包文件对应的地址。这里有三个方法:来自 sys 模块1、sys.path 显示的是当前sys.path的搜索路径,搜索顺序优...

2019-12-12 10:19:51 413

原创 Resnet网络中数字的含义以及连接方式

1、Resnet18 Resnet50 Resnet101 Resnet152 网络中的数字代表什么?2、残差网络分支如何和原有主分支进行连接?1、Resnet18 Resnet50 Resnet101 Resnet152 网络中的数字代表什么?其中的数字18 50 101 等分别代表的是卷积层+全连接层的层数,并不是全部的层数,也不是单纯的卷积层的个数,其中激活层,BN层...

2019-11-29 16:12:52 1766

原创 图像分辨率、像素总数、文件大小搞清楚

问题来之前需要了解的基础:一张34562048的图像指的是其总像素数为(34562048),其中长边有3456个像素,宽边有2048个像素。我们所说的手机1500万像素等概念就是源于这个乘积得出来的数值。分辨率指的是每英寸中含有的像素点的个数,即像素密度单位为(dpi:dots per inch,像素点/英寸)或者也有称之为点密度(ppi),视网膜屏就是因为ppi较高才这样称之为的。那么图像...

2019-11-27 16:43:18 1528

原创 ELA图像处理-图像篡改

前言:在做图像篡改的时候需要用到ELA图像信息,该图像的主要原理是因为篡改图像区域的图像信息和原有图像不同,将图像经过一个固定质量压缩保存后,两个不同区域表现不同,据此来得到篡改区域的位置。下面是具体的代码: # 使用 PIL 模块进行处理 im = Image.open(filename).convert('RGB') im.save(resaved_filename...

2019-11-26 16:21:48 2480

原创 opencv对图像进行处理的方法

一个缺陷检测数据集:德国的DAGM2007opencv中文网站(介绍详细,目录清晰,不多)图像颜色空间变换:图像在不同的颜色空间有可能会突出不同的特征,比如这里进行了RGB HSV GRAY YCRCB颜色空间的变换img_BGR = cv2.imread(img_path) # BGR plt.imshow(img_BGR);plt.axis('off');plt.title('BGR...

2019-09-10 15:15:35 1808

原创 lambda的嵌套表示

1、简单使用:func=lambda x : x+2func(2) # 输出 42、复杂使用(1)闭包def get_y(a,b):return lambda x:ax+by1 = get_y(1,1)y1(1) # 结果为2当然,也可以用常规函数实现闭包,如下:def get_y(a,b):def func(x):return ax+breturn ...

2019-08-23 20:07:41 2258

原创 增量学习的理解(迁移学习,fit_genrtor区别)

近日看到了有关增量学习的理解,一开始以为增量学习就是Keras中的fit_genetor,相当于分批次进行学习,防止数据量太大造成内存崩溃而无法学习,并且增量学习可以结合pandas中每次读取一定数目的数据的功能来进行传统机器学习(SVM,lightgbm等)和神经网络的学习。后来了解到增量学习分为三种:增量学习可以分为3类:样本增量学习(SIL),类别增量学习(CIL),特征增量学习(F...

2019-05-14 23:36:47 3408 1

转载 注意力模型(AM)可广泛应用于CV / NLP

  最近一直在研究深度语义匹配算法,搭建了个模型,跑起来效果并不是很理想,在分析原因的过程中,发现注意力模型在解决这个问题上还是很有帮助的,所以花了两天研究了一下。  此文大部分参考深度学习中的注意力机制(2017版) 张俊林的博客,不过添加了一些个人的思考与理...

2019-05-14 10:55:11 995

原创 QT将基类从QDialog直接提升为QWidget窗口

前言:有时候建立新工程的时候把窗口的基类设置为了QDialog,比如说我,因为开始入门的时候一直是继承QDialog,所以后面也没有再注意到这个问题,后面发现QDialog实现的窗口不能实现缩放,所以后来就造成了现在的困扰,想要将其提升为QWidget窗口(不用移植到新工程)。QDialog就是一个简单的消息框,和QMainwindow一样继承来自QWidget,先来看看三者之间的区别。首...

2019-05-11 16:21:21 2649

原创 神经网络中Dropout和Padding

1、PaddingPadding有两种方式,same和valid,其中same比较常见,因为是进行了填充,对图像的每一个像素点都进行了卷积操作,而valid有可能扔到一些边缘信息。两种的计算方式不同:2、DropoutDropout有意思的是每次训练都会随机扔到一些节点不进行训练,已达到防止过拟合的效果。当然在预测的时候是所有的节点都参加进行的预测,但是在预测的时候所有节点的权重要乘以一个...

2019-05-06 10:45:55 920

原创 爬取年报数据、解析PDF提取数据、分析代码(巨潮 Python)

利用Python爬取巨潮网页上的年报等数据,通过解析下载的PDF文件,提取其中有用的数据,并写入到本地文件中。主要分为几个模块:1、从Excel或者列表或者TXT读取股票代码2、根据股票代码和年份等信息爬取特定网页中的信息,获得年报数据所在的网络地址3、根据年报数据的网络地址,下载对应的到本地4、解析本地的PDF文件,通过关键词检索到对应的value5、添加多线程,一边对股票代码进行...

2019-04-30 17:33:36 23995 26

转载 Spyder运行Pyqt出现kernel died重启问题

转自:https://blog.csdn.net/MSDN_tang/article/details/80098412 Spyder的确是一款体验不错的IDE,不过最近在其中反复运行或调试有关pyqt的代码时,总是会提示”kernel died,restarting”,这就需要等待一段时间,内核重启之后才能运行程序,这会消耗我们不少的时间和兴致,后来在stackoverflow和git...

2019-04-29 23:39:47 1666

原创 加快pip包安装速度(使用镜像)

使用豆瓣的镜像,下载速度会快很多:pip install xxxx --user -i https://pypi.douban.com/simplepip install xxxx==sss --user -i https://pypi.douban.com/simple 安装指定版本的包...

2019-04-24 14:57:47 1662

转载 神经网络结构可视化及网络结构绘制工具

介绍几个好用的神经网络画图以及可视化的工具(1)神经网络可视化工具:Netron(2)画神经网络结构图工具: NN-SVG 、ConvNetDraw1、神经网络可视化工具:Netron地址:下载地址 netron参考:参考2、画神经网络结构图工具: NN-SVG 、ConvNetDraw地址:下载地址 参考:参考...

2019-04-19 21:35:07 4203

原创 YOLOV3-项目解析+关键点理解

源代码GitHub地址:https://github.com/qqwweee/keras-yolo3作者使用自己数据集实现:yolo v3-训练自己的数据(step by step)项目结构思维导图:1、yolov3最后的输出为三个特征层的输出,并没有进行一个连接,分别是13*13*255(255=3*(5+80类)),26*26*255,52*52*255三种feature...

2019-04-15 16:05:20 4720 6

REID详细介绍-PPT-PDF

一篇很详细的REID介绍,配合大量精美的插图。包含REID的介绍,新零售场景下的应用举例,以及strong baseline的介绍等

2020-06-23

casia_fileNamesCorrection.zip

casia数据集中有的图片的命名错误,常见的为合成后的图像与原始图像的文件名不匹配,通过该表可进行对应文件名的更改(包含两个表:casia1 和 casia2)

2020-05-07

空空如也

空空如也

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

TA关注的人 TA的粉丝

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