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

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

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

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

Установите это

Установите инструмент imgclass:

go get github.com/machinebox/toys/imgclass

Если у вас нет Go установлен, то почему?

Убедитесь, что он установлен правильно:

$ which imgclass
/path/to/somewhere/bin/imgclass

Подготовьте обучающие данные

Создайте где-нибудь папку и внутри нее создайте подпапку для каждого класса.

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

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

Раскрутить Classificationbox

Предполагая, что у вас установлен Docker, вы можете запустить Classificationbox с помощью этой единственной строки кода:

docker run -p 8080:8080 -e "MB_KEY=$MB_KEY" machinebox/classificationbox

Как только он запустится, перейдите к http://localhost:8080, и вы должны увидеть документацию по API:

Обучать и подтверждать

Перейдите в папку, где находятся папки вашего класса, и запустите imgclasstool:

Классификаторы лучше работают со сбалансированным количеством примеров, поэтому по возможности стремитесь иметь одинаковое количество примеров в каждом классе.

Как только модель будет создана, вам будет предложено спросить, хотите ли вы обучить выборку (80%) изображений. Нажатие y и нажатие возврата запустит процесс:

Обучение по существу включает в себя открытие каждого изображения, преобразование его в строку base64 и отправку его в конечную точку /classificationbox/teach API в запросе, похожем на этот:

POST /classificationbox/teach
{
    "inputs": [
        {
            "type": "image_base64",
            "key": "image",
            "value": "...base64 data..."
    ]
}

Как только обучение будет завершено, начнется процесс проверки.

Проверка по существу берет оставшиеся изображения (20%) и просит Classificationbox предсказать, к какому классу они принадлежат. Если это правильно, мы считаем это правильным, в противном случае - неправильным.

Результаты отображаются в терминале:

Вот и все

Теперь Classificationbox — это классификатор изображений, который можно использовать в производстве для автоматической классификации изображений.

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