Обнаружение ключевых точек на изображении с использованием нейронной сети

Вопрос или проблема

Я пытаюсь разработать и обучить нейронную сеть, которая сможет дать мне координаты определенных ключевых точек на изображении.

Датасет

У меня есть датасет, содержащий 1800 изображений, подобных этим:

введите описание изображения здесь
введите описание изображения здесь

Этот датасет создан мной. Каждый изображение содержит два круга, один меньше, другой больше, сгенерированные случайным образом на изображении. Моя цель – обучить нейронную сеть так, чтобы она возвращала 2 набора координат, каждые из которых указывают точно в центр круга. Каждое изображение имеет форму (320, 320, 1).

Текущая модель

Мне удалось добиться этого в некоторой степени, но этого недостаточно. Ниже вы можете увидеть архитектуру нейронной сети, которая была самой успешной до сих пор. Я использую Python, Tensorflow 2, включая Keras. Я использую оптимизатор Adam, функцию потерь MeanSquaredError и метрику RootMeanSquaredError.

введите описание изображения здесь

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

введите описание изображения здесь
введите описание изображения здесь

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

Я обучал эту модель в течение 35 эпох в 4 запусках, и она не может обучаться дальше, как вы можете видеть в Tensorboard.

введите описание изображения здесь
введите описание изображения здесь

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

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

Спасибо

Правка: Чтобы дополнить детали, слои Conv2D используют активационную функцию leaky relu, а оба плотных слоя используют сигмоидальную активационную функцию.

Вы можете обучить YOLO для обнаружения и создания ограничивающей рамки вокруг круга, а затем вычислить его центр. Или даже сегментация может помочь вам сделать это точно.

По моему предположению, вам не потребуется машинное обучение для этого. Адеш Гаутам предложил создать ограничивающую рамку, а затем применить модель машинного обучения. Я предложу больше, чем это: просто используйте алгоритм ограничивающей рамки. Существует множество техник компьютерного зрения, которые можно применить, прежде чем прибегать к машинному обучению. Я бы также предложил вам рассмотреть обнаружение живых изгородей.

Ответ или решение

Обнаружение ключевых точек на изображении с помощью нейронной сети: Подходы и рекомендации

Обнаружение ключевых точек на изображениях является одной из важных задач в области компьютерного зрения, которая может применяться в медицинской визуализации, робототехнике и многих других областях. В вашем случае, вашей целью является определить координаты центров кругов на наборах изображений, что представляет собой интересную задачу для машинного обучения. Рассмотрим ключевые аспекты вашего проекта и предложим рекомендации для улучшения результата.

1. Описание задачи

Ваши изображения имеют размер 320×320 пикселей и содержат два круга различного размера. Вы предполагаете, что использование нейронных сетей для данных задач может быть эффективным, однако достижения результатов по-прежнему требует оптимизации как архитектуры модели, так и данных.

2. Набор данных

Вы упомянули, что у вас есть 1800 изображений. Это может быть недостаточным для глубокого обучения, так как нейронные сети имеют склонность к переобучению на малых наборах данных. Попробуйте провести аугментацию данных, чтобы увеличить количество тренировочных примеров. Это может включать:

  • Повороты
  • Смещения
  • Изменение яркости/контраста
  • Отзеркаливание

3. Архитектура модели

Ваша текущая модель, использующая слои Conv2D и Dense с активацией leaky ReLU и sigmoid, может потребовать некоторой модификации. Вот несколько предложений для улучшения архитектуры:

  • Увеличение количества сверточных слоев: попробовать добавить больше сверточных слоев для более глубокого извлечения признаков.
  • Использование Dropout: включение слоев Dropout для предотвращения переобучения.
  • Batch Normalization: добавление слоев нормализации для ускорения обучения и улучшения качества модели.
  • Проверка на более эффективных архитектурах: рассмотреть возможность использования предобученных моделей, таких как EfficientNet или ResNet, которые могут помочь в извлечении более сложных признаков.

4. Альтернативные подходы

Вы также упомянули возможность использования других методов, таких как YOLO или алгоритмы для обнаружения границ. Это может быть действительно полезным, поскольку:

  • YOLO (You Only Look Once): использовать YOLO для обнаружения объектов и расчета координат их центров может быть наиболее эффективным способом, учитывая, что задача состоит в определении местоположений объектов.
  • Методы сегментации: подходы, такие как U-Net, могут помочь в обнаружении кругов и более точном определении их границ.

5. Метрики и обучение

Вы используете MeanSquaredError в качестве функции потерь, что может быть подходящим в некоторых случаях. Однако, на более сложных задачах стоит рассмотреть адаптивные функции потерь или даже кастомные метрики, которые могут учитывать специфику вашей задачи. Также убедитесь, что вы используете достаточное количество эпох для сходимости вашей модели.

Заключение

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

Рекомендуется также делиться результатами и задумками с сообществом исследований в области машинного обучения для получения дополнительных инсайтов и улучшения стратегии вашей разработки. Успехов в ваших дальнейших усилиях!

Оцените материал
Добавить комментарий

Капча загружается...