Узнайте, как подбирать наборы данных, соответствующие вашему варианту использования

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

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

Это был интересный проект, но он ничему не научил меня в работе с набором данных. Я чуть не разочаровался в этом курсе, и мой прогресс замедлился - до недавнего времени, когда я начал проходить курс Практическое глубокое обучение для кодеров от fast.ai. Курс структурирован таким образом, чтобы дать студентам полное представление о процессе ИИ.

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

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

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

1. Установите библиотеку загрузчика изображений Bing

Это можно сделать в терминале, выполнив следующую команду:

pip install bing-image-downloader

Более подробную информацию об этой библиотеке можно найти здесь.

2. Загрузить данные для каждого класса в вашем наборе данных

Это можно сделать с помощью всего двух строк кода, как показано в примере ниже.

Ключевые параметры, которые следует учитывать здесь:

  • query: поисковый запрос для изображений. Ожидается, что в приведенном выше примере будут возвращены изображения, связанные с Budweiser.
  • limit: количество изображений, которые вы хотите загрузить по запросу. Ограничение - это хорошо, потому что чем больше изображений вы скачаете, тем больше у вас будет нерелевантных изображений. Я обнаружил, что в большинстве случаев разумным пределом является 150.
  • output_dir: это путь к каталогу, в котором будут храниться папки, содержащие изображения.

Приведенный выше код создаст папку с именем beer и две папки в ней. Первая будет папкой budweiser beer, содержащей изображения, относящиеся к Budweiser, а вторая - папкой corona beer, содержащей изображения, связанные с пивом Corona.

3. Просматривайте изображения, удаляя нерелевантные

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

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

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