计算机视觉之目标检测训练数据集(皮卡丘)《2》

news2024/12/28 20:23:21

在做目标检测,训练数据集的时候,可以先看前段时间的一篇基础文章:
计算机视觉之目标检测(object detection)《1》https://blog.csdn.net/weixin_41896770/article/details/128062645先熟悉一些基本知识,如:锚框,预测框,类别,偏移量之类的,然后再回到本节,可能会更好点,这里我们使用皮卡丘的数据集来训练目标检测。

训练之前我们先来看下多尺度生成锚框,还是使用上一次的猫狗图片,高宽分别是596像素和605像素。

需要知道什么是特征图:有兴趣的可以查阅:MXNet卷积神经网络对图像边缘的检测

定义:二维卷积层输出的二维数组可以看做输入在空间维度(宽和高)上某一级的表征,这个就是特征图(feature map)。这句话是什么意思呢,就是说卷积运算之后的输出,我们反过来看,其中的一个元素对应着输入中的一块区域是吧,假设多加几层卷积层,输出的数组中的一个元素,对应输入中的区域会变大,也就是说单个元素的感受野变得更加广阔,这样更能捕捉到更大尺寸的特征。(这段需要好好想想,上面的图像边缘检测,可以让你更明白)

 代码如下:

import d2lzh as d2l
from mxnet import contrib, gluon, image, nd
import numpy as np

d2l.set_figsize()
img = image.imread('dogcat.png').asnumpy()  # 高、宽、通道数(596, 605, 3)
h, w = img.shape[0:2]

def display_anchors(fmap_w, fmap_h, s):
    '''
    根据特征图的宽高与来生成
    '''
    fmap = nd.zeros((1, 10, fmap_h, fmap_w))  # 前两维的取值不影响输出结果
    # MultiBoxPrior生成锚框(输入、大小、宽高比),生成个数:大小个数+宽高比个数-1
    anchors = contrib.nd.MultiBoxPrior(fmap, sizes=s, ratios=[1, 2, 0.5])
    bbox_scale = nd.array((w, h, w, h))
    d2l.show_bboxes(d2l.plt.imshow(img).axes, anchors[0]*bbox_scale)
# 每个中心点有锚框个数:1+3-1=3,有4行4列,所以总共是3*16=48个锚框
# display_anchors(fmap_w=4,fmap_h=4,s=[0.15])

# 将特征图的高度减半,锚框增大
# display_anchors(fmap_w=4,fmap_h=2,s=[0.4])

# 将特征图的高宽都减半到1,锚框继续增大
display_anchors(fmap_w=1, fmap_h=1, s=[0.8])
d2l.plt.show()

可以看到,特征图变小,覆盖输入图像的面积就越大。既然我们已在多个尺度上生成了不同大小的锚框,相应的就需要在不同尺度下检测不同大小的目标。

皮卡丘数据集检测

这里的数据集使用了MXNet提供的im2rec工具将图像转成了二进制的RecordIO格式,该格式既可以降低数据集在磁盘上的存储开销,又能提高读取效率。其中.rec文件是80多M,虽然不大,但是下载速度很慢,可以手动下载:皮卡丘数据集

import d2lzh as d2l
from mxnet import gluon, image
from mxnet.gluon import utils as gutils
import os

def _download_pikachu(data_dir):
    '''
    下载皮卡丘数据集
    '''
    root_url = ('https://apache-mxnet.s3-accelerate.amazonaws.com/gluon/dataset/pikachu/')
    dataset = {'train.rec': 'e6bcb6ffba1ac04ff8a9b1115e650af56ee969c8',
               'train.idx': 'dcf7318b2602c06428b9988470c731621716c393',
               'val.rec': 'd6c33f799b4d058e82f2cb5bd9a976f69d72d520'}
    for k, v in dataset.items():
        gutils.download(root_url + k, os.path.join(data_dir, k), sha1_hash=v)

# d2l包已有
def load_data_pikachu(batch_size, edge_size=256):
    data_dir = '../data/pikachu'
    #_download_pikachu(data_dir)#这种方式下载很慢,不想手动下载可以去掉注释
    train_iter = image.ImageDetIter(path_imgrec=os.path.join(data_dir, 'train.rec'),
                                    path_imgidx=os.path.join(data_dir, 'train.idx'),
                                    batch_size=batch_size, data_shape=(3, edge_size, edge_size),
                                    shuffle=True, rand_crop=1, min_object_covered=0.95, max_attempts=200)
    val_iter = image.ImageDetIter(path_imgrec=os.path.join(data_dir, 'val.rec'),
                                  batch_size=batch_size, data_shape=(3, edge_size, edge_size), shuffle=False)
    return train_iter, val_iter

batch_size,edge_size=32,256
train_iter,_=load_data_pikachu(batch_size,edge_size)
batch=train_iter.next()
#(批量大小,通道数,高,宽)和(批量大小,边界框个数,(这里长度5,第一个元素是边界框所含目标,-1是填充的非法框,其余4个是对角坐标))
print(batch.data[0].shape,batch.label[0].shape)#(32, 3, 256, 256) (32, 1, 5)

#显示图像
imgs=(batch.data[0][0:10].transpose((0,2,3,1)))/255
axes=d2l.show_images(imgs,2,5).flatten()
for ax,label in zip(axes,batch.label[0][0:10]):
    d2l.show_bboxes(ax,[label[0][1:5]*edge_size],colors=['w'])
d2l.plt.show()

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

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

相关文章

『.NET』.Net Core在Linux中生成验证码的实现封装

📣读完这篇文章里你能收获到 .Net跨平台在Linux中及Windows中都可生成验证码两套已验证过的实现方案代码封装,即Copy即用快速在Centos 7.x中安装Linux字体 文章目录一、安装Linux字体1. 查看字体库2. 运行安装字体库3. 安装ttmkfdir4. 查看字体库是否已…

搜索技术——模拟退火算法

如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔空间 一:算法及模型 物理退火过程 什么是退火:是指将固体加热到足够高的温度,使分子呈随机排列状态,然后逐步降温使之冷却,最后分子…

SPECjvm 2008 小记

背景 specjvm2008是免费的,直接官网下载就可以开跑了。但俗话说的好,便宜无好货,没啥厂家买账,看官网列出的成绩公示结果,根本没几家上传成绩。 另外,SPECjvm2008本身是测试JRE的执行成绩,也就…

Android databinding之RecycleView使用与介绍(二)

一 、介绍 通过上一篇databinding接入,我们已大概了解到databinding接入的流程和数据的简单绑定。 如果你刚看这边,并不了解databinding的使用,可以查看:Android databinding的接入使用与详解(一) Activity和fragment的数据绑定…

左(6)hash,大数据,位运算

前言 仅记录学习笔记,如有错误欢迎指正。 一、哈希函数和哈希表: hash(): (1) 输入是无限的,输出有限! (2)相同的输入,相同的输出(无随机因子) (3)不同的输入,也可能相…

jQuery 语法

通过 jQuery,您可以选取(查询,query) HTML 元素,并对它们执行"操作"(actions)。 jQuery 语法 jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作。 基础语法…

【Python教学】pyqt6入门到入土系列,超详细教学讲解

一、什么是PyQt6? 简单介绍一下PyQt6 1、基础简介 PyQt6 Digia 公司的 Qt 程序的 Python 中间件。Qt库是最强大的GUI库之一。PyQt6的官网:www.riverbankcomputing.co.uk/news。PyQt6是由Riverbank Computing公司开发的 资料大礼包点击蓝色字体领取 Python零基础…

机器学习6scikit-learn中的scaler

文章目录一、scikit-learn中的scaler对测试数据集如何归一化?测试数据是模拟真实环境:综上二、演示一、scikit-learn中的scaler 对测试数据集如何归一化? 测试数据集不能跟训练数据集归一化一样,应该把测试数据集与训练数据集归…

Java JDK 环境变量配置教程

文章目录Java JDK 环境变量配置JDK 11 环境变量配置详细步骤Java JDK 环境变量配置 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。 环境变量…

第二证券|抖音发布三季度安全透明度报告,整治贩卖焦虑广告近3万条

近来,抖音发布《2022年第三季度安全透明度陈述》(以下简称《陈述》)。《陈述》显现经过要点整治,渠道不标准表达削减超越30%,不实信息被告发量同比下降36.7%,整治贩卖焦虑广告2.9万条。一起,抖音还更新了《社区自律条约…

关于我对线程安全问题中死锁的理解

文章目录1.什么是死锁2.三个典型情况3.可重入与不可重入4.死锁的四个必要条件5.如何破除死锁1.什么是死锁 比如张三谈了一个女朋友,张三就对这个女朋友加锁了。 此时李四也看上了这个女生,但是他只能等待张三分手(解锁)后&#xf…

[附源码]计算机毕业设计保护濒危动物公益网站Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

赋能千百行加快 “5G+工业互联网”落地深耕

目前,我国5G基站已达196.8万个,“5G工业互联网”建设项目3100个,5G与工业互联网融合应用深入工业设计、制造、管理、服务等各环节,在促进传统企业提质降本增效的同时,不断拓展信息通信产业新蓝海。 记者从工信部获悉&a…

Nginx部署Vue前端项目

系统环境:Mac Pro—10.15.7版本 Nginx版本:1.19.6 一、安装Nginx brew install nginx 1、安装完成 Nginx的配置文件目录:/usr/local/etc/nginx Nginx的安装目录:/usr/local/Cellar/nginx 2、启动Nginx brew services star…

Linux虚拟机共享文件夹不显示问题终极解决方法

打开共享文件夹处查看一下,我的结果如下图(没有显示共享文件内容): 接着打开终端: 输入命令:没有共享目录显示 解决方法: 输入:sudo apt-get install open-vm-tools 等待安装完 …

音乐在线教育解决方案,打造在线教育高品质教学体验

音乐是一种在时间中流动的形态,有节奏的音乐,能给人带来心理的快乐和艺术的享受,学一门乐器成为了很多人的选择。因此,音乐教育培训机构在搭建线上音乐课程时,就需要选择低延时、高同步、画质还原、高保真的技术方案&a…

基于轻量级CNN的12306验证码识别分析系统

在我很早的一篇文章中有写过图标型验证码识别的实践项目,这里主要是基于以往的实践经历做出的技术升级,包括:模型轻量化、界面开发、Grad-CAM热力图集成等。 话不多说,首先看效果: 基于CNN的轻量级12306验证码识别分析…

用Python预测世界杯球赛结果,还别说准确度还是蛮高的

前言 那么四年一度的世界杯即将要在卡塔尔开幕了,对于不少热爱足球运动的球迷来说,这可是十分难得的盛宴,而对于最后大力神杯的归属,相信很多人都满怀着期待,每个人心中都有不同的答案。 今天我就通过Python数据分析…

Word控件Spire.Doc 【图像形状】教程(10): 如何在C#中重置word文档的形状大小

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

SEO优化之扁平化目录结构PbootCMS

在网站内部优化中,扁平化的目录结构对于一个网站来讲是非常有意义的。我们经常看到一些网站结构混乱,搞的你都不知道哪里是哪里了。而有的网站结构非常清晰,这样用户喜欢,搜索引擎也喜欢。而PbootCMS 2.0开始,系统也默…