Что такое хаб?

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

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

Теперь здесь вступает в игру центр Activeloop, машинное обучение, глубокое обучение и искусственный интеллект, которые в значительной степени полагаются на данные, и эти данные очень неструктурированы и дезорганизованы. Для подготовки специалистов по обработке данных специалисты по машинному обучению используют 70% своего времени и отдых для построения модели, развертывания модели, тестирования модели.

Таким образом, концентратор вступает в игру, чтобы свести к минимуму время на подготовку данных и их эффективное использование в виде массива numpy, и он может загружаться на ваш компьютер за 2 секунды.

Hub принимает набор данных как схему для создания файла meta.json, больше похожего на Dockerfile, с помощью которого во время загрузки преобразует все данные и метку в массив numpy. Эти массивы хранятся в облаке, и вы можете использовать их с любого устройства так же, как образы докеров.

Давайте посмотрим, как установить концентратор:

Хаб - это пакет на основе Python, размещенный в pypi, который можно установить с помощью одной команды:

pip install hub

Теперь все, что нужно для установки концентратора…

Как я загружаю своих покемонов в хаб:

Прежде чем два раздела предназначены для базовых знаний, отсюда начинается рассказ. Я знаю об activeloop и hub на хактоберфесте, пока искал репозитории, чтобы внести свой вклад. Когда я нашел, я думаю о том, как его использовать и внести свой вклад в это замечательное сообщество, после несколько дней я присоединился к рабочему пространству сообщества activeloop / hub slack, которое является хорошим местом для начала вашего вклада в машинное обучение.

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

Набор данных, который я использую, взят из github по адресу rileynwong / pokemon-images-dataset-by-type: Dataset of Pokemon images sorted by primary type. Теперь, когда я получил подходящий набор данных, давайте приступим.

Импорт всех библиотек и подготовка схем для набора данных:

Теперь я импортировал необходимые библиотеки для чтения и форматирования данных: numpy, opencv, hub.

Фрагмент кода следующий:

import numpy as np
import os
from cv2 import imread
from hub import schema,Dataset
from hub.schema import ClassLabel,Image

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

all_labels =    [‘bug’,’dark’,’dragon’,’electric’,’fairy’,’fighting’,’fire’,’flying’,’ghost’,’grass’,’ground’,’ice’,’normal’,’poison’,’psychic’,’rock’,’steel’,’water’]

Теперь у меня есть ярлыки, готовые к использованию, и мне нужно определить схему для их загрузки в хаб. Сначала я не могу это сделать, но с помощью Абхинава Тули Бро я наконец сделал это, и это выглядит как показано ниже.

classlabel = ClassLabel(names=[‘bug’,’dark’,’dragon’,’electric’,’fairy’,’fighting’,’fire’,’flying’,’ghost’,’grass’,’ground’,’ice’,’normal’,’poison’,’psychic’,’rock’,’steel’,’water’])
schema = {
 
 “labels”: classlabel,
 “image”:Image(
 dtype=”uint8",
 shape=((120,120,None)),max_shape=(120,120,4))
}

Теперь метки схемы принимают метку класса в виде списка, а изображения имеют форму 120 x 120.

Далее будет чтение изображений и загрузка в словарь.

Загрузка изображений в словарь и загрузка в хаб:

Я написал следующий код для загрузки изображений в память, посмотрите:

store = []
store_label = []
store_name = []
root = ‘/home/debo/uploadhub/pokemon-images-dataset-by-type’
for i in sorted(os.listdir(root)):
    for j in sorted(os.listdir(root+’/’+i)):
        image = imread(root+’/’+i+’/’+j)
        store.append(np.asarray(image))
        store_label.append(i)
        store_name.append(j)
classlabel = ClassLabel(names=[‘bug’,’dark’,’dragon’,’electric’,’fairy’,’fighting’,’fire’,’flying’,’ghost’,’grass’,’ground’,’ice’,’normal’,’poison’,’psychic’,’rock’,’steel’,’water’])
schema = {
 
 “labels”: classlabel,
 “image”:Image(
 dtype=”uint8",
 shape=((120,120,None)),max_shape=(120,120,4))
}
ds = Dataset(
 “darkdebo/pokemon_data”,
 mode=”w+”,
 schema=schema,
 shape=(809,),
 cache=2**26,
)

В то время как два списка store и store_label предназначены для хранения изображений в хранилище в виде массива numpy, а store_label - для хранения меток в числовом виде, но вы можете использовать другой подход, чтобы сделать его более эффективным.

Теперь это сделано, поэтому последний код для загрузки в хаб ...

for i in range(len(store_label)):
    #print(store_name[i])
    ds[‘image’,i] = store[i]
    #print(ds[‘image’,i])
    ds[‘labels’,i] = classlabel.str2int(store_label[i])
    print(“uploading…”)
print(“uploaded succesfully”)
ds.commit()

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

Несколько слов….

Теперь вы можете проверить набор данных https://app.activeloop.ai/dataset/darkdebo/pokemon_data.

Скриншот инструмента визуализации…

Теперь я думаю, что следующая часть этого блога будет посвящена загрузке данных с помощью концентратора и созданию модели ml для выполнения задачи. А теперь послушайте pokecito на YouTube и ознакомьтесь с ними:

Сайт Activeloop: https://docs.activeloop.ai/en/latest/

Сайт Activeloop: https://www.activeloop.ai/

Репозиторий хаба на Github: https://github.com/activeloopai/hub