Неочевидное в выборе библиотеки обработки изображений для машинного обучения
В спектр задач многих аналитиков входит такие, где машинное обучение способно многократно ускорить получение результата. В этой статье расскажем, как простая смена библиотеки для работы с изображениями в разы ускорила столь затратный по вычислительным мощностям процесс: подготовка большого количества изображений для последующего обучения и работы модели нейронной сети.
Для работы с изображениями в Python наиболее часто используют библиотеку PIL (Python Image Library) и поисковые системы выдадут нам несколько решений только с использованием PIL, прежде чем предложат что-то другое.
На помощь способны прийти технологии компьютерного зрения, а именно – библиотека OpenCV. Что такое OpenCV? — библиотека компьютерного зрения и машинного обучения с открытым исходным кодом. В неё входят более 2500 алгоритмов, в которых есть как классические, так и современные алгоритмы для компьютерного зрения и машинного обучения. Реализована на C/C++, также разрабатывается для Python, Java, Ruby, Matlab, Lua и других языков. Может свободно использоваться в академических и коммерческих целях — распространяется в условиях лицензии BSD.
Условия тестирования:
- тестовое изображение с разрешением 700 на 700 пикселей;
- вычисления производились на процессоре Intel Core i3-2120.
Примеры кода и результаты замеров производительности
Подключаем библиотеки:
открываем тестовое изображение обеими библиотеками:
функции, которые будем вызывать для преобразования изображения по 5000 раз:
совершаем по 5000 итераций преобразования нашего тестового изображения к монохромному замеряя время выполнения. Этот тест проводим 100 раз и берем средний результат:
Разница больше трех раз.
совершаем по 5000 итераций изменения разрешения нашего тестового изображения на 100 на 100 пикселей замеряя время выполнения. Этот тест также проводим 100 раз и берем средний результат:
Разница более 59 раз!
Рассмотренные библиотеки отличаются не только скоростью обработки изображений, но и алгоритмами, которыми они это делают. Результаты работы алгоритмов тоже отличаются. Предлагаем читателю провести собственное исследование используя образцы кода из статьи.