Автоматический генератор классификатора изображений

Наконец, инструмент машинного обучения находится в открытом доступе по адресу serpapi/automatic-images-classifier-generator. Не стесняйтесь использовать, вносить свой вклад и получать удовольствие.

automatic-images-classifier-generator — это инструмент машинного обучения, написанный на Python с использованием SerpApi, Pytorch, FastAPI и Couchbase для обеспечения автоматического создания больших наборов данных, автоматизированного обучения и тестирования моделей глубокого обучения с возможностью настройки алгоритмов, хранения структуры и результатов нейронных сетей. все в одном месте.

Отказ от ответственности: это программное обеспечение для машинного обучения с открытым исходным кодом не является одним из предложений продуктов, предоставляемых SerpApi. Программное обеспечение использует одно из предложений продукта, SerpApi's Google Images Scraper API, для автоматического создания наборов данных. Вы можете зарегистрироваться в SerpApi, чтобы получить бесплатные кредиты. Вы также можете просмотреть страницу с ценами на SerpApi, чтобы получить подробную информацию.

— -

Инструменты и функции машинного обучения, предоставляемые automatic-images-classifier-generator

  • Инструменты машинного обучения для автоматического создания больших наборов данных изображений на основе SerpApi's Google Images Scraper API
  • Инструменты машинного обучения для автоматического обучения моделей глубокого обучения с индивидуальными настройками для различных алгоритмов.
  • Инструменты машинного обучения для автоматического тестирования моделей машинного обучения
  • Инструменты машинного обучения для настройки узлов в конвейерах моделей машинного обучения, изменения размерности алгоритмов машинного обучения и т. д.
  • Инструменты машинного обучения для ведения учета потерь при обучении, используемых наборов данных, структур нейронных сетей и отчетов о точности.
  • Асинхронное обучение и тестирование моделей машинного обучения
  • Доставка данных, необходимых для создания визуализации для перекрестного сравнения различных моделей машинного обучения с тонкими изменениями в их структуре нейронной сети.
  • Различные ярлыки для предварительной обработки с целевым интеллектуальным анализом данных SERP.

— -

Монтаж

  1. Клонировать репозиторий
gh repo clone serpapi/automatic-images-classifier-generator

2. Откройте учетную запись SerpApi (бесплатные кредиты доступны при регистрации)

3. Скачать и установить Couchbase

4. Перейдите по URL-адресу панели мониторинга сервера (например, http://kagermanov:8091) и создайте корзину с именем images.

5. Установите необходимые библиотеки Python

pip install -r requirements.txt

6. Заполните credentials.py файл учетными данными вашего сервера и учетными данными SerpApi.

7. Запустите файл сервера установки

python setup_server.py

8. Запустите сервер FastAPI

uvicorn main:app --host 0.0.0.0 --port 8000

или вы можете просто использовать сервер отладки, нажав main.py и запустив сервер отладки:

9. При желании запустите тесты:

pytest test_main.py

— -

Базовое использование инструментов машинного обучения

  1. Направляйтесь к localhost:8000/docs
  2. Используйте конечную точку add_to_db для вызова обновления базы данных изображений.
  3. Используйте конечную точку train для обучения модели. Обученная модель будет сохранена в папке models после завершения обучения. Обучение представляет собой асинхронный процесс. Следите за выводами терминала для прогресса.
  4. Используйте конечную точку test для тестирования модели.
  5. Используйте конечную точку find_attempt для получения данных о процессе обучения и тестирования (потери в каждую эпоху, точность и т. д.).

— -

Добавление изображений SERP на сервер хранения

add_to_db

Пользователь может выполнять отдельные поиски с помощью SerpApi Images Scraper API и автоматически добавлять их на локальный сервер хранения изображений.

Площадка визуальной документации

multiple_query

Пользователь может выполнять несколько поисков с помощью SerpApi Images Scraper API и автоматически добавлять их на локальный сервер хранения изображений.

— —

Обучение модели

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

train

Советы по критерию

  • Клавиша criterion отвечает за вызов функции потерь.
  • Если пользователь указывает только название критерия (функция потерь), оно будет использоваться без параметров.
  • Некоторые вводимые строки (особенно если пользователь вызывает внешний класс из Pytorch) должны заключаться в двойные кавычки, например "'Parameter Value'".
  • Информацию о поддержке функций потерь пользователь может найти далее в документации.

Советы по оптимизатору

  • Ключ optimizer отвечает за вызов оптимизатора.
  • Если пользователь указывает только имя оптимизатора, оно будет использоваться без параметров.
  • Некоторые вводимые строки (особенно если пользователь вызывает внешний класс из Pytorch) должны заключаться в двойные кавычки, например "'Parameter Value'".
  • Информацию о поддержке Оптимизаторов пользователь может найти далее в документации.

Советы по работе с изображениями (функции изображения PIL)

  • Ключ image_ops отвечает за вызов операций PIL на входе.
  • Интеграция PIL поддерживается только для интеграции Pytorch Transforms (transform, target_transform keys). Его следует использовать для второстепенных целей. Многие функции, поддерживаемые PIL, уже включены в Pytorch Transforms.
  • Каждый словарь представляет собой отдельную операцию.
  • Некоторые входные строки (особенно если пользователь вызывает внешний класс из PIL) должны быть заключены в двойные кавычки, например "'Parameter Value'"
  • Информацию о поддержке Оптимизаторов пользователь может найти далее в документации.

Советы по преобразованиям Pytorch

  • Клавиши transform и target_transform отвечают за вызов Pytorch Transforms. Первый для ввода, второй для метки соответственно.
  • Интеграция преобразований — это основная интеграция, отвечающая за предварительную обработку изображений и метки перед обучением.
  • Каждый ключ в словаре представляет собой отдельную операцию.
  • Порядок ключей представляет порядок последовательных преобразований, которые должны быть применены.
  • Преобразования без параметра должны получить значение True для передачи.
  • Некоторые вводимые строки (особенно если пользователь вызывает внешний класс из Pytorch) должны быть заключены в двойные кавычки, например "'Parameter Value'"
  • Информацию о поддержке Transforms пользователь может найти далее в документации.

Советы по названиям ярлыков

  • label_names отвечает за объявление имен меток.
  • Имена меток должны присутствовать на сервере хранения базы данных изображений, созданном пользователем.
  • Если пользователь предоставил height и width изображений для очистки в add_to_db или multiple_queries конечных точках, имя метки должно быть записано с дополнением imagesize:heightxwidth. В противном случае будут загружены изображения без определенной классификации, если они присутствуют на сервере.
  • Векторизованные версии этикеток могут быть преобразованы с помощью target_transform

Советы для моделей

  • Клавиша model отвечает за вызов или создание модели.
  • Если указан ключ name, будет вызвано ранее определенное имя класса в пределах models.py, а ключ layers будет проигнорирован.
  • Если указан ключ layers, а ключ name не указан, последует последовательное создание слоя.
  • Каждый словарь в массиве layers представляет собой обучающий слой.
  • Пользователь может использовать значение auto для входного параметра, чтобы автоматически получить прошлый выходной слой в ограниченной поддержке. На данный момент он поддерживается только для одинаковых слоев.
  • Пользователь может использовать n_labels для указания количества меток в последнем слое.
  • Информацию о поддержке Слоев пользователь может найти далее в документации.

— -

Тестирование модели

test

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

— —

Получение информации об обучении и тестировании модели

find_attempt

Каждый раз, когда пользователь использует конечную точку train, в базе данных создается объект Attempt. Этот объект также обновляется каждый раз, когда используется конечная точка test. Также пользователь может автоматически проверять статус тренировки с этого объекта.

  • В начале каждого обучения status объекта будет Training.
  • В конце каждой тренировки status объекта будет Trained
  • В конце каждого тестирования status объекта будет Complete

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

— -

Поддержка различных элементов

— -

Ключевые моменты состояния инструмента машинного обучения и его планы на будущее

  • На данный момент объем этого программного обеспечения поддерживает только наборы данных изображений, и цель состоит в том, чтобы создавать модели машинного обучения для классификации изображений в масштабе. Более широкая цель состоит в том, чтобы добиться лучшего компьютерного зрения за счет масштабируемости. В планы на будущее входит добавление других основных типов входных тензоров для науки о данных, анализа данных, аналитики данных или проектов искусственного интеллекта. Программное обеспечение с открытым исходным кодом может быть перепрофилировано для решения других задач, таких как регрессия, обработка естественного языка или любые другие популярные варианты использования машинного обучения.
  • В будущем не планируется поддерживать какие-либо другие языки программирования, такие как Java, Javascript, C/C++ и т. д. В обозримом будущем единственным поддерживаемым языком будет Python. Возможность поддержки других эффективных баз данных с большими данными, таких как SQL в Hadoop, может стать темой для обсуждения. Кроме того, в планах на будущее — возможность добавления нескольких изображений из локального хранилища на сервер хранения.
  • Единственная поддерживаемая платформа машинного обучения — Pytorch. В будущем планируется расширить поддержку некоторых других библиотек и программного обеспечения машинного обучения, таких как Tensorflow, Keras, Scikit-Learn, Apache Spark, Scipy, Apache Mahout, Accord.NET, Weka и т. д. Уже используемые библиотеки, такие как google-image-results, NumPy и т. д., могут быть использованы в будущем.
  • Чтобы программное обеспечение было удобным для пользователя, устройство для обучения модели (GPU (CUDA) или CPU) выбирается автоматически. Кроме того, в будущем планируется создать визуализацию данных различных моделей в виде интерактивных графиков, которые смогут понять как опытные специалисты по данным, так и новички. Библиотеки программного обеспечения машинного обучения типа перетаскивания для создания моделей не будут реализованы.
  • Это программное обеспечение с открытым исходным кодом, предназначенное для локального использования. Эффекты или стоимость развертывания на облачных серверах, таких как AWS, Google Cloud и т. д., или его интеграции для приложений машинного обучения с облачными решениями, такими как Amazon Sagemaker, IBM Watson, Microsoft Azure Machine Learning и Jupyter Notebook, не были учтены. тестил еще. Используйте его по своему усмотрению. В планы на будущее входит внедрение некоторых крупномасштабных инструментов машинного обучения.
  • Рабочие процессы для планов на будущее, указанные выше, могут быть реализованы или не реализованы в зависимости от расписания событий, поддержки со стороны других участников и общего использования в автоматизации. Будет выпущено несколько проектов машинного обучения с учебным пособием, объясняющим инструменты машинного обучения.

Заключение

Я благодарен читателям за внимание и Блестящим людям SerpApi за то, что этот пост стал возможен. В ближайшие недели мы приступим к базовому клиентскому инструменту с открытым исходным кодом, который не использует какую-либо базу данных хранилища, а использует automatic-images-classifier-generator в своей основе.

Первоначально опубликовано на https://serpapi.com 25 августа 2022 г.