Это не так просто, как вы думаете.

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

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

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

Изображение есть не что иное, как матрица чисел. Компьютер не может видеть изображения, как люди. Он смотрит только на числа, и это то, что представляют собой изображения.

Изображение в градациях серого представляет собой двумерную матрицу со значениями в диапазоне от 0 до 255. 0 — черный, 255 — белый, а между ними — все оттенки серого. Раньше, когда не было глубокого обучения (или когда глубокое обучение не было популярным), люди смотрели на пиксели. Каждый пиксель был особенностью. Вы можете легко сделать это в Python. Просто прочитайте изображение в градациях серого с помощью OpenCV или Python-PIL, преобразуйте в массив numpy и распутайте (сгладьте) матрицу. Если вы имеете дело с изображениями RGB, то у вас есть три матрицы вместо одной. Но идея остается прежней.

Приведенный выше код генерирует случайную матрицу с использованием numpy. Эта матрица состоит из значений от 0 до 255 (включительно) и имеет размер 256x256 (также известный как пиксели).

Как видите, распутанная версия представляет собой не что иное, как вектор размера M, где M = N * N. В данном случае этот вектор имеет размер 256 * 256 = 65536. Теперь, если мы продолжим и сделаем это для все изображения в нашем наборе данных, у нас есть 65536 функций для каждого образца.

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

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

То есть (не очень) простая бинарная классификация.

На рисунке 2 вы можете увидеть сравнение между изображениями без пневмоторакса и пневмоторакса.

Как вы, должно быть, уже заметили, неспециалисту (таким как я) довольно сложно даже определить, на каком из этих изображений есть пневмоторакс. Исходный набор данных предназначен для определения того, где именно присутствует пневмоторакс, но мы изменили задачу, чтобы определить, есть ли пневмоторакс на данном рентгеновском изображении или нет.

Не волнуйтесь; мы рассмотрим часть where в этой главе. Набор данных состоит из 10675 уникальных изображений, из которых 2379 имеют пневмоторакс (обратите внимание, что эти числа получены после некоторой очистки данных и поэтому не соответствуют исходному набору данных).

Как сказал бы специалист по данным: это классический случай искаженной бинарной классификации.

Поэтому мы выбираем метрику оценки как AUC и используем стратифицированную схему перекрестной проверки в k-кратном порядке. Вы можете сгладить функции и попробовать некоторые классические методы, такие как SVM, RF, для выполнения классификации, что прекрасно, но это не приблизит вас к современному уровню техники. Кроме того, изображения имеют размер 1024x1024.

Обучение модели на этом наборе данных займет много времени. Для чего-то давайте попробуем построить на этих данных простую модель случайного леса. Поскольку изображения имеют оттенки серого, нам не нужно выполнять какое-либо преобразование. Мы изменим размер изображений до 256x256, чтобы уменьшить их, и будем использовать AUC в качестве метрики, как обсуждалось ранее.

Вывод

Если вы только собираетесь начать свое машинное обучение и хотите учиться с нуля, я буду делать эту серию, которая будет длиться 5–6 минут о машинном обучении и некоторых побочных проектах в конце каждой главы, так что следите за обновлениями и будьте счастливы обучение

Это мое личное исследование, если у вас есть какие-либо комментарии, пожалуйста, свяжитесь со мной.

Добро пожаловать на мою среднюю страницу

Github, LinkedIn, Захра Эльхамрауи, Upwork