精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久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.1. 圖像增強(qiáng)

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

在8.1 節(jié)中,我們提到大型數(shù)據(jù)集是深度神經(jīng)網(wǎng)絡(luò)在各種應(yīng)用中取得成功的先決條件。圖像增強(qiáng)在對(duì)訓(xùn)練圖像進(jìn)行一系列隨機(jī)變化后生成相似但不同的訓(xùn)練示例,從而擴(kuò)大了訓(xùn)練集的大小。或者,圖像增強(qiáng)的動(dòng)機(jī)可能是訓(xùn)練示例的隨機(jī)調(diào)整允許模型減少對(duì)某些屬性的依賴,從而提高它們的泛化能力。例如,我們可以通過(guò)不同的方式裁剪圖像,使感興趣的對(duì)象出現(xiàn)在不同的位置,從而減少模型對(duì)對(duì)象位置的依賴。我們還可以調(diào)整亮度和顏色等因素,以降低模型對(duì)顏色的敏感度。圖像增強(qiáng)對(duì)于當(dāng)時(shí) AlexNet 的成功來(lái)說(shuō)可能是不可或缺的。在本節(jié)中,我們將討論這種在計(jì)算機(jī)視覺(jué)中廣泛使用的技術(shù)。

%matplotlib inline
import torch
import torchvision
from torch import nn
from d2l import torch as d2l

%matplotlib inline
from mxnet import autograd, gluon, image, init, np, npx
from mxnet.gluon import nn
from d2l import mxnet as d2l

npx.set_np()

14.1.1。常見(jiàn)的圖像增強(qiáng)方法

在我們對(duì)常見(jiàn)圖像增強(qiáng)方法的研究中,我們將使用以下方法400×500形象一個(gè)例子。

d2l.set_figsize()
img = d2l.Image.open('../img/cat1.jpg')
d2l.plt.imshow(img);

d2l.set_figsize()
img = image.imread('../img/cat1.jpg')
d2l.plt.imshow(img.asnumpy());

大多數(shù)圖像增強(qiáng)方法都具有一定的隨機(jī)性。為了方便我們觀察圖像增強(qiáng)的效果,接下來(lái)我們定義一個(gè)輔助函數(shù)apply。aug此函數(shù)在輸入圖像上多次運(yùn)行圖像增強(qiáng)方法img 并顯示所有結(jié)果。

def apply(img, aug, num_rows=2, num_cols=4, scale=1.5):
  Y = [aug(img) for _ in range(num_rows * num_cols)]
  d2l.show_images(Y, num_rows, num_cols, scale=scale)

def apply(img, aug, num_rows=2, num_cols=4, scale=1.5):
  Y = [aug(img) for _ in range(num_rows * num_cols)]
  d2l.show_images(Y, num_rows, num_cols, scale=scale)

14.1.1.1。翻轉(zhuǎn)和裁剪

左右翻轉(zhuǎn)圖像通常不會(huì)改變對(duì)象的類別。這是最早和最廣泛使用的圖像增強(qiáng)方法之一。接下來(lái),我們使用該transforms模塊創(chuàng)建實(shí)例RandomHorizontalFlip,它以 50% 的幾率左右翻轉(zhuǎn)圖像。

apply(img, torchvision.transforms.RandomHorizontalFlip())

上下翻轉(zhuǎn)不像左右翻轉(zhuǎn)那樣常見(jiàn)。但至少對(duì)于這個(gè)示例圖像,上下翻轉(zhuǎn)并不妨礙識(shí)別。接下來(lái),我們創(chuàng)建一個(gè)RandomVerticalFlip實(shí)例,以 50% 的幾率上下翻轉(zhuǎn)圖像。

apply(img, torchvision.transforms.RandomVerticalFlip())

Flipping the image left and right usually does not change the category of the object. This is one of the earliest and most widely used methods of image augmentation. Next, we use the transforms module to create the RandomFlipLeftRight instance, which flips an image left and right with a 50% chance.

apply(img, gluon.data.vision.transforms.RandomFlipLeftRight())

Flipping up and down is not as common as flipping left and right. But at least for this example image, flipping up and down does not hinder recognition. Next, we create a RandomFlipTopBottom instance to flip an image up and down with a 50% chance.

apply(img, gluon.data.vision.transforms.RandomFlipTopBottom())

在我們使用的示例圖像中,貓位于圖像的中間,但一般情況下可能并非如此。在7.5 節(jié)中,我們解釋了池化層可以降低卷積層對(duì)目標(biāo)位置的敏感性。此外,我們還可以隨機(jī)裁剪圖像,讓物體以不同的尺度出現(xiàn)在圖像中的不同位置,這樣也可以降低模型對(duì)目標(biāo)位置的敏感度。

在下面的代碼中,我們隨機(jī)裁剪一個(gè)面積為 10%~100%每次都是原始區(qū)域的大小,這個(gè)區(qū)域的寬高比是隨機(jī)選擇的 0.5~2. 然后,該區(qū)域的寬度和高度都縮放為 200 像素。除非另有說(shuō)明,之間的隨機(jī)數(shù)a和b本節(jié)中指的是從區(qū)間中隨機(jī)均勻采樣得到的連續(xù)值 [a,b].

shape_aug = torchvision.transforms.RandomResizedCrop(
  (200, 200), scale=(0.1, 1), ratio=(0.5, 2))
apply(img, shape_aug)

shape_aug = gluon.data.vision.transforms.RandomResizedCrop(
  (200, 200), scale=(0.1, 1), ratio=(0.5, 2))
apply(img, shape_aug)

14.1.1.2。改變顏色

另一種增強(qiáng)方法是改變顏色。我們可以改變圖像顏色的四個(gè)方面:亮度、對(duì)比度、飽和度和色調(diào)。在下面的示例中,我們將圖像的亮度隨機(jī)更改為 50% (1?0.5) 和 150% (1+0.5) 的原始圖像。

apply(img, torchvision.transforms.ColorJitter(
  brightness=0.5, contrast=0, saturation=0, hue=0))

apply(img, gluon.data.vision.transforms.RandomBrightness(0.5))

同樣,我們可以隨機(jī)改變圖像的色調(diào)。

apply(img, torchvision.transforms.ColorJitter(
  brightness=0, contrast=0, saturation=0, hue=0.5))

pYYBAGR9OyiAKZ5XAAKgBf48WXw811.svg

apply(img, gluon.data.vision.transforms.RandomHue(0.5))

pYYBAGR9OyuAPyxyAAKjNZd5bQw461.svg

我們也可以創(chuàng)建一個(gè)RandomColorJitter實(shí)例,同時(shí)設(shè)置如何隨機(jī)改變圖片的brightness, contrast, saturation, 。hue

color_aug = torchvision.transforms.ColorJitter(
  brightness=0.5, contrast=0.5, saturation=0.5, hue=0.5)
apply(img, color_aug)

pYYBAGR9Oy2AE_XgAAJd2aug_jE886.svg

color_aug = gluon.data.vision.transforms.RandomColorJitter(
  brightness=0.5, contrast=0.5, saturation=0.5, hue=0.5)
apply(img, color_aug)

poYBAGR9Oy-AVr8NAAJhlfJqe4U114.svg

14.1.1.3。結(jié)合多種圖像增強(qiáng)方法

在實(shí)踐中,我們將結(jié)合多種圖像增強(qiáng)方法。例如,我們可以組合上面定義的不同圖像增強(qiáng)方法,并通過(guò)實(shí)例將它們應(yīng)用于每個(gè)圖像Compose。

augs = torchvision.transforms.Compose([
  torchvision.transforms.RandomHorizontalFlip(), color_aug, shape_aug])
apply(img, augs)

pYYBAGR9OzKAQ7GaAAKsrZQVOms690.svg

augs = gluon.data.vision.transforms.Compose([
  gluon.data.vision.transforms.RandomFlipLeftRight(), color_aug, shape_aug])
apply(img, augs)

poYBAGR9OzWAQEfaAAK3SaxJQmU062.svg

14.1.2。圖像增強(qiáng)訓(xùn)練

讓我們訓(xùn)練一個(gè)具有圖像增強(qiáng)功能的模型。這里我們使用 CIFAR-10 數(shù)據(jù)集而不是我們之前使用的 Fashion-MNIST 數(shù)據(jù)集。這是因?yàn)?Fashion-MNIST 數(shù)據(jù)集中物體的位置和大小已經(jīng)歸一化,而 CIFAR-10 數(shù)據(jù)集中物體的顏色和大小有更顯著的差異。CIFAR-10 數(shù)據(jù)集中的前 32 個(gè)訓(xùn)練圖像如下所示。

all_images = torchvision.datasets.CIFAR10(train=True, root="../data",
                     download=True)
d2l.show_images([all_images[i][0] for i in range(32)], 4, 8, scale=0.8);

Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ../data/cifar-10-python.tar.gz

 0%|     | 0/170498071 [00:00 

Extracting ../data/cifar-10-python.tar.gz to ../data

pYYBAGR9OzuAEctXAAPkYlTx74E987.svg

d2l.show_images(gluon.data.vision.CIFAR10(
  train=True)[:32][0], 4, 8, scale=0.8);

pYYBAGR9OzuAEctXAAPkYlTx74E987.svg

為了在預(yù)測(cè)過(guò)程中獲得確定的結(jié)果,我們通常只對(duì)訓(xùn)練樣例進(jìn)行圖像增強(qiáng),而不會(huì)在預(yù)測(cè)過(guò)程中使用帶有隨機(jī)操作的圖像增強(qiáng)。這里我們只使用最簡(jiǎn)單的隨機(jī)左右翻轉(zhuǎn)的方法。此外,我們使用 ToTensor實(shí)例將一小批圖像轉(zhuǎn)換為深度學(xué)習(xí)框架所需的格式,即 0 到 1 之間的 32 位浮點(diǎn)數(shù),形狀為(批量大小,通道數(shù),高度,寬度).

train_augs = torchvision.transforms.Compose([
   torchvision.transforms.RandomHorizontalFlip(),
   torchvision.transforms.ToTensor()])

test_augs = torchvision.transforms.Compose([
   torchvision.transforms.ToTensor()])

接下來(lái),我們定義一個(gè)輔助函數(shù)以方便讀取圖像和應(yīng)用圖像增強(qiáng)。PyTorch 數(shù)據(jù)集提供的參數(shù)transform應(yīng)用增強(qiáng)來(lái)轉(zhuǎn)換圖像。詳細(xì)介紹DataLoader請(qǐng)參考 4.2節(jié)。

def load_cifar10(is_train, augs, batch_size):
  dataset = torchvision.datasets.CIFAR10(root="../data", train=is_train,
                      transform=augs, download=True)
  dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size,
          shuffle=is_train, num_workers=d2l.get_dataloader_workers())
  return dataloader

train_augs = gluon.data.vision.transforms.Compose([
  gluon.data.vision.transforms.RandomFlipLeftRight(),
  gluon.data.vision.transforms.ToTensor()])

test_augs = gluon.data.vision.transforms.Compose([
  gluon.data.vision.transforms.ToTensor()])

Next, we define an auxiliary function to facilitate reading the image and applying image augmentation. The transform_first function provided by Gluon’s datasets applies image augmentation to the first element of each training example (image and label), i.e., the image. For a detailed introduction to DataLoader, please refer to Section 4.2.

def load_cifar10(is_train, augs, batch_size):
  return gluon.data.DataLoader(
    gluon.data.vision.CIFAR10(train=is_train).transform_first(augs),
    batch_size=batch_size, shuffle=is_train,
    num_workers=d2l.get_dataloader_workers())

14.1.2.1。多 GPU 訓(xùn)練

我們?cè)?CIFAR-10 數(shù)據(jù)集上訓(xùn)練第 8.6 節(jié)中的 ResNet-18 模型。回想一下13.6 節(jié)中對(duì)多 GPU 訓(xùn)練的介紹 。在下文中,我們定義了一個(gè)函數(shù)來(lái)使用多個(gè) GPU 訓(xùn)練和評(píng)估模型。

#@save
def train_batch_ch13(net, X, y, loss, trainer, devices):
  """Train for a minibatch with multiple GPUs (defined in Chapter 13)."""
  if isinstance(X, list):
    # Required for BERT fine-tuning (to be covered later)
    X = [x.to(devices[0]) for x in X]
  else:
    X = X.to(devices[0])
  y = y.to(devices[0])
  net.train()
  trainer.zero_grad()
  pred = net(X)
  l = loss(pred, y)
  l.sum().backward()
  trainer.step()
  train_loss_sum = l.sum()
  train_acc_sum = d2l.accuracy(pred, y)
  return train_loss_sum, train_acc_sum

#@save
def train_ch13(net, train_iter, test_iter, loss, trainer, num_epochs,
        devices=d2l.try_all_gpus()):
  """Train a model with multiple GPUs (defined in Chapter 13)."""
  timer, num_batches = d2l.Timer(), len(train_iter)
  animator = d2l.Animator(xlabel='epoch', xlim=[1, num_epochs], ylim=[0, 1],
              legend=['train loss', 'train acc', 'test acc'])
  net = nn.DataParallel(net, device_ids=devices).to(devices[0])
  for epoch in range(num_epochs):
    # Sum of training loss, sum of training accuracy, no. of examples,
    # no. of predictions
    metric = d2l.Accumulator(4)
    for i, (features, labels) in enumerate(train_iter):
      timer.start()
      l, acc = train_batch_ch13(
        net, features, labels, loss, trainer, devices)
      metric.add(l, acc, labels.shape[0], labels.numel())
      timer.stop()
      if (i + 1) % (num_batches // 5) == 0 or i == num_batches - 1:
        animator.add(epoch + (i + 1) / num_batches,
               (metric[0] / metric[2], metric[1] / metric[3],
               None))
    test_acc = d2l.evaluate_accuracy_gpu(net, test_iter)
    animator.add(epoch + 1, (None, None, test_acc))
  print(f'loss {metric[0] / metric[2]:.3f}, train acc '
     f'{metric[1] / metric[3]:.3f}, test acc {test_acc:.3f}')
  print(f'{metric[2] * num_epochs / timer.sum():.1f} examples/sec on '
     f'{str(devices)}')

#@save
def train_batch_ch13(net, features, labels, loss, trainer, devices,
           split_f=d2l.split_batch):
  """Train for a minibatch with multiple GPUs (defined in Chapter 13)."""
  X_shards, y_shards = split_f(features, labels, devices)
  with autograd.record():
    pred_shards = [net(X_shard) for X_shard in X_shards]
    ls = [loss(pred_shard, y_shard) for pred_shard, y_shard
       in zip(pred_shards, y_shards)]
  for l in ls:
    l.backward()
  # The `True` flag allows parameters with stale gradients, which is useful
  # later (e.g., in fine-tuning BERT)
  trainer.step(labels.shape[0], ignore_stale_grad=True)
  train_loss_sum = sum([float(l.sum()) for l in ls])
  train_acc_sum = sum(d2l.accuracy(pred_shard, y_shard)
            for pred_shard, y_shard in zip(pred_shards, y_shards))
  return train_loss_sum, train_acc_sum

#@save
def train_ch13(net, train_iter, test_iter, loss, trainer, num_epochs,
        devices=d2l.try_all_gpus(), split_f=d2l.split_batch):
  """Train a model with multiple GPUs (defined in Chapter 13)."""
  timer, num_batches = d2l.Timer(), len(train_iter)
  animator = d2l.Animator(xlabel='epoch', xlim=[1, num_epochs], ylim=[0, 1],
              legend=['train loss', 'train acc', 'test acc'])
  for epoch in range(num_epochs):
    # Sum of training loss, sum of training accuracy, no. of examples,
    # no. of predictions
    metric = d2l.Accumulator(4)
    for i, (features, labels) in enumerate(train_iter):
      timer.start()
      l, acc = train_batch_ch13(
        net, features, labels, loss, trainer, devices, split_f)
      metric.add(l, acc, labels.shape[0], labels.size)
      timer.stop()
      if (i + 1) % (num_batches // 5) == 0 or i == num_batches - 1:
        animator.add(epoch + (i + 1) / num_batches,
               (metric[0] / metric[2], metric[1] / metric[3],
               None))
    test_acc = d2l.evaluate_accuracy_gpus(net, test_iter, split_f)
    animator.add(epoch + 1, (None, None, test_acc))
  print(f'loss {metric[0] / metric[2]:.3f}, train acc '
     f'{metric[1] / metric[3]:.3f}, test acc {test_acc:.3f}')
  print(f'{metric[2] * num_epochs / timer.sum():.1f} examples/sec on '
     f'{str(devices)}')

現(xiàn)在我們可以定義train_with_data_aug函數(shù)來(lái)訓(xùn)練帶有圖像增強(qiáng)的模型。該函數(shù)獲取所有可用的 GPU,使用 Adam 作為優(yōu)化算法,對(duì)訓(xùn)練數(shù)據(jù)集應(yīng)用圖像增強(qiáng),最后調(diào)用train_ch13剛剛定義的函數(shù)來(lái)訓(xùn)練和評(píng)估模型。

batch_size, devices, net = 256, d2l.try_all_gpus(), d2l.resnet18(10, 3)
net.apply(d2l.init_cnn)

def train_with_data_aug(train_augs, test_augs, net, lr=0.001):
  train_iter = load_cifar10(True, train_augs, batch_size)
  test_iter = load_cifar10(False, test_augs, batch_size)
  loss = nn.CrossEntropyLoss(reduction="none")
  trainer = torch.optim.Adam(net.parameters(), lr=lr)
  net(next(iter(train_iter))[0])
  train_ch13(net, train_iter, test_iter, loss, trainer, 10, devices)

batch_size, devices, net = 256, d2l.try_all_gpus(), d2l.resnet18(10)
net.initialize(init=init.Xavier(), ctx=devices)

def train_with_data_aug(train_augs, test_augs, net, lr=0.001):
  train_iter = load_cifar10(True, train_augs, batch_size)
  test_iter = load_cifar10(False, test_augs, batch_size)
  loss = gluon.loss.SoftmaxCrossEntropyLoss()
  trainer = gluon.Trainer(net.collect_params(), 'adam',
              {'learning_rate': lr})
  train_ch13(net, train_iter, test_iter, loss, trainer, 10, devices)

讓我們使用基于隨機(jī)左右翻轉(zhuǎn)的圖像增強(qiáng)來(lái)訓(xùn)練模型。

train_with_data_aug(train_augs, test_augs, net)

loss 0.224, train acc 0.922, test acc 0.820
3237.5 examples/sec on [device(type='cuda', index=0), device(type='cuda', index=1)]

pYYBAGR9O0CARiWPAAEPdYt1u04765.svg

train_with_data_aug(train_augs, test_augs, net)

loss 0.168, train acc 0.942, test acc 0.837
1933.3 examples/sec on [gpu(0), gpu(1)]

poYBAGR9O0OAK33CAAEP4uKX3Ew806.svg

14.1.3。概括

圖像增強(qiáng)是在現(xiàn)有訓(xùn)練數(shù)據(jù)的基礎(chǔ)上生成隨機(jī)圖像,以提高模型的泛化能力。

為了在預(yù)測(cè)過(guò)程中獲得確定的結(jié)果,我們通常只對(duì)訓(xùn)練樣例進(jìn)行圖像增強(qiáng),而不會(huì)在預(yù)測(cè)過(guò)程中使用帶有隨機(jī)操作的圖像增強(qiáng)。

深度學(xué)習(xí)框架提供了許多不同的圖像增強(qiáng)方法,可以同時(shí)應(yīng)用。

14.1.4。練習(xí)

在不使用圖像增強(qiáng)的情況下訓(xùn)練模型: 。比較使用和不使用圖像增強(qiáng)時(shí)的訓(xùn)練和測(cè)試準(zhǔn)確性。這個(gè)對(duì)比實(shí)驗(yàn)?zāi)芊裰С謭D像增強(qiáng)可以減輕過(guò)擬合的論點(diǎn)?為什么?train_with_data_aug(test_augs, test_augs)

在 CIFAR-10 數(shù)據(jù)集的模型訓(xùn)練中結(jié)合多種不同的圖像增強(qiáng)方法。它會(huì)提高測(cè)試準(zhǔn)確性嗎?

參考深度學(xué)習(xí)框架的在線文檔。它還提供了哪些其他圖像增強(qiáng)方法?

聲明:本文內(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)投訴
  • 圖像增強(qiáng)
    +關(guān)注

    關(guān)注

    0

    文章

    54

    瀏覽量

    10026
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    803

    瀏覽量

    13152
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于labview的紅外圖像增強(qiáng)

    基于labview的紅外圖像增強(qiáng),如直方圖均衡、鄰域平均法都可以,希望大神們可以給出詳細(xì)的程序框圖,拜托~~~~~~~
    發(fā)表于 04-27 22:56

    圖像的對(duì)數(shù)增強(qiáng)問(wèn)題

    如圖前兩張為一張圖片的R通道進(jìn)行增強(qiáng)的小程序,可以實(shí)現(xiàn)讀片的增強(qiáng),我想問(wèn)各路大神,如果單純地從數(shù)組方面進(jìn)行圖像增強(qiáng),如對(duì)數(shù)增強(qiáng),那該怎么操作
    發(fā)表于 09-26 17:13

    Pytorch模型訓(xùn)練實(shí)用PDF教程【中文】

    對(duì) PyTorch 提供的數(shù)據(jù)增強(qiáng)方法(22 個(gè))、權(quán)值初始化方法(10 個(gè))、損失函數(shù)(17 個(gè))、優(yōu)化器(6 個(gè))及 tensorboardX 的方法(13 個(gè))進(jìn)行了詳細(xì)介紹。本教程分為四章
    發(fā)表于 12-21 09:18

    如何設(shè)計(jì)基于FPGA的彩色圖像增強(qiáng)系統(tǒng)?

    在從圖像源到終端顯示的過(guò)程中,電路噪聲、傳輸損耗等會(huì)造成圖像質(zhì)量下降,為了改善顯示器的視覺(jué)效果,常常需要進(jìn)行圖像增強(qiáng)處理。圖像
    發(fā)表于 10-21 07:52

    基于GFO算子的圖像增強(qiáng)算法如何去實(shí)現(xiàn)?

    基于GFO算子(廣義模糊算子)的圖像增強(qiáng)算法如何去實(shí)現(xiàn)?怎樣對(duì)圖像增強(qiáng)算法進(jìn)行分析?
    發(fā)表于 06-04 06:24

    在Ubuntu 18.04 for Arm上運(yùn)行的TensorFlow和PyTorch的Docker映像

    基于 Ubuntu 18.04 的 Docker 映像的腳本可從GitHub 上的 Arm 工具解決方案存儲(chǔ)庫(kù)獲得。完成的 TensorFlow 和 PyTorch 圖像包含:AArch64 的 Ubuntu
    發(fā)表于 10-14 14:25

    詳解各種圖像數(shù)據(jù)增強(qiáng)技術(shù)

    使用 PyTorch 動(dòng)手實(shí)踐并實(shí)現(xiàn)圖像數(shù)據(jù)或計(jì)算機(jī)視覺(jué)中主要使用的數(shù)據(jù)增強(qiáng)技術(shù)。因?yàn)榻榻B的是數(shù)據(jù)增強(qiáng)技術(shù)。所以只使用一張圖片就可以了,我們先看看可視話的代碼import PIL.Im
    發(fā)表于 10-26 16:29

    基于Retinex圖像增強(qiáng)

    為了提高低照度圖像的亮度和對(duì)比度,提出了一種新的基于Retinex理論的彩色圖像增強(qiáng)方法。首先,基于Retinex理論,提出對(duì)HSV空間V分量進(jìn)行域?yàn)V波估計(jì)圖像光照分量,然后將V分量與
    發(fā)表于 11-25 10:59 ?7次下載

    使用PyTorch提取CNNs圖像特征

    讓我們快速回顧一下第一篇文章中涉及的內(nèi)容。我們討論了PyTorch和張量的基礎(chǔ)知識(shí),還討論了PyTorch與NumPy的相似之處。
    的頭像 發(fā)表于 05-05 08:52 ?7754次閱讀

    13種圖像增強(qiáng)技術(shù)的pytorch實(shí)現(xiàn)方法

    使用數(shù)據(jù)增強(qiáng)技術(shù)可以增加數(shù)據(jù)集中圖像的多樣性,從而提高模型的性能和泛化能力。
    發(fā)表于 11-04 10:28 ?802次閱讀

    基于PyTorch圖像數(shù)據(jù)增強(qiáng)技術(shù)

    因?yàn)榻榻B的是數(shù)據(jù)增強(qiáng)技術(shù)。所以只使用一張圖片就可以了,我們先看看可視話的代碼
    發(fā)表于 11-22 21:56 ?929次閱讀

    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'>圖像</b>分類數(shù)據(jù)集

    PyTorch教程7.2之圖像卷積

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程7.2之圖像卷積.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 10:13 ?0次下載
    <b class='flag-5'>PyTorch</b>教程7.2之<b class='flag-5'>圖像</b>卷積

    PyTorch教程14.1圖像增強(qiáng)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程14.1圖像增強(qiáng).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 14:24 ?0次下載
    <b class='flag-5'>PyTorch</b>教程<b class='flag-5'>14.1</b>之<b class='flag-5'>圖像</b><b class='flag-5'>增強(qiáng)</b>

    使用PyTorch加速圖像分割

    使用PyTorch加速圖像分割
    的頭像 發(fā)表于 08-31 14:27 ?803次閱讀
    使用<b class='flag-5'>PyTorch</b>加速<b class='flag-5'>圖像</b>分割