从零学习目标检测,YOLOv3代码学习(1)

1 引言

由于项目需要,需要掌握目标检测相关知识,只做过copy别人代码进行CNN分类的我零基础,压力山大。本博客所学习的代码来自github上对YOLOv3的PyTorch版本复现,作者为苹果公司的机器学习工程师eriklindernoren,项目地址为:https://github.com/eriklindernoren,fork到我的仓库的时间为2020年11月6日。从github下载的文件名为PyTorch-YOLOv3-master。整个项目的结构如下:
在这里插入图片描述

2 data

学习(1)就应该从最简单的开始吧,先探索下data文件夹,看看它功能是个啥。data文件结构是这样的:

  • data
    • custom
    • samples
    • coco.names
    • get_coco_dataset.sh

其中,samples文件夹里存了9张用于目标检测的jpg图像,图像并没有画出bounding box,只是单纯的图像,每个图像高度和宽度也不是统一的。custom里面有1张包含火车(trian)的图像和一些txt文件,这个文件夹如其名custom,告诉了我们训练自己的数据,那文件夹的格式应该是什么样的,比如哪里放图像啊,哪里放图像的标签啊,它的结构如下:

  • custom
    • images
      • train.jpg
    • labels
      • train.txt
    • classes.names
    • train.txt
    • valid.txt

吐槽一下,由于给的例子是火车(train),容易让人和训练一词搞混。除了custom下的train.txt里的train是训练,其他train应该都是火车。值得注意的是labels下的train.txt文件给出了yolo下的标签格式。

0 0.515 0.5 0.21694873 0.18286777

第一列是种类编号,第0类对应了这个文件下的classes.names文件夹中的只有一行数据写着train(火车)。后四列是bounding box的位置信息。再回到data文件夹里来说,coco.names是一个.names文件,用记事本打开来看,该文件存储了coco数据集每一类的标签名称,比如person、bicycle、car之类,共有80行,即80个类。get_coco_dataset.sh是一个bash文件,是用来下载COCO数据集的。下载好后数据集会保存在data文件夹下。这里分析一下这个sh文件。

#!/bin/bash

# CREDIT: https://github.com/pjreddie/darknet/tree/master/scripts/get_coco_dataset.sh

# Clone COCO API
git clone https://github.com/pdollar/coco
cd coco

mkdir images
cd images

# Download Images
wget -c https://pjreddie.com/media/files/train2014.zip
wget -c https://pjreddie.com/media/files/val2014.zip

# Unzip
unzip -q train2014.zip
unzip -q val2014.zip

cd ..

# Download COCO Metadata
wget -c https://pjreddie.com/media/files/instances_train-val2014.zip
wget -c https://pjreddie.com/media/files/coco/5k.part
wget -c https://pjreddie.com/media/files/coco/trainvalno5k.part
wget -c https://pjreddie.com/media/files/coco/labels.tgz
tar xzf labels.tgz
unzip -q instances_train-val2014.zip

# Set Up Image Lists
paste <(awk "{print \"$PWD\"}" <5k.part) 5k.part | tr -d '\t' > 5k.txt
paste <(awk "{print \"$PWD\"}" <trainvalno5k.part) trainvalno5k.part | tr -d '\t' > trainvalno5k.txt

看来如同文件名,就是用来下coco数据集和解压一些文件的。如果在ubuntu上运行这个文件,光下coco数据集不知道得下多少年,所以索性直接复制这6个wget -c后面的地址到迅雷里下载,自己手动实现这个sh文件。下载完成后,把六个文件都放到Downloads里。首先我们把train2014.zip和val2014.zip放到自己创建的data/coco/images/里,并用unzip进行解压。然后我们把剩下的四个文件放到data/coco/里,按照sh文件的要求,tar解压tgz文件,unzip解压zip文件。最后再执行sh文件的最后两行paste命令对两个.part文件进行操作(虽然我不知道paste是干啥的,执行就完事了)。最后整个coco数据集大概是这么热闹:在这里插入图片描述

3 assets

这个文件夹更简单,里面有四张图,是用来作为README文件里的例子(samples)展示的。

4 weights

这个文件夹里也只有一个download_weights.sh文件,使用来下载3个weights的,分别是vanilla YOLOv3,tiny YOLOv3和darknet53的weights。咱先不管那么多,用迅雷复制文件里的3个地址,给下载下来放到weights文件夹里。

5 结语

学习(1)主要分析了3个文件夹的作用,并下载了数据和权重。目前还没有涉及到模型,后面需要去啃模型这块硬骨头了。如果这篇文章里存在什么问题,欢迎各位大佬指正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值