Что такое хаб?
Если вы знаете о докере, который управляет различными типами приложений, храня их в изолированном контейнере, то теперь контейнеры очень полезны, потому что вы можете запускать их на любой платформе или любой операционной системе с любыми типами конфигурации.
Теперь на изображении выше вы можете видеть, что вам нужно написать 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