8 лет назад Kaggle запустил соревнование «Собаки против кошек». Разработчики по всему миру должны были написать алгоритм для правильной классификации изображений на кошек и собак.

В соревновании участвовало несколько команд, и команда-победитель смогла добиться точности 98,9%. Фактически, 50 лучших записей имели точность предсказания выше 96%.

В мае 2021 года Google объявила об объединении всех своих предложений машинного обучения и искусственного интеллекта под одним зонтиком под названием Вершинный ИИ. Vertex AI предоставляет услуги для удовлетворения всех потребностей машинного обучения в любой организации. Vertex AI охватывает все этапы жизненного цикла машинного обучения — от приема данных до преобразования данных, обучения моделей и их развертывания.

Одной из привлекательных услуг, предлагаемых Vertex AI, является AutoML. Разработчики и организации могут воспользоваться обширным опытом Google в области машинного обучения и использовать его для обучения своих собственных моделей. AutoML поддерживает множество моделей, таких как классификация изображений, обнаружение объектов изображения, анализ настроений, прогнозирование, отслеживание видеообъектов и т. д.

Я решил использовать классификацию изображений AutoML для вращения и использовать ее для классификации данных о соревнованиях Kaggle «Собаки и кошки». В процессе я также задокументировал шаги по обучению модели AutoML, которые составляют большую часть этого сообщения в блоге.

Итак, давайте начнем.

Прежде чем мы начнем упражнение, скачайте набор данных Kaggle. Загруженный zip-файл содержит два zip-файла (test.zip и train.zip) внутри них. Как следует из названия, изображения в train.zip помечены и будут использоваться для обучения.

В обучающих данных 25 000 изображений, а в тестовом наборе — 12 500. Мы будем использовать тестовый набор для оценки производительности нашей модели.

Получив данные на своем компьютере, выберите Vertex AI › Наборы данных в меню слева. На этом этапе Google попросит вас включить Vertex AI API, если вы используете его впервые.

Нажмите Создать набор данных и дайте ему соответствующее имя. Я называю это cat_dog_classification . Затем выберите тип цели, так как мы выполняем классификацию изображений по нескольким классам (кошки и собаки), мы выберем Классификация изображений (одна метка). Мы оставим регион как us-central1. Нажмите Создать.

На следующем экране вас попросят добавить изображения в ваш набор данных. У вас есть пара вариантов. Вы можете загружать файлы со своего компьютера или загружать изображения из корзины Google Cloud Storage (этот вариант требует, чтобы вы создали то, что Google называет Импортировать файл). Файл импорта сообщает Google, какое изображение имеет какую метку и для какой цели должно использоваться. На следующем шаге я написал небольшую утилиту на Python для создания файла импорта. Я уже загрузил все изображения в корзину в GCS.

Запустите этот скрипт, чтобы сгенерировать файл импорта. После завершения вы получите файл train.csv в качестве вывода этого скрипта. Загрузите его также в ведро.

Теперь на экране добавления изображений выберите файл train.csv.

Нажмите Продолжить.

Vertex AI импортирует изображения через несколько минут, и вы увидите статус набора данных как Importing Data .

Vertex потребовалось 20–25 минут, чтобы импортировать изображения. По какой-то причине на 6 изображениях были ошибки. После импорта вы увидите данные на вкладке «Обзор и анализ».

С правой стороны вы увидите кнопку «Обучить новую модель». Нажмите на нее, и вас встретит мастер обучения новой модели.

Мы сохраним значения по умолчанию и нажмем «Продолжить». Выберите название модели на следующем экране, нажмите «Продолжить».

На последнем экране у вас будет выбор бюджета для вашего обучения. Я выберу минимум 8 узловых часов. Вы можете проверить страницу с ценами для более подробной информации. Я также включу Раннюю остановку, чтобы сэкономить бюджет на случай раннего обучения модели.

На странице также указана приблизительная дата окончания обучения.

Нажмите Начать обучение и вперед. Вы сможете увидеть свою работу на странице «Тренинги» в Vertex.

Через 28 минут обучение модели завершено.

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

Это выглядит как действительно хорошая модель на тестовых данных.

Теперь давайте проверим это на наших данных Kaggle Competition Test и посмотрим, как работает модель.

Сначала мы создадим пакетные прогнозы. Есть несколько способов сделать это. Мы можем сделать это через консоль, командную строку, REST API или библиотеку Python.

В этом посте мы будем использовать консоль для этого.

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

Скрипт выдаст файл test.jsonl. Загрузите его в ведро.

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

Нажмите Создать. Это создаст задание пакетного прогнозирования.

Мне потребовалось около 28 минут, чтобы мой пакетный прогноз завершился.

Результаты сохраняются в разделенных на разделы файлах JSONL в указанном месте.

Теперь мы загрузим эти результаты и преобразуем их в формат представления Kaggle.

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

Я изучу больше и найду способ отправить свои results.csv .

Если кто-то из моих читателей может помочь мне в этом, я был бы очень благодарен :)

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

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

А пока удачного кодирования :)