Как добавить обратимый шум в набор данных MNIST с помощью PyTorch?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить обратимый шум в набор данных MNIST с помощью PyTorch?

Сообщение Anonymous »

Я хотел бы добавить обратимый шум в набор данных MNIST для некоторых экспериментов.
Вот что я пытаюсь сделать:

Код: Выделить всё

import torchvision.transforms as transforms
from torchvision.datasets import MNIST
from torch.utils.data import DataLoader
from PIL import Image
import torchvision

def display_img(pixels, label = None):
plt.imshow(pixels, cmap="gray")
if label:
plt.title("Label: %d" % label)
plt.axis("off")
plt.show()

class NoisyMNIST(torchvision.datasets.MNIST):
def __init__(self, root, train=True, transform=None, target_transform=None, download=False):
super(NoisyMNIST, self).__init__(root, train=train, transform=transform, target_transform=target_transform, download=download)

def __getitem__(self, index):
img, target = self.data[index], self.targets[index]
img = Image.fromarray(img.numpy(), mode="L")

if self.transform is not None:
img = self.transform(img)

# add the noise
noise_level = 0.3
noise = self.generate_safe_random_tensor(img) * noise_level
noisy_img = img + noise

return noisy_img, noise, img, target

def generate_safe_random_tensor(self, img):
"""generates random noise for an image but limits the pixel values between -1 and 1"""

min_values = torch.clamp(-1 - img, max=0)
max_values = torch.clamp(1 - img, min=0)

return torch.rand(img.shape) * (max_values - min_values) + min_values

# Define transformations to apply to the data
transform = transforms.Compose([
transforms.ToTensor(),  # Convert images to tensors
transforms.Normalize((0.1307,), (0.3081,)),
])

train_dataset = NoisyMNIST(root='./data', train=True, download=True, transform=transform)
test_dataset = NoisyMNIST(root='./data', train=False, download=True, transform=transform)

np_noise = train_dataset[img_id][1]
np_data = train_dataset[img_id][0]

display_img(np_data_sub_noise, 4)

В идеале это дало бы мне обычный набор данных MNIST вместе с зашумленными изображениями MNIST и коллекцией добавленного шума. Учитывая это, я предполагал, что смогу вычесть шум из зашумленного изображения и вернуться к исходному изображению, но мои операции с изображением необратимы.
Любые указатели или фрагменты кода будут иметь большое значение. оценил. Ниже приведены изображения, которые я сейчас получаю с помощью моего кода:
Исходное изображение:
Изображение

С добавленным шумом:
Изображение

И с вычтенным шумом для изображения с шумом:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/783 ... ng-pytorch
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»