动手学深度学习(Pytorch版)代码实践 -计算机视觉-45多尺度目标检测

45多尺度目标检测

python 复制代码
# 多尺度锚框
"""
减少图像上的锚框数量并不困难。 比如,我们可以在输入图像中均匀采样一小部分像素,
并以它们为中心生成锚框。 此外,在不同尺度下,我们可以生成不同数量和不同大小的锚框。
直观地说,比起较大的目标,较小的目标在图像上出现的可能性更多样。 
例如,1*1,1*2,2*2的目标可以分别以4、2和1种可能的方式出现在2*2
图像上。 因此,当使用较小的锚框检测较小的物体时,我们可以采样更多的区域,
而对于较大的物体,我们可以采样较少的区域。
"""
import torch
from PIL import Image
import matplotlib.pylab as plt
from d2l import torch as d2l

plt.figure('catdog')
img = plt.imread('../limuPytorch/images/catdog.jpg')
# # plt.imshow(img)
# print(img.shape) # (561, 728, 3)
# 获取图像的高度和宽度,忽略通道数
h, w = img.shape[:2]

# 定义一个显示锚框(anchors)的函数
def display_anchors(fmap_w, fmap_h, s):
    # 设置图像的显示大小
    d2l.set_figsize()
    # 创建一个零张量,形状为(1, 10, fmap_h, fmap_w),前两个维度不影响输出
    fmap = torch.zeros((1, 10, fmap_h, fmap_w))
    # 生成多尺度的锚框,sizes参数为s,ratios参数为[1, 2, 0.5]
    anchors = d2l.multibox_prior(fmap, sizes=s, ratios=[1, 2, 0.5])
    """
    sizes=s:指定了锚框的尺寸,这里传入的是一个列表 s。
    例如,在代码的调用中 s=[0.15]、s=[0.4]、s=[0.8]。
    这些值表示锚框相对于图像尺寸的比例
    ratios=[1, 2, 0.5]:指定了锚框的长宽比,分别是 1(即正方形),
    2(即宽高比为2的矩形),以及 0.5(即宽高比为0.5的矩形)。
    """
    # 将图像宽高转化为张量,用于尺度转换
    bbox_scale = torch.tensor((w, h, w, h))

    # 显示图像上的锚框,使用工具库d2l的show_bboxes函数
    # 显示图像,获取axes,anchors乘以bbox_scale进行尺度转换
    d2l.show_bboxes(d2l.plt.imshow(img).axes, anchors[0] * bbox_scale)

# 调用display_anchors函数,特征图大小为4x4,锚框尺度为0.15
display_anchors(fmap_w=4, fmap_h=4, s=[0.15])
# 显示图像
plt.show()

# 调用display_anchors函数,特征图大小为2x2,锚框尺度为0.4
display_anchors(fmap_w=2, fmap_h=2, s=[0.4])
# 显示图像
plt.show()

# 调用display_anchors函数,特征图大小为1x1,锚框尺度为0.8
display_anchors(fmap_w=1, fmap_h=1, s=[0.8])
# 显示图像
plt.show()

运行结果:


相关推荐
tellmewhoisi1 小时前
深度学习0:数学知识:正态分布4(坐标变换的缩放比例(面积微元变换))
人工智能·深度学习
布吉岛的石头1 小时前
Java 程序员第 50 阶段14:灾难性遗忘与回放
人工智能·深度学习·transformer
在所不辞兄3 小时前
为什么神经网络在训练集损失已接近零后继续训练,测试性能仍可能继续提升,而不是单纯地越来越过拟合?
人工智能·深度学习·神经网络·机器学习·智能仿真
Rocky Ding*5 小时前
深入浅出IDM-VTON论文精读:虚拟试衣怎样同时保住服装语义与局部细节
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·idm-vton
weixin_468466856 小时前
视觉Transformer的“第二次革命”:ViT³如何用测试时训练重构注意力范式
人工智能·深度学习·机器学习·ai·重构·transformer·vit
电科_银尘7 小时前
【深度学习项目实战·17】行人目标检测:用Faster R-CNN找出图片中的行人
深度学习·目标检测·r语言
在所不辞兄1 天前
为什么学习率预热(warmup)能显著改善Transformer等大模型的训练稳定性?
人工智能·深度学习·神经网络·机器学习·智能仿真
武子康1 天前
语音聊了十分钟,为什么不能拿转写分钟算费用?
人工智能·深度学习·agent
武天旭1 天前
AI安全--AI大模型的隐私保护解析
人工智能·深度学习·安全·机器学习
会飞锦鲤1 天前
基于 SVM + HOG 的铸造缺陷检测系统
python·opencv·机器学习·计算机视觉·缺陷检测·图像分类·svm