深度篇——图像处理的一些方法(一) 关于 图像处理的三个层次 与 selective search

VIP深度篇——图像处理的一些方法(一) 关于 图像处理的三个层次 与 selective search
返回主目录返回 图像处理的一些方法 目录下一章:深度篇——图像处理的一些方法(二)细说性能评估 IOU和 GIOU目录内容深度篇——图像处理的一些方法(一)关于图像处理的三个层次 与 selective search深度篇——图像处理的一些方法(二)细说性能评估 IOU和 GIOU深度篇——图像处理的一些方法(三)细说 HOG特征与bag-o...
开通可读全文 ·2.9k 人阅读
最低0.47元/天 解锁文章

返回主目录

返回 图像处理的一些方法 目录

下一章:深度篇——图像处理的一些方法(二) 细说 性能评估 IOU 和 GIOU

 

目录内容

深度篇——图像处理的一些方法(一) 关于 图像处理的三个层次 与 selective search

深度篇——图像处理的一些方法(二) 细说 性能评估 IOU 和 GIOU

深度篇——图像处理的一些方法(三)  细说 HOG 特征 与 bag-of-word

深度篇——图像处理的一些方法(四) 细说 图像金字塔

 

本章节对图像处理的一些方法讲解,是为了在后面讲到图像处理时,需要的一些先验知识,以便于更好的理解。

 

论文地址:《Selective Search for Object Recognition》

 

本小节,关于 图像处理的三个层次 与 selective search,下一小节细说 性能评估 IOU 和 GIOU

 

一. 图像处理的三个层次

1. 分类(classification)

      即是将图像结构化为某一类别的信息,用事先确定好的类别(String) 实例的 ID 来描述图像(如手写数字识别)。这一任务是最简单、最基础的图像理解任务,也是深度学习模型最先取得突破和实现大规模应用的任务。其中,ImageNet 是最权威的评测机构,每年的 ILSVRC 催生了大量的优秀深度网络结构,为其他任务提供了基成。在应用领域、人脸、场景的识别等都可以归为分类任务。

 

2. 检测(detection)

      分类任务关心整体,给出的是整张图像的内容描述,而检测则关注特定的物体目标,要求同时获得这一目标的类别信息和位置信息。相比分类,检测给出的是图像前景和背景的理解,需要从背景中分离出感兴趣的目标,并确定这一目标的描述(类别和位置),因而,检测模型的输出是一个列表,列表的每一项使用一个数据给出检测目标的类别和位置(常用矩形检测框的坐标表示)。

 

3. 分割(segmentation)

      分割包括语义分割(semantic segmentation) 和实例分割(instance segmenation),前者是对前背景分离的拓展,要求分离开具有不同语义的图像部分,而后者是检测任务的拓展,要求描述出目标的轮廓(相比检测框更为精细)。分割是对图像的像素级描述,它赋予每个像素类别(实例) 意义,适用于理解要求较高的场景,如无人驾驶中对道路和非道路的分割。

   (1). 语义分割

         只能分割出类别(如 人类、狗类 等)

   (2). 实例分割

         可以将每一个具体的实例分割出来(如分割出每一个人,每一条狗等),实现了目标检测和语义分割。

   (3). 全景分割

         包含了语义分割和实例分割。

 

二. selective search 选择性搜索

目标检测(Object Detection) 的目的是为了减少不必要因素的干扰(比如 从背景很负责的图像中识别出一个小动物,那样的准确率会大大的降低),此外还能同时得到目标在图像中的位置(还包括 宽度和高度)。当决定要进行 Object Detection 的时候,大家的想法都差不多的,滑动窗口扫描嘛,不同大小的窗口从左到右,从上到下的,一顿操作。不用想,这样是超级浪费时间的,绝大部分的扫描都是没用的,因为框住的根本不是目标。所以继续想,要是能直接框住图像中的目标,而不是那些无用的背景,而且也不需要框得特别准确。有了这一思想,于是人们想出了 selective search (选择性搜索)

selective search 的思想:

1. 区域相似度计算 

   在计算多种相似度的时候,都是把单一相似度的值归一化到 [0, 1] 之间,1 表示两个区域之间的相似度最大。

   (1). 颜色相似度

        首先通过利用颜色的相似度(毕竟如果颜色很相似,那么极有可能是一个整体),形成一些小的区域,具体算法是将整张图看成一个无向图,节点之间的距离就是像素的距离(在这里使用 RGB 计算距离并不好,最好转换一下颜色空间,如 HSV 等)。使用 \large L_{1} - norm 归一化获取图像每个像素通道的 25 bins 的直方图,这样每个区域都可以得到一个 75 维的向量 \large \{c_{i, 1}, c_{i, 2}, ......, c_{i, n} \},区域之间颜色相似度通过下面的公式计算:

                 \LARGE S_{color}(r_{i}, r_{j}) = \sum_{k = 1}^{n} \min (c_{i, k}, c_{j, k})

         由于 \large \{c_{i, 1}, c_{i, 2}, ......, c_{i, n}\} 是归一化后的值,每一个颜色通道的直方图累加和为 1.0,三个通道的累加和就是 3.0,如果区域 \large c_{i} 和区域 

VIP 别再只会用RPN了!手把手带你复现RCNN/Fast RCNN的基石:Selective Search算法(附Python代码) 本文深入解析了Selective Search算法在目标检测中的关键作用,详细介绍了其层次化分组策略和区域合并机制,并提供了完整的Python实现代码。作为RCNN和Fast RCNN的基石,Selective Search通过颜色、纹理等多维度相似度度量,高效生成候选区域,为现代目标检测算法奠定了基础。 开通可读全文·220 阅读·2 点赞·2 收藏 阅读全文

相关推荐

别再只会用RCNN了!手把手带你复现Selective Search算法(附Python代码与避坑指南)

本文详细解析了选择性搜索算法(Selective Search)的实现原理与Python代码实战,包括图像分割、区域合并策略、候选框生成与参数调优。通过对比不同参数组合的效果,帮助CV从业者掌握这一经典区域推荐算法,并提供了与现代检测框架(如Faster R-CNN)集成的实用技巧。

weixin_30435261的博客 205

深度学习之物体检测(一)R-CNN

作者Rgb 在这之前大部分物体检测算法都是基于传统的图像处理方法,这是第一篇将深度学习用到物体检测上的文章,直接影响是2012年ALEXNET在比赛中的重大成功。 简单来说,RCNN使用以下四步实现目标检测: a. 在图像中用slective search 方法 确定约1000-2000个候选框 具体为什么使用这个方法,原文在第三页中有说While R-CNN is agnostic to...

crazyeden的博客 1064

目标检测:选择性搜索(selective search)

用selective search方法提取候选框最简单的方法1、根据如下github连接下载相关文件,并安装相应包https://github.com/AlpacaDB/selectivesearch终端下执行:pip install selectivesearch2、运行example文件中运行脚本 example.py,其中的图像为自带的测试图像3、修改example.py,读取自己的图像进行...

qq_38096703的博客 1797

银河麒麟V10 SP3下NFS客户端挂载失败?5个常见问题排查与修复

本文针对银河麒麟V10 SP3系统中NFS客户端挂载失败的常见问题,提供了5个实战排查方案。从基础服务状态检查到防火墙配置、版本兼容性、/etc/fstab设置及权限映射,详细解析了问题根源与解决方案,帮助用户快速恢复NFS文件共享功能。

weixin_42525005的博客 354

深入解析 ReDoc:从零构建高性能 API 文档的终极指南

ReDoc 是一个强大的开源工具,用于将 OpenAPI 规范转换为高质量、响应式的 API 文档。本文详细介绍了如何使用 ReDoc 构建和自定义 API 文档,包括如何编写支持 OpenAPI 的 API 注解、配置 HTML 页面以加载文档,以及如何利用 ReDoc 的高级功能进行定制。通过实例代码,您将学会如何灵活地展示 API 文档,提升用户体验。无论是初学者还是经验丰富的开发者,都能从本文中获得实用的技巧与方案,帮助快速搭建符合需求的 API 文档界面。

楠搏万的博客 4591

Neo4j 智能供应链应用源代码简析

本文简析Neo4j智能供应链应用的源代码,让你也可以快速开发自己的供应链应用。

Neo4j 开发者博客 1673

Prism 入门02,区域介绍

什么是区域(Region)?区域,在Prism 框架中,区域是模块化的核心的功能之一,其主要作用是降低应用程序和模块之间的耦合度。使用方式:在应用程序的界面中,划分出某块区域,并为这个区域定义一个唯一的区域名称。那么通过这个区域名称,应用程序就可以找到指定的区域。并为这个区域动态放置一些容器或控件,从而呈现在界面中。

build2024 1119

OPTEE:TA命令操作的实现(三)

上文我们创建好了通道,现在就是操作,怎么操作TA呢?REE侧的CA执行创建会话操作成功后,CA就可使用获取到的调用来让TA执行特定的命令。通过ioctl的系统调用发送到OP-TEE的驱动中,保存在共享内存中,并触发安全监控模式调用(smc)切换到Monitor模式(ARMv7)或EL3(ARMv8)中进行安全世界状态的处理。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 1263

56、宇宙微波背景辐射(CMB)望远镜及光学系统解析

本文详细解析了宇宙微波背景辐射(CMB)望远镜及其光学系统,重点介绍了交叉德拉贡系统的结构特点、偏振测量误差及其控制、以及大型地面望远镜如ACT和SPT的设计与对比。同时,总结了不同光学系统和探测器阵列的优劣势,并展望了未来发展方向,旨在为CMB研究提供更高效的工具和技术支持。

f9g0h的博客 239

piamon实战-- 如何使用 Paimon 的 Java API 实现数据的点查

点查(Point Lookup)是指通过 ​​唯一键(Primary Key)​​ 快速定位并返回单条或少量数据的查询模式。例如:根据用户 ID 查询用户信息、根据订单号查询订单详情等。点查的核心诉求是 ​​低延迟​​ 和 ​​高吞吐​​,适用于实时风控、在线分析等场景。​​定义主键表结构​​,优化数据分布。​​构建过滤条件​​,使用指定查询键。​​执行查询并处理结果​​,结合流式更新实现实时查询。

阿华田的博客 526

【以太网硬件六】1000base-T物理层编码究竟是怎么编的?

详述1000base-T物理层4D-PAM5的编码过程

highman110的博客 5318

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 深度篇—— Deep Learning 经典网络 model 发展史(九) 细说 DarkNet 结构和特点和 各模型与精度
下一篇: 深度篇——图像处理的一些方法(二) 细说 性能评估 IOU 和 GIOU

双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —
万道一
博客等级 码龄10年 250粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值