Надоело тратить время на поиск и загрузку набора данных вручную?
Хотите создать свой собственный набор данных изображений, но не можете этого сделать из-за ограниченного времени или по какой-либо другой причине?
Сбор данных — один из важных этапов анализа данных, машинного обучения и глубокого обучения.
Это процесс сбора информации. нас интересуют изображения любого типа, которые мы хотим собрать.
Без данных мы не можем смоделировать нашу проблему и провести ее анализ.
Но у кого есть время на поиск и загрузку изображений из Интернета, по крайней мере, у программистов 😎
Мы верим в то, чтобы сделать все проще, когда это возможно!
Итак, давайте погрузимся прямо сейчас.
Цель :
- 👉 Автоматизируйте загрузку изображений с помощью 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.
Но давайте оставим это для другого поста 🙂.