Datawhale炼丹之Object Detetion(1)colab环境配置+数据集导入+目标检测的基本概念

本文介绍了如何在Colab环境中配置深度学习环境,特别是针对目标检测项目的设置,包括挂载Google Drive、导入VOC数据集和数据预处理。同时,文章探讨了目标检测的基本概念,如目标框和交并比,为初学者提供了一个清晰的入门指南。
摘要由CSDN通过智能技术生成


前言

一时兴起和好朋友一起组队参加了Datawhale的OD小项目,索性也算是第一次做CV的项目了,顺便练练pytorch和神经网络的内容。

一、关于环境

环境准备实在是深度学习的一道坎,不得不说为了在实验室的电脑上装对版本真的是煞费苦心。自己的电脑确实不带英伟达的显卡(希望有人资助我换电脑),也不想去实验室跑(可能会真香),这次就使用了谷歌的colab作为主要的编译环境。

colab是google的一款在线jupyter notebook,主要有两大好处

  • 不用配置环境,内部大部分都已经集成好了,也不用自己安装cuda
  • 可以白嫖一下免费的GPU

当然也有一些缺点

  • google懂的都懂,需要技术,且容易断线
  • 毕竟是白嫖的,和实验室的1080ti还是有很大差距
  • 需要和Google drive配合,解压什么的速度还是感人的

二、Colab环境和数据集导入

1. 挂载Google Drive

其实也可以直接在colab里面上传文件,但每次退出后都要重新导入,而且如果需要使用GPU的话还是需要做挂载的,挂载的命令网上也有很多了。

from google.colab import drive
drive.mount('/content/drive/')

这样我们就把Google Drive的文件挂载到了/content/drive目录下。我在Google Drive内新建了一个colab文件夹,这样就可以进入到该目录下

% cd drive/MyDrive/colab

注意%不可以省略。在Colab中可以使用!+shell的方式来使用Ubuntu Linux的命令,类似于一个终端。例如查看当前目录下的文件

! ls

如果要使用GPU的话,可以选择编辑->笔记本设置然后选择GPU
在这里插入图片描述
可以用

! nvidia-smi

查看使用的显卡版本。因为是第一次使用,所以Google分配了Tesla t4.
在这里插入图片描述

2. 导入数据集

首先使用git clone命令将开源代码加载到drive中,也可以先本地下载完成以后上传至drive,个人感觉前者的速度更快一些。

本项目所使用的数据集为Yolo的VOC数据集。该数据集是目标检测领域最常用的标准数据之一,几乎所有检测方向上的论文都会给出该数据集上的效果。具体的说,我们使用VOC2007和VOC2012作为训练和测试的数据。

教程里提供了图形界面的方法,这里我们直接在colab调用命令行。首先切换到dataset目录下

% cd dive-into-cv-pytorch-master/dataset

然后下载数据集

! wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
! wget https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar
! wget https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar

之后进行解压

! tar xf VOCtrainval_11-May-2012.tar
! tar xf VOCtrainval_06-Nov-2007.tar
! tar xf VOCtest_06-Nov-2007.tar

这样数据集就导入成功啦!

3. 数据集预处理

本部分我们需要将VOC数据进行一些预处理。首先可以看一看有哪些数据。

在这里插入图片描述

其中,后两个是用作数据分割的。我们主要看前三个数据集。

  • JPEGImages:

    这个文件夹中存放所有的图片,包括训练验证测试用到的所有图片。

  • ImageSets

    这个文件夹中包含三个子文件夹,Layout、Main、Segmentation

    • Layout文件夹中存放的是train,valid,test和train+valid数据集的文件名
    • Segmentation文件夹中存放的是分割所用train,valid,test和train+valid数据集的文件名
    • Main文件夹中存放的是各个类别所在图片的文件名,比如cow_val,表示valid数据集中,包含有cow类别目标的图片名称。
  • Annotations

    Annotation文件夹中存放着每张图片相关的标注信息,以xml格式的文件存储,可以通过记事本或者浏览器打开。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YduckZlJ-1608111332385)(image-20201216105847868.png)]

    我们需要使用的,是filename,size以及object的类别和坐标。下面我们需要构建DataLoader,首先是预处理数据集,主要是提前将记录标注信息的xml文件(Annotations)进行解析,并将信息整理到json文件之中,这样在运行训练脚本时,只需简单的从json文件中读取已经按想要的格式存储好的标签信息即可。

    from utils import create_data_lists
    
    if __name__ == '__main__':
        create_data_lists(voc07_path='../../../dataset/VOCdevkit/VOC2007',
                          voc12_path='../../../dataset/VOCdevkit/VOC2012',
                          output_folder='../../../dataset/VOCdevkit')
    

    然后就需要定义DataLoader

    train_dataset = PascalVOCDataset(data_folder,
                                     split='train',
                                     keep_difficult=keep_difficult)
    train_loader = torch.utils.data.DataLoader(train_dataset, 
                                               batch_size=batch_size, 
                                               shuffle=True,
                                               collate_fn=train_dataset.collate_fn,
                                               num_workers=workers,
                                               pin_memory=True)
    

    那究竟什么是Dataloader呢?pytorch中,所有的数据集都继承自一个类torch.utils.data.Dataset,这个类实现了__getitem____len__两个接口,做任何一个数据集都需要实现这两个方法。当然,在pytorch中,torchvision.datasets这个api以及给了我们很多现成的数据集,使用这个API的好处在于我们不需要再重写上述两个方法。数据集定义完成以后,我们还需要进行数据加载,也就是使用Dataloader来完成数据加载。总结一下,pytorch对数据的预处理并构建加载数据集的步骤如下

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值