精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PyTorch教程-14.6. 對(duì)象檢測(cè)數(shù)據(jù)集

jf_pJlTbmA9 ? 來(lái)源:PyTorch ? 作者:PyTorch ? 2023-06-05 15:44 ? 次閱讀

目標(biāo)檢測(cè)領(lǐng)域沒(méi)有MNIST和Fashion-MNIST這樣的小型數(shù)據(jù)集。為了快速演示對(duì)象檢測(cè)模型,我們收集并標(biāo)記了一個(gè)小型數(shù)據(jù)集。首先,我們從辦公室拍攝了免費(fèi)香蕉的照片,并生成了 1000 張不同旋轉(zhuǎn)和大小的香蕉圖像。然后我們將每個(gè)香蕉圖像放置在一些背景圖像上的隨機(jī)位置。最后,我們?yōu)閳D像上的那些香蕉標(biāo)記了邊界框。

14.6.1。下載數(shù)據(jù)集

帶有所有圖像和 csv 標(biāo)簽文件的香蕉檢測(cè)數(shù)據(jù)集可以直接從互聯(lián)網(wǎng)上下載。

%matplotlib inline
import os
import pandas as pd
import torch
import torchvision
from d2l import torch as d2l

#@save
d2l.DATA_HUB['banana-detection'] = (
  d2l.DATA_URL + 'banana-detection.zip',
  '5de26c8fce5ccdea9f91267273464dc968d20d72')

%matplotlib inline
import os
import pandas as pd
from mxnet import gluon, image, np, npx
from d2l import mxnet as d2l

npx.set_np()

#@save
d2l.DATA_HUB['banana-detection'] = (
  d2l.DATA_URL + 'banana-detection.zip',
  '5de26c8fce5ccdea9f91267273464dc968d20d72')

14.6.2。讀取數(shù)據(jù)集

我們將在 read_data_bananas下面的函數(shù)中讀取香蕉檢測(cè)數(shù)據(jù)集。數(shù)據(jù)集包括一個(gè) csv 文件,用于對(duì)象類標(biāo)簽和左上角和右下角的地面實(shí)況邊界框坐標(biāo)。

#@save
def read_data_bananas(is_train=True):
  """Read the banana detection dataset images and labels."""
  data_dir = d2l.download_extract('banana-detection')
  csv_fname = os.path.join(data_dir, 'bananas_train' if is_train
               else 'bananas_val', 'label.csv')
  csv_data = pd.read_csv(csv_fname)
  csv_data = csv_data.set_index('img_name')
  images, targets = [], []
  for img_name, target in csv_data.iterrows():
    images.append(torchvision.io.read_image(
      os.path.join(data_dir, 'bananas_train' if is_train else
             'bananas_val', 'images', f'{img_name}')))
    # Here `target` contains (class, upper-left x, upper-left y,
    # lower-right x, lower-right y), where all the images have the same
    # banana class (index 0)
    targets.append(list(target))
  return images, torch.tensor(targets).unsqueeze(1) / 256

#@save
def read_data_bananas(is_train=True):
  """Read the banana detection dataset images and labels."""
  data_dir = d2l.download_extract('banana-detection')
  csv_fname = os.path.join(data_dir, 'bananas_train' if is_train
               else 'bananas_val', 'label.csv')
  csv_data = pd.read_csv(csv_fname)
  csv_data = csv_data.set_index('img_name')
  images, targets = [], []
  for img_name, target in csv_data.iterrows():
    images.append(image.imread(
      os.path.join(data_dir, 'bananas_train' if is_train else
             'bananas_val', 'images', f'{img_name}')))
    # Here `target` contains (class, upper-left x, upper-left y,
    # lower-right x, lower-right y), where all the images have the same
    # banana class (index 0)
    targets.append(list(target))
  return images, np.expand_dims(np.array(targets), 1) / 256

通過(guò)使用read_data_bananas函數(shù)讀取圖像和標(biāo)簽,下面的BananasDataset類將允許我們創(chuàng)建一個(gè)自定義Dataset實(shí)例來(lái)加載香蕉檢測(cè)數(shù)據(jù)集。

#@save
class BananasDataset(torch.utils.data.Dataset):
  """A customized dataset to load the banana detection dataset."""
  def __init__(self, is_train):
    self.features, self.labels = read_data_bananas(is_train)
    print('read ' + str(len(self.features)) + (f' training examples' if
       is_train else f' validation examples'))

  def __getitem__(self, idx):
    return (self.features[idx].float(), self.labels[idx])

  def __len__(self):
    return len(self.features)

#@save
class BananasDataset(gluon.data.Dataset):
  """A customized dataset to load the banana detection dataset."""
  def __init__(self, is_train):
    self.features, self.labels = read_data_bananas(is_train)
    print('read ' + str(len(self.features)) + (f' training examples' if
       is_train else f' validation examples'))

  def __getitem__(self, idx):
    return (self.features[idx].astype('float32').transpose(2, 0, 1),
        self.labels[idx])

  def __len__(self):
    return len(self.features)

最后,我們定義load_data_bananas函數(shù)為訓(xùn)練集和測(cè)試集返回兩個(gè)數(shù)據(jù)迭代器實(shí)例。對(duì)于測(cè)試數(shù)據(jù)集,不需要隨機(jī)讀取。

#@save
def load_data_bananas(batch_size):
  """Load the banana detection dataset."""
  train_iter = torch.utils.data.DataLoader(BananasDataset(is_train=True),
                       batch_size, shuffle=True)
  val_iter = torch.utils.data.DataLoader(BananasDataset(is_train=False),
                      batch_size)
  return train_iter, val_iter

#@save
def load_data_bananas(batch_size):
  """Load the banana detection dataset."""
  train_iter = gluon.data.DataLoader(BananasDataset(is_train=True),
                    batch_size, shuffle=True)
  val_iter = gluon.data.DataLoader(BananasDataset(is_train=False),
                   batch_size)
  return train_iter, val_iter

讓我們讀取一個(gè) minibatch 并打印這個(gè) minibatch 中圖像和標(biāo)簽的形狀。圖像小批量的形狀(批量大小、通道數(shù)、高度、寬度)看起來(lái)很熟悉:它與我們之前的圖像分類任務(wù)相同。label minibatch的shape是(batch size,m, 5), 其中m是任何圖像在數(shù)據(jù)集中具有的最大可能數(shù)量的邊界框。

雖然 minibatch 的計(jì)算效率更高,但它要求所有圖像示例都包含相同數(shù)量的邊界框,以通過(guò)連接形成一個(gè) minibatch。通常,圖像可能具有不同數(shù)量的邊界框;因此,圖像少于m 邊界框?qū)⒈环欠ㄟ吔缈蛱畛洌钡?m到達(dá)了。然后每個(gè)邊界框的標(biāo)簽用一個(gè)長(zhǎng)度為5的數(shù)組表示,數(shù)組的第一個(gè)元素是邊界框中物體的類,其中-1表示填充的非法邊界框。數(shù)組的其余四個(gè)元素是 (x,y)-邊界框左上角和右下角的坐標(biāo)值(范圍在0到1之間)。對(duì)于香蕉數(shù)據(jù)集,由于每張圖像上只有一個(gè)邊界框,我們有m=1.

batch_size, edge_size = 32, 256
train_iter, _ = load_data_bananas(batch_size)
batch = next(iter(train_iter))
batch[0].shape, batch[1].shape

read 1000 training examples
read 100 validation examples

(torch.Size([32, 3, 256, 256]), torch.Size([32, 1, 5]))

batch_size, edge_size = 32, 256
train_iter, _ = load_data_bananas(batch_size)
batch = next(iter(train_iter))
batch[0].shape, batch[1].shape

read 1000 training examples
read 100 validation examples

((32, 3, 256, 256), (32, 1, 5))

14.6.3。示范

讓我們演示十張帶有標(biāo)記的真實(shí)邊界框的圖像。我們可以看到香蕉的旋轉(zhuǎn)、大小和位置在所有這些圖像中都不同。當(dāng)然,這只是一個(gè)簡(jiǎn)單的人工數(shù)據(jù)集。實(shí)際上,真實(shí)世界的數(shù)據(jù)集通常要復(fù)雜得多。

imgs = (batch[0][:10].permute(0, 2, 3, 1)) / 255
axes = d2l.show_images(imgs, 2, 5, scale=2)
for ax, label in zip(axes, batch[1][:10]):
  d2l.show_bboxes(ax, [label[0][1:5] * edge_size], colors=['w'])

poYBAGR4YoqASRiBAAZcwltTfMw221.png

imgs = (batch[0][:10].transpose(0, 2, 3, 1)) / 255
axes = d2l.show_images(imgs, 2, 5, scale=2)
for ax, label in zip(axes, batch[1][:10]):
  d2l.show_bboxes(ax, [label[0][1:5] * edge_size], colors=['w'])

pYYBAGR4Yo6ACb2eAAY5zXYFqT8820.png

14.6.4。概括

我們收集的香蕉檢測(cè)數(shù)據(jù)集可用于演示對(duì)象檢測(cè)模型。

目標(biāo)檢測(cè)的數(shù)據(jù)加載類似于圖像分類。然而,在目標(biāo)檢測(cè)中,標(biāo)簽還包含圖像分類中缺少的真實(shí)邊界框信息

14.6.5。練習(xí)

演示香蕉檢測(cè)數(shù)據(jù)集中帶有真實(shí)邊界框的其他圖像。它們?cè)谶吔缈蚝蛯?duì)象方面有何不同?

假設(shè)我們要將數(shù)據(jù)增強(qiáng)(例如隨機(jī)裁剪)應(yīng)用于對(duì)象檢測(cè)。它與圖像分類中的有何不同?提示:如果裁剪后的圖像只包含物體的一小部分怎么辦?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1205

    瀏覽量

    24644
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    803

    瀏覽量

    13150
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于數(shù)據(jù)對(duì)象平均離群因子的離群點(diǎn)選擇算法

    基于數(shù)據(jù)對(duì)象平均離群因子的離群點(diǎn)選擇算法_朱付保
    發(fā)表于 01-03 17:41 ?0次下載

    利用Python和PyTorch處理面向對(duì)象數(shù)據(jù)

    本篇是利用 Python 和 PyTorch 處理面向對(duì)象數(shù)據(jù)系列博客的第 2 篇。 如需閱讀第 1 篇:原始數(shù)據(jù)
    的頭像 發(fā)表于 08-25 15:30 ?2955次閱讀

    利用 Python 和 PyTorch 處理面向對(duì)象數(shù)據(jù)(2)) :創(chuàng)建數(shù)據(jù)對(duì)象

    本篇是利用 Python 和 PyTorch 處理面向對(duì)象數(shù)據(jù)系列博客的第 2 篇。我們?cè)诘?1 部分中已定義 MyDataset 類,現(xiàn)在,讓我們來(lái)例化 MyDataset
    的頭像 發(fā)表于 08-02 17:35 ?903次閱讀
    利用 Python 和 <b class='flag-5'>PyTorch</b> 處理面向<b class='flag-5'>對(duì)象</b>的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>(2)) :創(chuàng)建<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b><b class='flag-5'>對(duì)象</b>

    利用Python和PyTorch處理面向對(duì)象數(shù)據(jù)(1)

    在本文中,我們將提供一種高效方法,用于完成數(shù)據(jù)的交互、組織以及最終變換(預(yù)處理)。隨后,我們將講解如何在訓(xùn)練過(guò)程中正確地把數(shù)據(jù)輸入給模型。PyTorch 框架將幫助我們實(shí)現(xiàn)此目標(biāo),我們還將從頭開(kāi)始編寫幾個(gè)類。
    的頭像 發(fā)表于 08-02 08:03 ?655次閱讀

    PyTorch教程3.2之面向對(duì)象的設(shè)計(jì)實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程3.2之面向對(duì)象的設(shè)計(jì)實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 15:48 ?0次下載
    <b class='flag-5'>PyTorch</b>教程3.2之面向<b class='flag-5'>對(duì)象</b>的設(shè)計(jì)實(shí)現(xiàn)

    PyTorch教程4.2之圖像分類數(shù)據(jù)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程4.2之圖像分類數(shù)據(jù).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 15:41 ?0次下載
    <b class='flag-5'>PyTorch</b>教程4.2之圖像分類<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>

    PyTorch教程10.5之機(jī)器翻譯和數(shù)據(jù)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程10.5之機(jī)器翻譯和數(shù)據(jù).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 15:14 ?0次下載
    <b class='flag-5'>PyTorch</b>教程10.5之機(jī)器翻譯和<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>

    PyTorch教程14.6對(duì)象檢測(cè)數(shù)據(jù)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程14.6對(duì)象檢測(cè)數(shù)據(jù).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 11:23 ?0次下載
    <b class='flag-5'>PyTorch</b>教程<b class='flag-5'>14.6</b>之<b class='flag-5'>對(duì)象</b><b class='flag-5'>檢測(cè)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>

    PyTorch教程14.9之語(yǔ)義分割和數(shù)據(jù)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程14.9之語(yǔ)義分割和數(shù)據(jù).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 11:10 ?0次下載
    <b class='flag-5'>PyTorch</b>教程14.9之語(yǔ)義分割和<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>

    PyTorch教程15.9之預(yù)訓(xùn)練BERT的數(shù)據(jù)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程15.9之預(yù)訓(xùn)練BERT的數(shù)據(jù).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 11:06 ?0次下載
    <b class='flag-5'>PyTorch</b>教程15.9之預(yù)訓(xùn)練BERT的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>

    PyTorch教程16.1之情緒分析和數(shù)據(jù)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程16.1之情緒分析和數(shù)據(jù).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 10:54 ?0次下載
    <b class='flag-5'>PyTorch</b>教程16.1之情緒分析和<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>

    PyTorch教程16.4之自然語(yǔ)言推理和數(shù)據(jù)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程16.4之自然語(yǔ)言推理和數(shù)據(jù).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 10:57 ?0次下載
    <b class='flag-5'>PyTorch</b>教程16.4之自然語(yǔ)言推理和<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>

    沒(méi)有“中間商賺差價(jià)”, OpenVINO? 直接支持 PyTorch 模型對(duì)象

    體驗(yàn)—— OpenVINO 的 mo 工具可以直接將 PyTorch 模型對(duì)象轉(zhuǎn)化為 OpenVINO 的模型對(duì)象,開(kāi)發(fā)者可以不需要將 ONNX 模型作為中間過(guò)渡。
    的頭像 發(fā)表于 06-27 16:39 ?720次閱讀
    沒(méi)有“中間商賺差價(jià)”, OpenVINO? 直接支持 <b class='flag-5'>PyTorch</b> 模型<b class='flag-5'>對(duì)象</b>

    YOLOv8實(shí)現(xiàn)旋轉(zhuǎn)對(duì)象檢測(cè)

    YOLOv8框架在在支持分類、對(duì)象檢測(cè)、實(shí)例分割、姿態(tài)評(píng)估的基礎(chǔ)上更近一步,現(xiàn)已經(jīng)支持旋轉(zhuǎn)對(duì)象檢測(cè)(OBB),基于DOTA數(shù)據(jù)
    的頭像 發(fā)表于 01-11 10:43 ?1688次閱讀
    YOLOv8實(shí)現(xiàn)旋轉(zhuǎn)<b class='flag-5'>對(duì)象</b><b class='flag-5'>檢測(cè)</b>

    PyTorch如何訓(xùn)練自己的數(shù)據(jù)

    PyTorch是一個(gè)廣泛使用的深度學(xué)習(xí)框架,它以其靈活性、易用性和強(qiáng)大的動(dòng)態(tài)圖特性而聞名。在訓(xùn)練深度學(xué)習(xí)模型時(shí),數(shù)據(jù)是不可或缺的組成部分。然而,很多時(shí)候,我們可能需要使用自己的數(shù)據(jù)
    的頭像 發(fā)表于 07-02 14:09 ?1332次閱讀