计算机视觉的深度学习 Lecture15:Object Detection 笔记 EECS 498.007/008

news2025/1/22 17:52:44

一些介绍:

amodal box (非模态box?)
标记隐含的物体大小

只检测一个目标的流程

同时计算分类分数和Box坐标、使用Multitask Loss。Multitask Loss现在是一种非常常见的方法。

滑动窗口检测多个目标
开销巨大(右下是所有可能的滑动窗口数量*位置=All possilbe boxes)

解决方案:区域选择:使用proposal method预先搜索图片上目标的“可能区域”(或者叫ROI)(不是滑动窗口的box),之后可以在“可能区域”上做图像分类+检测(RCNN)

  • proposal method是一些启发式方法可以寻找“可能区域”,可能用到了图像梯度、角点检测等技术
  • 启发式方法相对较快(CPU几秒)

RCNN Region-Base CNN

基于Region,就是在启发式方法搜得的部分区域中(ROI)进行分类,并且还会做一个变换–在一个ROI中检测出的框子可以偏离原ROI的中心坐标、修改框子大小。
下面px,py为中心位置,ph,pw为高和宽
注意到送入卷积神经网络时,ROI要warp成224*224。下面的Transformation式子bx=px+pwtx,这种变换某种程度上可以让他们学到“warp invariant”,也就是逆warp。

|500
注意:

image-20230513183445963

对比Box:交并比IOU

IOU=重叠区域/并区域
|500
IOU>0.5不错,>0.7很好,>0.9接近完美,对于部分目标而言,>0.9表示框子之间的间隔只有几个像素
|500

Non-Max Suppression (NMS)

目标检测的时候图像上可能出现不同目标的多个框子重叠。NMS可以将其区分开来。

常用NMS算法流程:

  • 取当前最大概率框子A,将A对其他所有框子求IOU,

  • IOU>0.7的框子都认为和A是同一个目标、删去

  • 重复这个过程
    |325|325

    |350

(2019)还处理不好的例子:

mAP计算

p p t 里对这个内容讲解非常好、演示了算法流程,直接去看 \color{green} \mathrm{ppt}里对这个内容讲解非常好、演示了算法流程,直接去看 ppt里对这个内容讲解非常好、演示了算法流程,直接去看
AP值是AP曲线下的面积,最大为1(因为精确度和Recall最大为1)

如果AP要到1,则需要

  • 所有检测对象与ground-truth box(GT box)的IOU>thresh
  • 所有“正确检测概率”统统大于“错误检测概率”(对应于图上就是左边全绿框、右边全红框)
  • 所有ground-truth box(GT box)被覆盖(就是标记的所有框子对应的对象要被检测到,判定检测到就是IOU)
    • 只满足第一条可能出现有一条狗没有被检测到,这一条就覆盖了这种情况(当然这个说法有点“问题”,因为这是在反解释算法)

mAP就是在所有类上的AP取平均值

如果thresh固定等与0.5,暗含我们不关心实际上检测的有多精确(框子有多贴合),这样不是一个好的metric
所以实践中我们会检测不同thresh的mAP值,在论文中的写法就是mAP@thresh=0.xx

COCOmAP就是对不同thresh的mAP求平均

原来的RCNN速度太慢,因为要在proposal method搜索出的很多个(eg. 2000)ROI上做检测。改进方法是交换warp和卷积的顺序:

Fast RCNN

先整个卷积,然后在特征图上用proposal method搜索,再使用小CNN进行检测

Backbone指的是主干网络,ConvNet,用一个较好的图像分类网络即可
结构上对比AlexNet:

问题:How to crop features?

解决方案:
首先,这个crop区域是从原图上“切”的,不是从feature map上切的;只不过我们在原图上找到区域后要对应到卷积之后的区域。
步骤:

  • 绿框是启发式方法搜到的ROI,他可以对应于卷积之后的部分grid但是不一定能对齐,故通过“snap”方法强制让ROI对齐到卷积之后的grid。
  • 然后使用max-pool将其强制降采样为指定size(这里是2x2)
  • 这样对于不同的ROI大小输入,计算出的Region Feature的格式都是固定的

    问题很显然,Slight misalignment,有轻微的不对齐、直觉上也挺奇怪

解决办法:线性插值(不太重要)
点值=周围四个点加权求和,权是曼哈顿距离

然后用加权之后的值降采样成指定shape

image-20230513204458184

Faster RCNN

将启发式搜索ROI的过程更换为一个卷积神经网络(region proposal network,RPN)来处理
这样就需要额外训练RPN

image-20230513202210564

卷积之后的一个grid对应于一个指定大小的Anchor box,这个gird经过RPN可以预测他对应的Anchor是否存在一个目标(object)、是一个二分类问题。

当然一开始固定的Anchor可能不匹配目标,所以之后加了一个transform(将Anchor转为Proposal),提供了偏移和缩放框子形态的能力。
4*20*15,这里的4应该指的是4个参数(宽高中心位置)

image-20230513202434069

但实际上一个框子可能能力达不到;所以对于每一个点我们会预测出K个Anchor

image-20230513202937169

综合一下,对于Faster RCNN就有4个loss值需要计算:
RPN二分类(是否有目标)、RPN回归(Anchor->Proposal)、结果分类、结果回归

image-20230513203440962

Faster RCNN是一种典型的两阶段目标检测网络,问题是,我们到底需不需要两个阶段?

image-20230513203747322

一种单阶段网络:RPN直接预测出C+1类(多的一类是是否为Object),然后transform之后给出框子形态

image-20230513203922475

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/522125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot+vue银行OA系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的银行OA系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&…

声音合成——Foley Sound——DECASE项目——多模态智能感知与应用——Autoencoder代码实现(6)

文章目录 概述encoder的编写过程代码编写运行结果问题总结 decoder的编写过程知识补充关于逆卷积 代码编写运行结果总结 Autoencoder模型编写 compile方法 train方法 保存和加载模型模块编写实现代码——autoencoder代码实现代码——train代码实现代码——保存和加载模型的代…

【半监督学习】Match系列.3

半监督语义分割旨在利用尽可能少的有标注图像以及大量的无标注图像来学得一个较好的分割模型。其中,对有标注图像的学习一般类似于全监督语义分割,如计算预测结果与人工标注之间的交叉熵损失,问题的关键在于如何利用无标注图像。 本文简单介…

【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件

【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件 AssetDatabase 类提供的 LoadAssetAtPath 方法和 CreateAsset 方法只能读写Assets、Packages文件夹中的资产,如果想要读写其他文件夹(ProjectSettings、UserSettings、Library等&am…

【运筹优化】元启发式算法详解:模拟退火算法(Simulated Annealing,SA)+ 案例讲解代码实战

文章目录 一、介绍二、基础知识2.1 局部搜索(或蒙特卡罗)算法2.2 Metropolis 算法2.3 模拟退火算法 三、原理3.1 Statistical Equilibrium 统计平衡3.2 Asymptotic Convergence 渐近收敛 四、实际问题4.1 Finite-Time Approximation 有限时间近似4.2 Geometric Cooling 几何冷却…

区块元素和超连结

DIV (区块元素) <div>元素&#xff08;HTML 文件区块元素&#xff09;是无标签语意的容器元素&#xff0c;虽然它不代表任何意义&#xff0c;却是使用最多的标签之一&#xff0c;主要用来把相似或者被划分为同一区块的内容包在同个div 内&#xff0c;以便后续添加css 样…

【MyBatis】一文教你学会使用MyBatis操作数据库

文章目录 1. MyBatis是什么&#xff1f;2. 为什么要学MaBatis&#xff1f;3. MyBatis环境搭建4. MyBatis的使用4.1 简单示例4.2 获取动态参数4.2.1 ${xxx}获取动态参数4.2.2 #{xxx}获取动态参数4.2.3 #{xxx}与${xxx}获取字符串类型数据4.2.4 sql注入问题4.2.5 模糊查询like4.2.…

动态规划-背包问题-背包九讲

title: 动态规划-背包问题 date: 2023-05-12 13:01:31 categories: Algorithm动态规划 tags:动态规划 01背包问题 题目 题目链接&#xff1a;https://www.acwing.com/problem/content/description/2/ 有 N N N 件物品和一个容量是 V V V 的背包。每件物品只能使用一次。 …

数据分析05——往Pandas中导入数据

1、导入Excel&#xff1a; 注意这种方法可以导入xlsx和xls两种类型的数据读入的数据会以DataFrame的格式显示举例&#xff1a;df pd.read_excel(‘./data/demo_03.xlsx’)还可以导入excel文件中具体的某一个表格&#xff1a;pd.read_excel(‘./data/demo_03.xlsx’, sheet_na…

SD-MTSP:麻雀搜索算法SSA求解单仓库多旅行商问题(提供MATLAB代码,可以修改旅行商个数及起点)

一、单仓库多旅行商问题 多旅行商问题&#xff08;Multiple Traveling Salesman Problem, MTSP&#xff09;是著名的旅行商问题&#xff08;Traveling Salesman Problem, TSP&#xff09;的延伸&#xff0c;多旅行商问题定义为&#xff1a;给定一个&#x1d45b;座城市的城市集…

postgresql源码学习(55)—— 列中的NULL值是如何存储和判断的?

问题来自 《PostgreSQL面试题集锦》学习与回答_Hehuyi_In的博客-CSDN博客 第11题 一、 NULL值存储位置 在pg元组头数据中&#xff0c;有一个t_bits数组&#xff0c;用于存储空值位图。当元组中没有null值的时候&#xff0c;t_bits可以被认为是空的&#xff0c;当元组有null值的…

javaweb学习 html+css基础1

1、学习路线 2、web网站的开发模式 课程安排 web 前端 前端学习内容 html和css的帮助网站 HTML 系列教程 (w3school.com.cn) html快速入门 使用VSCode开发工具&#xff0c;输入 &#xff01;enter&#xff0c;即可出现骨架。 ctrl/ 可以将文字转换为注释 右击一个页面…

【JavaEE】计网之IP协议+以太网+DNS

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 网络层重点协议——IP协议&#xff0c;在复杂的网络环境中确定一个合适的路径~ 本篇文章我们来讲解什么是 IP协议及以太网&#xff0c;在IP协议中&#xff0c;有 地址管理 和 路由选择 两个…

C++中基类和派生类的构造函数与析构函数的调用顺序分析

基类为B&#xff0c;派生类为C&#xff0c;直接上代码以及运行结果。 目录 思路分析 代码一 运行结果一 代码二&#xff1a;B(i)改为b(i) 运行结果二 代码三&#xff1a;加上B(i) 运行结果三 代码四&#xff1a;删掉C类定义的B对象b&#xff0c;删除b(i) 运行结果四 思路…

Linux使用全应用

一、CentOS安装Docker Docker CE 支持 64 位版本 CentOS 7&#xff0c;并且要求内核版本不低于 3.10&#xff0c; CentOS 7 满足最低内核的要求&#xff0c;所以我们在CentOS 7安装Docker。 基础命令 搜索镜像&#xff1a;docker search mysql 下载镜像&#xff1a;docker p…

[架构之路-197]-《软考-系统分析师》- 关键技术 - 问题分析阶段重要的四个任务

目录 前言&#xff1a; 一、信息系统/软件产品的问题分析概述 二、信息系统/软件产品的问题/痛点分析四步骤 步骤1、问题领域分析&#xff1a;研究遇到问题的业务领域&#xff08;诉求&#xff09; 步骤2、 领域问题和机会分析&#xff1a;分析业务领域的问题、痛点、难点…

计算机网络学习 一 (计算机网络体系结构)

计算机网络 基本概念 计算机网络是一个将分散的,具有独立功能的计算机系统. 简单来说,计算机网络就是一些互连的,自治的计算机系统的集合 分类 广义上:是一个资源共享的系统. 资源共享上: 1.目的–资源共享 2.组成单元–分布在不同地理位置的多台独立的"自治计算机"…

第十四届蓝桥杯青少组模拟赛Python真题 (2022年11月8日)

第十四届蓝桥杯青少组模拟赛Python真题 (2022年11月8日) 编程题 第 1 题 问答题 二进制位数 十进制整数2在十进制中是1位数&#xff0c;在二进制中对应10&#xff0c;是2位数。 十进制整数22在十进制中是2位数&#xff0c;在二进制中对应10110&#xff0c;是5位数。 请问十…

Linux高级---k8s之service服务

文章目录 一、service基本概念二、service类型三、service的使用1、实验环境准备2、ClusterIP类型的Service3、HeadLiness类型的Service4、NodePort类型的Service5、LoadBalancer类型的Service6、ExternalName类型的Service 一、service基本概念 在kubernetes中&#xff0c;pod…

【Java多线程编程】线程的六种状态

前言&#xff1a; 在我们进行多线程编程&#xff0c;脑海里会想到线程运行的状态到底是什么&#xff1f;因此我整理出这线程的状态这篇博文。线程的状态分为六种&#xff1a;新建状态&#xff08;NEW&#xff09;、就绪状态&#xff08;RUNNABLE&#xff09;、阻塞状态&#xf…