В моем классе я должен создать приложение, используя два классификатора, чтобы решить, является ли объект на изображении примером phylum porifera (seasponge) или каким-либо другим объектом.
Тем не менее, я полностью растерялся, когда дело доходит до методов извлечения функций в Python. Мой советник убедил меня использовать изображения, которые не были рассмотрены в классе.
Может ли кто-нибудь направить меня к содержательной документации или чтению или предложить методы для рассмотрения?
python
feature-extraction
image-recognition
Джереми Барнс
источник
источник
Ответы:
В изображениях некоторые часто используемые методы выделения объектов - это бинаризация и размытие
Бинаризация: преобразует массив изображений в 1 и 0. Это делается при преобразовании изображения в 2D-изображение. Можно использовать даже оттенки серого. Это дает вам числовую матрицу изображения. Оттенки серого занимают гораздо меньше места при хранении на диске.
Вот как вы делаете это в Python:
Пример изображения:
Теперь конвертируйте в оттенки серого:
вернет вам это изображение:
И матрицу можно увидеть, запустив это:
Массив будет выглядеть примерно так:
Теперь используйте гистограмму и / или контурную диаграмму, чтобы взглянуть на особенности изображения:
Это вернет вам сюжет, который выглядит примерно так:
Размытие: алгоритм размытия использует средневзвешенное значение соседних пикселей, чтобы включить цвет окружения в каждый пиксель. Это улучшает контуры лучше и помогает лучше понять особенности и их важность.
И вот как вы делаете это в Python:
И размытое изображение:
Итак, вот несколько способов, которыми вы можете заниматься проектированием объектов. А для продвинутых методов вы должны понимать основы Computer Vision и нейронных сетей, а также различные типы фильтров и их значение, а также их математику.
источник
Этот великолепный урок охватывает основы сверточных нейронных работ, которые в настоящее время достигают современного уровня производительности в большинстве задач зрения:
http://deeplearning.net/tutorial/lenet.html
В Python есть несколько опций для CNN, включая Theano и библиотеки, построенные поверх него (я обнаружил, что keras прост в использовании).
Если вы предпочитаете избегать глубокого изучения, вы можете изучить OpenCV, который может изучать многие другие типы функций, линейные каскады Хаара и функции SIFT.
http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_table_of_contents_feature2d/py_table_of_contents_feature2d.html
источник
Как сказали Джереми Барнс и Джеймсмф, вы можете использовать любые алгоритмы машинного обучения для решения этой проблемы. Они мощные и могут определять функции автоматически. Вам просто нужно подать в алгоритм правильные тренировочные данные. Так как это необходимо для работы с изображениями, нейронные сети свертки будут лучшим вариантом для вас.
Это хороший учебник для изучения нейронной сети свертки. Вы также можете загрузить код и изменить его в соответствии с определением вашей проблемы. Но вам нужно изучить Python и библиотеку theano для обработки, и вы получите хорошие учебники для этого тоже
http://deeplearning.net/tutorial/lenet.html
источник