Этот блог является частью серии Чистый или грязный классификатор . Ознакомьтесь со всей серией, где подробно описана реализация развертывания классификатора машинного обучения в веб-приложении с использованием различных фреймворков.
Selenium - это инструмент с открытым исходным кодом для автоматизации веб-браузера. Он предоставляет единый интерфейс для написания сценариев на нескольких языках. Затем эти сценарии выполняются уважаемым драйвером браузера.
Важность набора данных в машинном / глубоком обучении
Набор данных и его качество играют важнейшую роль в определении того, насколько хорошей окажется модель машинного / глубокого обучения. Независимо от того, насколько хорош алгоритм / методика, в конечном итоге он потерпит неудачу, если ему не будут предоставлены качественные данные. Для каждого типа проблемы используется определенный тип набора данных. Наборы данных в целом делятся на следующие категории: числовые данные, категориальные данные, данные временных рядов и текстовые данные.
Следовательно, становится квинтэссенцией иметь и работать над наиболее подходящим набором данных для решения проблем ML / DL. Один из самых сложных наборов данных для создания или поддержки - это набор данных на основе файла изображения, поскольку его актуальность резко меняется от одной постановки задачи к другой. Для получения необходимого соответствующего набора данных изображений можно использовать разные платформы и веб-сайты, но этого часто бывает недостаточно. Одним из наиболее точных и богатых источников набора данных изображений является поиск на основе ключевых слов в поисковых системах или поисковые системы изображений на основе ключевых слов, например Изображения Google и Изображения Bing и т. Д.
В этой статье мы рассмотрим методику автоматизации создания набора данных изображения из Картинок Google с помощью Python с Selenium на основе файла запроса. Полный код с зависимостями можно найти в конце этой статьи.
Автоматизация создания наборов данных из изображений Google
Шаги, вовлеченные в процесс
- Создание файла CSV, который содержит такие данные, как ключевые слова, количество загружаемых изображений, разрешение и т. Д.
- Получение URL-адресов изображений по заданному ключевому слову
- Изменение размера изображения из полученного URL-адреса, установленного на входное разрешение.
- Загрузка окончательно измененного изображения на локальный диск.
Создание CSV-файла запросов / ключевых слов
CSV-файл содержит список ключевых слов и других параметров, которые можно установить вручную и по-разному для каждого ключевого слова, чтобы создать набор данных, более адаптированный к нашим потребностям в данных. Включены следующие параметры:
- Ключевое слово и количество изображений: ключевые слова, которые будут использоваться для поиска связанных изображений, и количество изображений, которые должны быть загружены для данного ключевого слова.
- Разрешение. Разрешение в пикселях для данного вырезанного изображения.
Получение URL-адресов изображений по заданному ключевому слову
Это этап, на котором мы будем очищать Изображения Google от URL-адресов упомянутого ключевого слова, и для этого мы будем использовать Selenium. Selenium требует драйверов браузера для автоматизации веб-браузера. В этой статье мы использовали Chrome. хромированные отвертки можно скачать по этой ссылке.
Определение chromedriver или веб-драйвера.
wd = webdriver.Chrome(executable_path = DRIVER_PATH)
Поиск изображений Google по заданному запросу или ключевому слову.
wd.get(search_url.format(q=query))
Использование селектора CSS для получения элементов изображения.
actual_images = wd.find_elements_by_css_selector('img.n3VNCb')
При создании большого набора данных изображений, загруженных за один раз или на странице, было недостаточно, поэтому для этой цели мы добавили бесконечную прокрутку.
def scroll_to_end(wd): wd.execute_script("window.scrollTo(0,document.body.scrollHeight);") time.sleep(sleep_between_interactions)
Извлечение ссылок на изображения из элементов изображения.
for actual_image in actual_images: if actual_image.get_attribute('src') and 'http' in actual_image.get_attribute('src'): image_urls.add(actual_image.get_attribute('src'))
Изменение размера и загрузка изображения, установите разрешение из полученного URL.
После получения URL-адресов изображений они должны быть установлены на разрешение по нашему выбору, чтобы получить однородность в наборе данных, а также в соответствии с конфигурацией нашей системы или поддержкой. Для этого мы используем библиотеку Python Pillow, которая используется для обработки изображений и т. Д. Библиотека запросов используется для обработки полученного URL-адреса, который будет использоваться функциями Pillow.
Открытие изображений с самого URL
response = requests.get(url) img = Image.open(BytesIO(response.content))
Изменение разрешения изображения.
newsize = (x,y) img = img.resize(newsize)
Скачивание файлов на локальный диск.
mg.save(download_path+q+"_"+str(i)+".jpeg","JPEG")
Примечание. Средство очистки может выдать некоторую ошибку при удалении и вернуть NULL набор URL-адресов для устранения того, что блок try-except использовался в этом В этом случае попробуйте повторно запустить код или изменить параметры в query.csv
Зависимости / Требования
Установите chromedriver по следующей ссылке.
Чтобы просмотреть весь код этого проекта, перейдите по ссылке на Github.
Это все для этой статьи. Прокомментируйте и поделитесь, если вы столкнетесь с какими-либо проблемами или ошибками при использовании этого подхода. Если вы использовали альтернативный подход, поделитесь.