『cs231n』图像定位与检测(下,待续)

图像检测原理

定义:

给出一张图片和几个类别,定位出图片中这些类所有的实例。

思路分析:回归vs分类

由于输出数目不定,所以不能简单的把检测任务像定位任务一样归化为回归任务(检测任务会导致回归层神经元数目是不确定的)

在机器学习中,分类和回归是解决所有问题的两种基本思路,所以我们尝试用分类的思想分析问题。

思路是将所有可能分类的区域送入网络

问题是图片数量太多

直观的解决思路是换个速度快的电脑... ...

实际上新电脑还是不够快... ...

那就只查看一些可能的区域(预处理)

Region Proposals:解决分类输入的问题

可以理解为一种不可知目标检测器,它不关心目标的具体类别,也并不精确,但是可以快速检测出大量选区。

它会寻找整体相似的结构,比如上面的狗被视为一大块白色,眼睛是个黑色小块之类。

Selective Search是Region Proposals的一个经典实现,其原理就是:

  1. 把具有相似颜色和纹理的相邻像素进行合并,形成小区域
  2. 重复的把小区域合并成大区域
  3. 根据不同尺度区域的形状绘制成框

这里评估了各种Region Proposals方法,老师推荐EdgeBoxes方法。

图像检测实现

RCNN

RCNN原理

RCNN整合了图像检测原理中提到的Region Proposals,用于提取特征的卷积神经网络,用于绘制框的回归头,用于分类的SVM分类器,最终实现了检测任务。

RCNN实践流程

训练或下载一个卷积分类模型(比如AlexNet就行)。

Fine-tune模型:

  • 最后一层调整为适合自己的类别(分类数量+背景类别1)
  • 注意这里仍然是传统的分类训练

保存样本图的特征:

  • 运行Region Proposals于所有待检测图上
  • 将选区裁剪为CNN输入大小,使用上一步的模型进行向前传播,保存第五池化层的特征(AlexNet为例,实际就是保存第一全连接层的输入特征)

将上面的特征连同标签作为样本训练SVM分类器。

时间: 2024-08-11 01:17:51

『cs231n』图像定位与检测(下,待续)的相关文章

『cs231n』图像定位与检测

图像处理任务 分类,定位,检测,图像分割辨析: 定位: 每张图片只有单个对象(可以有多个类),后面有提到,一般只要是固定个对象即可,不一定是一个(人体姿势判断部分)由于实现相对简单,所以能划分为定位任务时尽量划分为定位任务 检测: 每张图片可以有多个对象和多个类 分割: 不是简单的画框,而是围出轮廓,本节不予讨论 图像分类&定位 定位任务引入 和分类任务输出一个代表类标签的向量不同,定位任务输出的是描述框的四个数字,而网络评估不使用准确率而使用IOU.[注]IOU定义如下: 矩形框A.B的一个重

『cs231n』计算机视觉基础

线性分类器损失函数明细: 『cs231n』线性分类器损失函数 最优化Optimiz部分代码: 1.差劲的方案,随机搜索 bestloss = float('inf') # 无穷大 for num in range(1000): W = np.random.randn(10, 3073) * 0.0001 loss = L(X_train, Y_train, W) if loss < bestloss: bestloss = loss bestW = W scores = bsetW.dot(Xt

『cs231n』Faster_RCNN(待续)

前言 研究了好一阵子深度学习在计算机视觉方面的实际应用意义不大的奇技淫巧,感觉基本对研究生生涯的工作没啥直接的借鉴意义,硬说收获的话倒是加深了对tensorflow的理解,是时候回归最初的兴趣点--物体检测了,实际上对cs231n的Faster RCNN讲解理解的不是很好,当然这和课上讲的比较简略也是有关系的,所以特地重新学习一下,参考文章链接在这,另: Faster RCNN github : https://github.com/rbgirshick/py-faster-rcnn Faste

『Caffe』图像检测程序(待续)

和图像分类不同,图像检测涉及更多的技术基础,本程序是基于传统的滑窗模式完成检测,当下已经有了最新的基于caffe的RCNN.Fast-RCNN.Faster-RCNN以及SSD框架 ,个中思路不同,不得叹惋前路漫漫.由于接触本部时走了很多弯路,所以给出几个关键词用于学习滑窗检测理论基础学习:overfeat:全卷积网络:图像金字塔:非极大值抑制,当然了,传统的卷积分类网络也要了解. 程序调用逻辑图如下: 库导入以及参数设置部分: 1 # coding=utf-8 2 import numpy a

『cs231n』作业3问题4选讲_图像梯度应用强化

[注],本节(上节也是)的model是一个已经训练完成的CNN分类网络. 随机数图片向前传播后对目标类优化,反向优化图片本体 def create_class_visualization(target_y, model, **kwargs): """ Perform optimization over the image to generate class visualizations. Inputs: - target_y: Integer in the range [0,

『cs231n』视频数据处理

视频信息 和我之前的臆想不同,视频数据不仅仅是一帧一帧的图片本身,还包含个帧之间的联系,也就是还有一个时序的信息维度,包含人的动作判断之类的任务都是要依赖动作的时序信息的 视频数据处理的两种基本方法 - 使用3D卷积网络引入时间维度:由于3D卷积网络每次的输入帧是有长度限定的,所以这种方法更倾向于关注局部(时域)信息的任务 - 使用RNN/LSTM网络系列处理时序信息:由于迭代网络的特性,它更擅长处理全局视频信息 发散:结合两种方法的新思路 上面的具体实现也未必需要3D卷积,毕竟递归网络自己已经

『cs231n』卷积神经网络的可视化与进一步理解

cs231n的第18课理解起来很吃力,听后又查了一些资料才算是勉强弄懂,所以这里贴一篇博文(根据自己理解有所修改)和原论文的翻译加深加深理解. 可视化理解卷积神经网络 原文地址 一.相关理论 本篇博文主要讲解2014年ECCV上的一篇经典文献:<Visualizing and Understanding Convolutional Networks>,可以说是CNN领域可视化理解的开山之作,这篇文献告诉我们CNN的每一层到底学习到了什么特征,然后作者通过可视化进行调整网络,提高了精度.最近两年

『cs231n』RNN之理解LSTM网络

概述 LSTM是RNN的增强版,1.RNN能完成的工作LSTM也都能胜任且有更好的效果:2.LSTM解决了RNN梯度消失或爆炸的问题,进而可以具有比RNN更为长时的记忆能力.LSTM网络比较复杂,而恰好找到一篇不错的介绍文章,和课程的讲述范围差不多,所以这里摘下来(自己截图记录好麻烦),另外找到一篇推了公式的LSTM介绍,这个cs231n的课程并没有涉及,我暂时也不做这方面的研究,不过感觉内容不错,链接记下来以备不时之需. 本篇原文链接 RNN以及LSTM的介绍和公式梳理 按照老师的说法,LST

『cs231n』作业2选讲_通过代码理解卷积层&amp;池化层

卷积层 卷积层向前传播示意图: def conv_forward_naive(x, w, b, conv_param): """ A naive implementation of the forward pass for a convolutional layer. The input consists of N data points, each with C channels, height H and width W. We convolve each input w