Использование Tensorbay и SkImage для визуализации и предварительной обработки больших наборов данных

При создании проектов или моделей компьютерного зрения мы обычно работаем с большими наборами данных. Наборы данных изображений не только больше по размеру, чем наборы текстовых данных, но и используются больше изображений, чтобы наша модель не переборщила и имела высокую производительность.

Где найти новые свежие наборы данных? Возможна ли загрузка, учитывая их размер? Все мы работали с такими наборами данных, как MNIST, FashionMNIST, CIFAR-10 и т. Д., Но они старые и использовались много раз. Получив доступ к новым наборам данных, как мы можем легко их использовать, не загружая их локально?

Ответ - использовать TensorBay от Graviti. TensorBay - это платформа управления наборами данных, которая автоматизирует и оптимизирует весь процесс, включая размещение данных, контроль версий и визуализацию данных. Для упрощения интеграции Graviti разработала SDK на основе Python для TensorBay, который выполняет эти услуги.

Для визуализации локальных наборов данных мы можем использовать Pharos, который является плагином TensorBay SDK. Pharos запускает приложение Flask, которое позволяет нам визуализировать данные, а также проверять их аннотации. Эти визуализации помогают определить, как организованы наши данные, и есть ли в них аномалии.

Для обработки изображений используется библиотека Python Skimage. Skimage содержит различные алгоритмы, которые можно использовать для редактирования изображений.

В этой статье мы рассмотрим визуализацию данных изображений с помощью TensorBay, Pharos и Skimage. Давайте начнем…

Создайте учетную запись Graviti для ключа доступа

Перед визуализацией данных вам необходимо иметь ключ доступа для доступа к данным и разветвления набора данных. Наряду с визуализацией этот ключ предоставит вам доступ к другим функциям, таким как контроль версий, создание наборов данных и т. Д.



Приведенную выше ссылку можно использовать для создания учетной записи на Graviti. После регистрации вы можете сгенерировать и использовать свой ключ доступа в разделе «Инструменты разработчика».

Разбить набор данных

Следующим шагом является форк наборов данных. Graviti предоставляет более 1000 наборов данных, которые можно легко форкнуть и использовать соответствующим образом. Вы можете выбрать любой набор данных здесь. В этой статье мы используем набор данных Цветок из 17 категорий.

Визуализируйте набор данных с помощью Pharos

Чтобы визуализировать набор данных, перейдите на его домашнюю страницу в TensorBay и используйте Pharos для запуска приложения Flask.

Создайте блокнот Jupyter

Последним шагом является создание Jupyter Notebook, который будет использоваться для загрузки разветвленного набора данных. Но сначала нам нужно установить необходимые библиотеки TensorBay и его плагин Pharos Python, используя приведенные ниже команды.

В приведенном ниже коде набор данных считывается на нашем локальном компьютере, а изображения извлекаются из URL-адреса, чтобы сохранить их в списке, который будет использоваться для предварительной обработки. Помните, что вам нужно предоставить свой собственный ключ доступа и форк данных, которые вы хотите использовать.

from tensorbay import GAS
from tensorbay.dataset import Segment
from tensorbay.dataset import Data, Dataset
import requests
from PIL import ImageACCESS_KEY = “Your Access Key”
gas = GAS(ACCESS_KEY)dataset_client = gas.get_dataset(“Flower17–1”)
img_list=[]
segments = dataset_client.list_segment_names()segment = Segment(“default”, dataset_client)
for data in segment:
   fp = data.open()
   img_list.append(Image.open(requests.get(fp.url,        
    stream=True).raw))
img_list

На изображении выше вы можете увидеть, как мы можем загружать разные изображения из URL-адреса. Теперь мы визуализируем изображения, над которыми будем работать, а затем предварительно обработаем эти изображения, которые хранятся в списке.

plt.figure(figsize=(11,11))
for i in range(1,10):
plt.subplot(3,3,i)
plt.tight_layout()
plt.imshow(img_list[i-1])
plt.title(‘Flower’)
plt.xlabel(img_list[i-1].shape[1], fontsize=10)
plt.ylabel(img_list[i-1].shape[0], fontsize=10)

#converting image to numpy array
import numpy as np
image1 = np.array(img_list[0])
image1

image1.shape

image1.size

#Converting Grayscale
from skimage.color import rgb2gray
grayscale = rgb2gray(img_list[0])#Edge Detection
from skimage import filters
ed_sobel = filters.sobel(grayscale)
imshow(ed_sobel, cmap=’gray’);

from skimage.exposure import histogram
hist, hist_centers = histogram(grayscale)#Plotting the Image and the Histogram of gray values
fig, axes = plt.subplots(1, 2, figsize=(8, 3))
axes[0].imshow(grayscale, cmap=plt.cm.gray)
axes[0].axis(‘off’)
axes[1].plot(hist_centers, hist, lw=2)
axes[1].set_title(‘histogram of gray values’)

Попробуйте этот процесс с различными наборами данных, которые доступны на Graviti, и создайте визуализации с помощью Pharos. Пожалуйста, дайте мне знать, как это вышло, оставив свои комментарии в разделе ответов.