Надоело тратить время на поиск и загрузку набора данных вручную?

Хотите создать свой собственный набор данных изображений, но не можете этого сделать из-за ограниченного времени или по какой-либо другой причине?

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

Но у кого есть время на поиск и загрузку изображений из Интернета, по крайней мере, у программистов 😎
Мы верим в то, чтобы сделать все проще, когда это возможно!

Итак, давайте погрузимся прямо сейчас.

Цель :

  • 👉 Автоматизируйте загрузку изображений с помощью Google Custom search API.
  • 👉 Необязательно: изменение размера изображений, архивирование изображений и отправка письма самому себе.

Требуется установка:

Программирование:

Мы собираемся использовать JSON API пользовательского поиска», поэтому сначала давайте настроим среду, необходимую для использования API.

Шаги, необходимые для получения учетных данных для доступа к API:

  • Сначала создайте учетную запись Gmail для разработки (или тестирования).
  • Затем перейдите в Консоль разработчиков Google и выполните следующие шаги, чтобы создать новый проект (если у вас его нет). Вы можете пропустить этот шаг, если у вас уже есть запущенный проект.

  • Включите API из API Explorer и получите учетные данные в качестве API KEY для доступа к API.

  • Создайте систему пользовательского поиска Google здесь, которая будет искать и возвращать результаты.

Создание скрипта:

Теперь давайте просто посмотрим на небольшой пример того, как будет называться этот API:

Все вызовы API будут GET-запросами по следующему URL-адресу:

https://www.googleapis.com/customsearch/v1?key={API}&cx={CX}&q={query}

и все остальные параметры аналогичным образом добавляются к ссылке с помощью &{имя_параметра}={значение}.

Теперь давайте создадим функцию, которая будет получать результаты этого API и читать их в форме JSON.
Затем загрузите его в соответствующий каталог, назвав файлы по порядку.

Давайте определим параметры, которые принимает функция:

  • Примечание. Может быть дополнительный аргумент (счетчик), который просто устанавливает начальный индекс для именования файла для удобства (например, counter = 0 будет означать, что файлы будут называться как image0, image1…..)
  • Сначала мы проверяем, не существует ли каталог, затем начинаем работать над получением API.
  • Первый цикл for начинается со строки 5 и предназначен для хранения ссылок всех изображений в виде списка с именем urls/links.
  • Мы создаем запрос GET в строке 6, добавляя столько параметров, сколько хотим отфильтровать поиск.
  • Затем мы загружаем текст (в виде строки) возвращаемого результата, используя json в строке 7.
  • Теперь сначала мы будем получать все URL-адреса 100 изображений одновременно из строк 9–13.

(За один раз Google ограничивает количество результатов до 10, поэтому я запрашиваю 10 раз, чтобы получить 100 изображений).

  • После этого загрузка этих изображений по всем ссылкам, хранящимся в списке, начнется с использованием функции urlretrieve() из urllib в строке 23.
  • Второй цикл в строке 27 использует tqdm, это просто причудливый способ показать индикатор выполнения во время загрузки.
  • Мы также обрабатываем некоторые распространенные ошибки, например, некоторые веб-сайты не разрешают прямую загрузку из-за некоторых проблем с конфиденциальностью, поэтому для них нам нужно создать собственный запрос POST для обеспечения безопасности в строке 27.
  • В этом случае мы также записываем его в каталог в байтовой форме.
  • Теперь, после завершения загрузки, последние несколько строк с 39 по 49 просто проверяют, существовал ли уже каталог в первую очередь, а затем дают пользователю возможность загрузить его снова, удалив старые изображения.

Вывод :

Некоторые примеры загруженных изображений для запроса: «машинное обучение»:

Несколько примеров загруженных изображений по запросу: «нейронные сети»

Подведение итогов:

Я уверен, что это должно было дать вам толчок к созданию собственного набора данных и поделиться с сообществом 👍

Если вы хотите продолжить и выполнить необязательную цель проекта — изменение изображений, возможно, преобразование в оттенки серого (для создания набора данных изображений в градациях серого), заархивирование изображений, а затем отправьте себе (или кому-либо) письмо, содержащее набор данных. как вложение, затем ознакомьтесь с полным кодом в разделе ресурсов ниже.

Некоторые интересные вещи находятся в разделе ресурсов ниже, обязательно ознакомьтесь с ним.

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

Ресурсы :

  • Репозиторий Github, содержащий полный код, содержащий все разделы проекта, и инструкции по началу работы локально на вашем компьютере.
  • Вот забавный обозреватель API, который вы можете использовать, чтобы понять мощь пользовательского API поиска и многие другие параметры для фильтрации поиска в соответствии с вашими потребностями.
  • Установите requests, urllib.
  • 💡 Создайте графический интерфейс, который принимает необходимые параметры и загружает изображения в указанный выходной каталог.
  • 💡 Мы также можем создать набор данных видео с помощью Youtube Data API V3.
    Но давайте оставим это для другого поста 🙂.