-
对象检测(Object Detection)的目的是”识别对象并给出其在图中的确切位置”,其内容可解构为三部分: 识别某个对象(Classification); 给出对象在图中的位置(Localization); 识别图中所有的目标及其位置(Detection)。 本文将介绍滑动窗口这一方法. 滑动窗口 滑动窗口是这些方法中最暴力的一个.简单来说,就是暴力枚举侯选框的尺寸和位置,每次crop得到一张小图,将每个小图送进后面的分类器进行分类. 早年后面通常会接一个计算量比较小的分类器,比如SVM,随着算力的提升,现在常常后面会接CNN. 值得一提的是,原始的滑动窗口方法是将每个小图,分别放入后面的分类器.但是实际上,小图和小图之 …
Read More -
记录一些一个没有之前没有接触过caffe/caffe2的人为了添加自定义的op 到caffe2需要做的工作. 首先参考caffe2 tutorial,随便跑个op来试试,不妨以比较简单的 Accumulate_op 为例子. 这个op的作用就是计算Y=X+gamma*Y, 其中X为输入,Y为输出,gamma是参数. 跑起来这个运算所需要的代码如下: from caffe2.python import workspace, model_helper import numpy as np # Create the input data data = np.arange(6).reshape(2,3).astype(np.float32) …
Read More -
NMS是为了在诸多CV任务如边缘检测,目标检测等,找到局部最大值 其主要思想是先设定一个阈值,然后计算检测框的IOU(所谓IOU,也就是intersection-over-union,指的是相交面积除以相并面积,是来衡量overlap程度的指数)。如果IOU大于阈值,说明overlap过大,我们要通过某种算法来将其剔除。 比如下图,在经典的人脸识别任务中,出现了多个检测框,每个检测框有一个置信度confidence,我们通过某个算法,保留一个最好的。 顺便说一下算法的实现步骤把,其实不太重要。就是贪心。 其基本操作流程如下: * 首先,计算每一个 bounding box 的面积: * (x1, y1) ⇒ 左上点的坐 …
Read More -
被师兄(同事?)普及了一番实验规范orz... 我还是太年轻了 所谓的一个fc的版本是右边的.一个放着不动,另一个在sequence_len(10)的维度上做ave,然后再expand成原来的维度.如下图. 任务命名规则: 如D1V2_a_1,D1表示使用第一个数据集,V2表示是第二个大版本,a表示在V2大版本上的微调,最后的数字表示这是第几次运行该任务(跑三次以减少波动的影响) logdir的地址为:/mnt/lustre/renkuanze/Data_t1/reid/log/{$jobname} * D1:使用ilivids 数据集 * D1V1表示最初始的 baseline model * D1V2表示改为使用一个fc * …
Read More -
CMC曲线全称是Cumulative Match Characteristic (CMC) curve,也就是累积匹配曲线,同ROC曲线Receiver Operating Characteristic (ROC) curve一样,是模式识别系统,如人脸,指纹,虹膜等的重要评价指标,尤其是在生物特征识别系统中,一般同ROC曲线( 多标签图像分类任务的评价方法-mean average precision(mAP) 以及top x的评价方法)一起给出,能够综合评价出算法的好坏。 转一篇通俗易懂的解释: Shortly speaking, imagine that you have 5 classes. For …
Read More -
记录一些常用的...总去查文档也是有点麻烦 * tensor.view 的作用是reshape 比如 a = torch.range(1, 16) 得到一个tensor that has 16 elements from 1 to 16. 在a=a.view(4,4)就得到了一个44的tensor。 需要注意reshape之后元素的个数不能改变(16==44) 参数-1的作用是,我懒得算这一维度应该是多少,(由于元素个数不能改变)所以希望自动被计算。**需要注意的是,只有一个维度可以写-1。 **不过view和reshape有些区别:reshape always copies memory. view never copies …
Read More -
所谓end-to-end 神经网络,更多是一种思想。 这种思想的核心是,比如对于图像处理,输入原始图像数据,输出的是直接有用的结果(有用取决于具体的任务,比如自动驾驶) 也就是尽可能少得减少人为干预,使训练是end (原始数据) to end (对应用问题直接有用的结果) 端到端指的是输入是原始数据,输出是最后的结果,原来输入端不是直接的原始数据,而是在原始数据中提取的特征,这一点在图像问题上尤为突出,因为图像像素数太多,数据维度高,会产生维度灾难,所以原来一个思路是手工提取图像的一些关键特征,这实际就是就一个降维的过程。 那么问题来了,特征怎么提? 特征提取的好坏异常关键,甚至比学习算法还重要,举个例子,对一系列人的数据分类, …
Read More -
1709.08325 Reid问题指的是判断一个probe person 是否在被不同的camera捕获的gallery person 中出现。 通常是如下情景:给出一个特定camera下某个特定人的probe image 或者 video sequence,从其他camera处询问这个人的图像,地点,时间戳。 ReID问题至今没有很好得解决,主要原因是,不同camera下,人的姿势(pose),观察的视角(viewpoint) 变化太大了。 传统方法主要在两个大方向上努力: 1. **用一些在图像上抽取的不变量来作为人的特征feture** 2. **去学习一个不同的距离度量方式,以至于同一个人在不同camera之间的距离尽可能 …
Read More -
原始论文 DNN在很多问题上效果很不错,但是由于深度和宽度过大,导致需要的执行时间和内存过大。我们需要讨论一些能快速执行并且对内存的需要不大的模型。 已经有很多方法来做这件事,比较重要的是Model distillation(模型蒸馏) 基于蒸馏的模型压缩的有效性是基于一个发现:小的网络有和大的网络一样的表达能力,只不过是更难以训练找到合适的参数。 也就是说,难点在于优化(以找到合适的参数)而不在于网络的尺寸。 蒸馏的模型的做法是把一个有效的(deep or/and wide) network 作为teacher network,让一个size 较小的 student network 模仿teacher network. 这样做的好 …
Read More