9.3 目标检测和边界框

在前面的一些章节中,我们介绍了诸多用于图像分类的模型。在图像分类任务里,我们假设图像里只有一个主体目标,并关注如何识别该目标的类别。然而,很多时候图像里有多个我们感兴趣的目标,我们不仅想知道它们的类别,还想得到它们在图像中的具体位置。在计算机视觉里,我们将这类任务称为目标检测(object detection)或物体检测。

目标检测在多个领域中被广泛使用。例如,在无人驾驶里,我们需要通过识别拍摄到的视频图像里的车辆、行人、道路和障碍的位置来规划行进线路。机器人也常通过该任务来检测感兴趣的目标。安防领域则需要检测异常目标,如歹徒或者炸弹。

在接下来的几节里,我们将介绍目标检测里的多个深度学习模型。在此之前,让我们来了解目标位置这个概念。先导入实验所需的包或模块。

%matplotlib inline
from PIL import Imageimport sys
sys.path.append("..")
import d2lzh_pytorch as d2l

下面加载本节将使用的示例图像。可以看到图像左边是一只狗,右边是一只猫。它们是这张图像里的两个主要目标。

d2l.set_figsize()
img = Image.open('../img/catdog.jpg')
d2l.plt.imshow(img);  # 加分号只显示图

9.3.1 边界框

在目标检测里,我们通常使用边界框(bounding box)来描述目标位置。边界框是一个矩形框,可以由矩形左上角的xxx和yyy轴坐标与右下角的xxx和yyy轴坐标确定。我们根据上面的图的坐标信息来定义图中狗和猫的边界框。图中的坐标原点在图像的左上角,原点往右和往下分别为xxx轴和yyy轴的正方向。

# bbox是bounding box的缩写
dog_bbox, cat_bbox = [60, 45, 378, 516], [400, 112, 655, 493]

我们可以在图中将边界框画出来,以检查其是否准确。画之前,我们定义一个辅助函数bbox_to_rect。它将边界框表示成matplotlib的边界框格式。

def bbox_to_rect(bbox, color):  # 本函数已保存在d2lzh_pytorch中方便以后使用# 将边界框(左上x, 左上y, 右下x, 右下y)格式转换成matplotlib格式:# ((左上x, 左上y), 宽, 高)return d2l.plt.Rectangle(xy=(bbox[0], bbox[1]), width=bbox[2]-bbox[0], height=bbox[3]-bbox[1],fill=False, edgecolor=color, linewidth=2)

我们将边界框加载在图像上,可以看到目标的主要轮廓基本在框内。

fig = d2l.plt.imshow(img)
fig.axes.add_patch(bbox_to_rect(dog_bbox, 'blue'))
fig.axes.add_patch(bbox_to_rect(cat_bbox, 'red'));

输出:

小结

  • 在目标检测里不仅需要找出图像里面所有感兴趣的目标,而且要知道它们的位置。位置一般由矩形边界框来表示。

注:除代码外本节与原书基本相同,原书传送门

9.3_bounding-box相关推荐

  1. 远程控制virtual box虚拟机系统的三种方式

    远程控制virtual box虚拟机系统的三种方式[阅读时间:5分钟] 1.使用现有的远程控制软件 2.使用SSH连接 3.使用远程桌面控制虚拟机系统 对于把虚拟机安装在寝室笔记本的人来说,能够远程控 ...

  2. ICE BOX 配置,使用----第一篇

    一 理论部分 (1) 为什么要使用icebox? icebox server代替了通常的server. icebox是为了方便集中管理多个ice服务而建立的. 它通过使用icebox服务器,把ice服 ...

  3. IE的box模型显示bug

    原作者charlee.原始链接http://tech.idv2.com/2007/01/02/ie-box-model-bug/以及本声明. box模型即由<div>等块元素的 margi ...

  4. 手动部署OpenStack环境(一:Virtual Box 5.1 环境的安装及配置)

    任务一.Virtual Box 5.1 环境的安装及配置 1.1.安装环境检查 1.2.创建安装目录 1.3.安装及配置 实验目的及要求 完成Virtual box平台安装,会应用相关操作: 在vir ...

  5. OpenStack环境搭建(一:Virtual Box 5.1 环境的安装及配置)

    实验要求: 完成Virtual box平台安装,会应用相关操作: 在virtual box虚拟平台上部署Fuel Master节点: 在virtual box虚拟平台上部署计算节点Computer: ...

  6. Virtual Box+Centos7.0+Kaldi安装

    Kaldi Kaldi是一个强大的语音识别工具库(ASR),主要由Daniel Povey开发和维护.目前支持GMM-HMM.SGMM-HMM.DNN-HMM等多种语音识别的模型的训练和预测.其中DN ...

  7. Windows10+Virtual box+ubuntu17.10

    1.从官网下载virtual box 和 ubuntu17.10的desktop镜像 ubuntu 17.10 镜像的下载链接 virtual box的下载链接 2.打开VirtualBox,选择新建 ...

  8. Python使用matplotlib可视化箱图、seaborn中的boxplot函数可视化分组箱图、在箱图中添加抖动数据点(Dot + Box Plot)

    Python使用matplotlib可视化箱图.seaborn中的boxplot函数可视化分组箱图.在箱图中添加抖动数据点(Dot + Box Plot) 目录

  9. R语言ggplot2可视化:可视化箱图、在箱图中添加抖动数据点(Dot + Box Plot)、自定义抖动数据点的大小、颜色、数据点分布在箱图中间、添加主标题、副标题、题注信息

    R语言ggplot2可视化:可视化箱图.在箱图中添加抖动数据点(Dot + Box Plot).自定义抖动数据点的大小.颜色.数据点分布在箱图中间.添加主标题.副标题.题注信息 目录

  10. seaborn箱图(box plot)可视化、并且在箱图中使用三角形标注均值的位置(showmeans=True)

    seaborn箱图(box plot)可视化.并且在箱图中使用三角形标注均值的位置(showmeans=True) 目录

最新文章

  1. 动图|几张动图告诉你,工业机器人无所不能!
  2. SUN PORTAL 7.2安装在windows 的问题解决办法!
  3. 记录一次java.lang.OutOfMemoryError: PermGen space异常
  4. Message-Digest Algorithm 5
  5. [蓝桥杯2016决赛]路径之谜
  6. hmac hmac.new_使用HMAC(Play 2.0)保护REST服务
  7. leetcode198 打家劫舍
  8. 条件队列java_Java并发系列(4)AbstractQueuedSynchronizer源码分析之条件队列
  9. tp5部署到nginx后所有分页404的解决办法
  10. java 基础一 Http请求
  11. Zend Framework学习之验证ing
  12. 了解IHttpModule接口事件执行顺便 获取Session
  13. android 空格的转义字符,Android 常用转义字符
  14. mumu按键精灵_阴阳师电脑脚本--按键精灵V1.4.1(大漠插件3.1233)
  15. 黑客教父郭盛华:11个IDA Pro反汇编程序的替代品
  16. if、else、else if使用方法
  17. npm install 安装一直报错Error EPERM operation not permitted, mkdir
  18. PPT/Word中英文单词换行问题 (取消了西文在单词中间换行的选项,但英文部分依然不连续) 的解决方法
  19. 无损音乐统一音量大小好吗_您可以无损增加MP3文件的音量吗?
  20. 第一个被赋予公明身份的机器人_史上首次 沙特授予“女性”机器人索菲娅公民身份...

热门文章

  1. 外链专员所需要的基本要求
  2. 基于微信小程序的电影院票务系统设计与实现-计算机毕业设计源码+LW文档
  3. 浅谈同轴分流器之电阻功率系数
  4. Android模拟机出现Installation failed due to invalid APK file错误
  5. 【多种隐写】LSB+DCT文本图片嵌入+提取【含GUI Matlab源码 1851期】
  6. 电商网站采用什么运营策略和推广方法
  7. 数据库 习题答案 系统概念 第8章
  8. [醉了]解决重启mac但是bash_profile不生效的彻底解决方法
  9. 1080P 显卡安装过程
  10. 【法律星球】情人节,盘点情侣间常见民间借贷纠纷