Faster_RCNN 笔记
Faster RCNN是在2016提出的用于目标检测的网络结构,并且与之前的网络不同,已经将特征提取(feature extraction),proposal提取,bounding box regression,classification都整合在了一个网络之中。由于RCNN的准确度很大一部分依赖于proposal区域的选择,所以候选区确定尤为重要。Faster RCNN中的RPN是一个最为突出也是最重要的部分。
Faster_RCNN的基本结构
1.Conv layers
Faster RCNN首先使用了基础的Conv layer(conv+relu+pooling)提取输入图像的feature maps。提取出来的feature maps共享用于后续的RPN层以及全连接层。
2.RPN(Region Proposal Networks)
RPN是Faster RCNN中最重要的部分,用于生成region proposals。RPN中引入了一个重要的概念anchor,通过每个位置的anchor(共有k个选框生成),输出2k个score评估选框是否为目标,4k个score确定选框的位 ...
C++期末复习
第一章 引论
面向对象的核心概念:
数据封装:对内保护信息加强联系,对外提供访问接口。
继承:整体和部分的关系,一般和特殊的关系。基类和派生类。
多态性:一个符号有多种含义。表现为函数重载(普通函数重载,运算符重载)
泛型编程:主要依托模板(Template)
第二章 数据类型
指针
12345678const作用于指针三种形式:1)const int *p;p是变量,但指向了常量;2)int * const p;p是常量,但指向了变量;3)const int * const p;常量指针指向了常量
引用&
引用就是对象的别名
独立引用必须初始化
参数引用->实参和形参相同
非常量引用不能指向常量
引用作为返回类型(避免内存复制,直接返回对象)
123456789int &f(int &i){return i;}/*返回一个左值对象(左值 != 左值引用)可以出现在=左边++f() (√) b = f() (√)f(a)返回a这个对象 f(2) (X)int* g();*g() = (√)*/
运算符
new ...
CS231n-note-5
图像识别和分割分割语义分割只将像素进行分割并贴上对应的分类标签。
Idea-1sliding windows,利用滑动窗口来对个像素进行分类,计算量太大
idea-2全连接卷积神经网络,可以生成一个CxHxW的张量,对每个像素进行评分,数据集获取昂贵且困难。并且模型训练代价很高。
idea-3不采用全连接(同尺寸)卷积神经网络,而是采用downsampling和upsampling,在中间层可以用池化或者跨卷积来降低清晰度,但是可以让网络建立的很深。
upsampling去池化(Unpooling)
Max Unpooling
将池化层和去池化层相对应,其最大元素的相应位置将会被记录。
转置卷积正常卷积和跨卷积(可以进行downsampling)并且可以学习参数进行下采样
转置卷积
在进行转置卷积时,将每个元素(标量)乘以过滤器(卷积核),然后将加权后的卷积核叠加于新的输出。
sample:
卷积矩阵化
$44input <—> 44output$
$44input <—>22output$
分类和定位
定位一般使用回归损失函数。
识别固定几类对象,再 ...
CS231n-note-4
深度学习软件PyTorch(TODO)组成(三层)Tensor运行在GPU上的命令式数组(Imperative ndarray)
Variable计算图中的节点,存储数据和梯度
Module一个神经网络的层
CNN架构AlexNet:8layers
ZFNet:在AlexNet基础上调整了超参数
VGG:16/19layers(全部采用3X3的卷积核——更有利于加深神经网络的深度)
GoogleNet:
22layers,高效的“Inception”层,无全连接层
Inception层是设计好的一个局部网络拓朴,对输入的层进行并行操作,然后将每个滤波器的输出进行深度上的串联,通过0填充保持输出尺寸一致。
利用1X1卷积核进行深度的压缩对模型进行改进。
ResNet: 152layers
ResNet的整体结构
RNN
Vanilla RNN
h_t = f_w(h_{t-1},x_t)\\
h_t = tanh(W_{hh}h_{t-1}+W_{xh}x_t)\\
y_t = W_{hy}h_tLoss是每一个时步下的loss之和
W的梯度是每个节点的W梯度值和
Va ...
CS231n-note-3
卷积神经网络卷积核($w$)通常遍历输入向量的所有通道,Input为32 X 32 X 3。
卷积核在输入的向量上滑动,至于图像的一个局部区域发生关联,进行点积运算$w^Tx+b $ $w为filter$
卷积核滑动
在图像空间滑动,计算出每个位置的点积(滑动的方式可以改变)
激活映射
PS
7X7X3 input(spatially)
assume 3X3X3 filter
可以得到一个5X5X1的output
有多少个卷积核则Output的深度为多少。
步长(stride)
控制滑动的步长可以得到不同的output。
如果stride=3则无法fitinput的纬度,则不采用。
Output size:
$(N-F) / stride + 1$
可以增加像素(PS:补0)来改变输出的维度,保持输出维度和输入维度相同。
Pooling layer 将生成的表示更加小以及更易于控制,是参数更少。
进行降采样(downsampling),只在平面上进行降采样,不在深度上降采样。
最大池化法(max pooling)池化层中也有一个卷积核(卷积核和步长使扫描区域不重合 ...
CS231n-note-2
反向传播计算图
根据链式法则进行反向传播,算出每个结点的梯度。
max门:一个是1 一个是0
乘法门:梯度互换
梯度会在分支节点处累加
sigmod函数
\sigma(x) = \frac{1}{1+e^{-x}}梯度为
\frac{d\sigma(x)}{dx}=(1-\sigma(x))\sigma(x)雅可比矩阵 在向量分析中,雅可比矩阵是函数的一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。
假设F: Rn→Rm是一个从欧式n维空间转换到欧式m维空间的函数。这个函数F\由m个实函数组成: y1(x1,…,xn), …, ym(x1,…,xn)。这些函数的偏导数(如果存在)可以组成一个m行n列的矩阵, 这就是所谓的雅可比矩阵:
由球坐标系 到直角坐标系的转化由F函数给出 :
此坐标变换的雅可比矩阵是
在实际的运用中,不用计算$4096*4096$的雅可比矩阵(如果输入向量为4096维)。
一般的雅可比矩阵为对角矩阵,只用算出每一个维度的梯度。
矩阵函数的梯度矩阵是其Jacobian矩阵的转置【Transposition】
构造神经网络
...
CS231n note-1
图像分类目标:所谓图像分类问题,就是已有固定的分类标签集合,然后对于输入的图像,从分类标签集合中找出一个分类标签,最后把分类标签分配给该输入图像。虽然看起来挺简单的,但这可是计算机视觉领域的核心问题之一,并且有着各种各样的实际应用。在后面的课程中,我们可以看到计算机视觉领域中很多看似不同的问题(比如物体检测和分割),都可以被归结为图像分类问题。
图像分类流程。在课程视频中已经学习过,图像分类就是输入一个元素为像素值的数组,然后给它分配一个分类标签。完整流程如下:
输入:输入是包含N个图像的集合,每个图像的标签是K种分类标签中的一种。这个集合称为训练集。
学习:这一步的任务是使用训练集来学习每个类到底长什么样。一般该步骤叫做训练分类器或者学习一个模型。
评价:让分类器来预测它未曾见过的图像的分类标签,并以此来评价分类器的质量。我们会把分类器预测的标签和图像真正的分类标签对比。毫无疑问,分类器预测的分类标签和图像真正的分类标签如果一致,那就是好事,这样的情况越多越好。
K-nearest算法(KNN)需要样本尽量高密度占据样本空间
曼哈顿距离(L1)
适合样本空间向量属性已知的情 ...
软件安全设计
软件安全设计CH01软件与软件安全计算环境与软件二进制基础位运算所谓位运算是指进行二进制位的运算。在系统软件中,常要处理二进位的问题。
**不同长度的数据进行位运算**
如果两个数据长度不同(例如long型和int型)进行位运算时(如a & b,而a为long型,b为int型),系统会将二者按右端对齐。如果b为正数,则左侧16位补满0。若b为负数,左端应补满1。如果b为无符号整数型,则左侧添满0。
指令系统与指令集指令系统:计算机的指令系统就是指该计算机能够执行的全部指令的集合。
指令系统也称指令集
软件的形式与概念软件与一个系统(尤指计算机系统)有关的程序、步骤和有关文件编制的完整集合。特指特定类型计算机所使用的程序的总称,连同与计算机或程序有关的资料,例如手册、图表和操作指令。
程序
根据一定的需要事先编写的一系列控制计算机工作的命令,就称为计算机程序。
计算机系统的组成
完整的计算机系统包括计算机硬件系统和计算机软件系统。
软件的主要内容
程序、步骤及数据、信息手册等相关资料
功能:针对一个系统(计算机),合理组织工作。
两个层次:
–直接与硬件相关
–合理组织工作, ...
POSIX信号量
POSIX信号量的操作POSIX信号量有两种:有名信号量和无名信号量,无名信号量也被称作基于内存的信号量。有名信号量通过IPC名字进行进程间的同步,而无名信号量如果不是放在进程间的共享内存区中,是不能用来进行进程间同步的,只能用来进行线程同步。
POSIX三种操作创建信号量创建的过程还要求初始化信号量的值。
根据信号量取值(代表可用资源的数目)的不同,POSIX信号量还可以分为:
二值信号量:信号量的值只有0和1,这和互斥量很类型,若资源被锁住,信号量的值为0,若资源可用,则信号量的值为1;
计数信号量:信号量的值在0到一个大于1的限制值(POSIX指出系统的最大限制值至少要为32767)。该计数表示可用的资源的个数。
等待信号量(wait)/P操作该操作会检查信号量的值,如果其值小于或等于0,那就阻塞,直到该值变成大于0,然后等待进程将信号量的值减1,进程获得共享资源的访问权限。为原子操作。
挂出一个信号量(post)/V操作该操作将信号量的值加1,如果有进程阻塞着等待该信号量,那么其中一个进程将被唤醒。
POSIX信号量函数接口有名信号量的创建和删除创建
1234567# ...