动手学深度学习 - 9.3. 目标检测和边界框

动手学深度学习 - Dive into Deep Learning
Aston Zhang, Zachary C. Lipton, Mu Li, and Alexander J. Smola
https://zh.d2l.ai/

9.3. 目标检测和边界框

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

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

In [1]:
%matplotlib inline
import d2lzh as d2l
from mxnet import image

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

In [2]:
d2l.set_figsize()
img = image.imread('../img/catdog.jpg').asnumpy()
d2l.plt.imshow(img);  # 加分号只显示图

9.3.1. 边界框

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

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

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

In [4]:
def bbox_to_rect(bbox, color):  # 本函数已保存在 d2lzh 包中方便以后使用# 将边界框 (左上 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)

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

In [5]:
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.2. 小结

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

动手学深度学习 - 9.3. 目标检测和边界框相关推荐

  1. 李沐动手学深度学习V2-多尺度目标检测

    一. 多尺度目标检测 以输入图像的每个像素为中心,生成多个锚框,这些锚框代表了图像不同区域的样本. 然而,如果为每个像素都生成的锚框,最终可能会得到太多需要计算的锚框. 想象一个 561×728 的输 ...

  2. 动手学深度学习——目标检测 SSD R-CNN Fast R-CNN Faster R-CNN Mask R-CNN

    来源:13.4. 锚框 - 动手学深度学习 2.0.0-beta1 documentation 目标检测:锚框算法原理与实现.SSD.R-CNN_神洛华的博客 目录 目标检测简介 目标检测模型 ​编辑 ...

  3. 动手学深度学习之目标检测基础

    参考伯禹学习平台<动手学深度学习>课程内容内容撰写的学习笔记 原文链接:https://www.boyuai.com/elites/course/cZu18YmweLv10OeV/less ...

  4. 《动手学深度学习》Task09:目标检测基础+图像风格迁移+图像分类案例1

    1 目标检测基础 1.1 目标检测和边界框(9.3) %matplotlib inline from PIL import Imageimport sys sys.path.append('/home ...

  5. 动手学深度学习PyTorch版--Task7--目标检测基础;图像风格迁移

    一.目标检测基础 1.目标检测和边界框 %matplotlib inline from PIL import Imageimport sys sys.path.append('/home/kesci/ ...

  6. 资源 | 李沐等人开源中文书《动手学深度学习》预览版上线

    来源:机器之心 本文约2000字,建议阅读10分钟. 本文为大家介绍了一本交互式深度学习书籍. 近日,由 Aston Zhang.李沐等人所著图书<动手学深度学习>放出了在线预览版,以供读 ...

  7. 《动手学深度学习》PyTorch版本

    Dive-Into-Deep-Learning-PyTorch-PDF 简介   本项目对中文版<动手学深度学习>中的代码进行整理,并参考一些优秀的GitHub项目给出基于PyTorch的 ...

  8. 【深度学习】李沐《动手学深度学习》的PyTorch实现已完成

    这个项目是中文版<动手学深度学习>中的代码进行整理,用Pytorch实现,是目前全网最全的Pytorch版本. 项目作者:吴振宇博士 简介   Dive-Into-Deep-Learnin ...

  9. 送10本今年最火的《动手学深度学习》

    点击我爱计算机视觉标星,更快获取CVML新技术 52CV曾经多次介绍FlyAI机器学习竞赛平台,不少粉丝也曾在FlyAI拿到现金奖励. 本次52CV & FlyAI联合送书,CV君查找了两天, ...

最新文章

  1. 常用String方法
  2. C++ 引用 Demo - Win32 版
  3. 图形基础 GPU架构(4)GPU CPU
  4. 在linux中安装.sh 文件
  5. 文件的上传和下载---学习笔记
  6. android新拟态实现方法,Android 新拟态UI (Neumorphism)
  7. 1.7 编程基础之字符串 27 单词翻转 4分 python
  8. C语言,利用数组编写程序输入30个数,分别统计正整数,0,负数个数,并求和
  9. Java 学习总结(189)—— Java 8 功能接口使用总结
  10. C++中menset用法
  11. python 线程池_python线程池
  12. matlab strel
  13. jquery ui accordion的详细参数
  14. LMAX Disruptor——一个高性能、低延迟且简单的框架
  15. python 累加_对Python实现累加函数的方法详解
  16. 20212022最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)、前端面试题大全、前端进阶必知必会知识点1
  17. 用计算机绘制工作表,实用计算机机械图样绘制技法
  18. linux美元符号切换为井号,struts2 (# % $)井号,百分号,美元符号的含义和使用方法举例...
  19. 数据中心服务器机柜电气参数,数据中心服务器机柜选择指南
  20. 再见2020,你好2021:往事不回头,万事皆可期!

热门文章

  1. SuperCell 的中台你们学不会
  2. IDEA 自动生成实体类
  3. 阿里P8大牛亲自讲解!java实战第二版pdf下载
  4. 朋友欠钱老拖着不给?这个小工具让他立马还钱!
  5. 从多个文件夹中读取图片 并以文件夹序号命名图片
  6. 跨年烟花但是飘零半生
  7. 两个div上下之间有缝隙
  8. 【开源访谈】Muduo 作者陈硕访谈实录
  9. 【Java】文件上传及下载、限制文件大小
  10. ZLibrary又复活了,全球最大的数字图书馆