Как и почему я создал приложение машинного обучения для обнаружения объектов в режиме реального времени на поверхности Солнца
Обо мне
Преподаватель и ученый. Интересуется информатикой, астрономией и археоастрономией. Люблю вызовы и работать над проблемами кодирования.
Проблема, которую я хотел решить
У меня есть солнечный телескоп и астрономическая камера. Увидев множество руководств по обнаружению домашних животных, светофоров или рыб, я решил посмотреть, можно ли применить те же алгоритмы и модели для обнаружения особенностей поверхности Солнца. Проблема в моем случае заключалась в специфической настройке (камера ASI ZWO на USB2, а сам солнечный прицел использовался без крепления) и небольшом количестве данных о поездах, которые я собрал (у меня был прицел в течение нескольких месяцев, но погода в Великобритании не помогает, поэтому я было всего 14 дней изображений).
Что такое машинное обучение для обнаружения особенностей в реальном времени на поверхности Солнца?
Примерно через 2 дня работы я получил приложение, которое может обнаруживать в режиме реального времени из прямой трансляции или из предварительно записанного видео наиболее важные элементы на поверхности Солнца: нити, факелы, протуберанцы и солнечные пятна.
Стек технологий
Програмное обеспечение:
- Python3.7
- Тензорфлоу и Керас
- OpenCV
- АСИ ЗВО SDK
- Изображение Метки
Аппаратное обеспечение:
- Астрономическая камера ASI 120MC на USB2.0, подключенная к солнечному телескопу
- Ноутбук без графического процессора под управлением Windows 10
Процесс создания приложения машинного обучения для обнаружения особенностей в реальном времени на поверхности Солнца.
- Сбор изображений и маркировка данных поезда/теста с использованием существующих инструментов
- Установка необходимых библиотек
- Компиляция модели с помощью онлайн-руководств
- Написание сценария обнаружения путем обновления существующих и адаптации их для связи с конкретной камерой, которую я использую.
- Тестирование скрипта на живых изображениях Солнца (вчера я ненадолго увидел Солнце, поэтому рискнул) и на моих ранее записанных видео.
Проблемы, с которыми я столкнулся
- Интеграция камеры ASI с Python, поскольку OpenCV не обнаруживает ее
- Заставить существующие сценарии работать, так как мне приходилось перемещаться по множеству версий API и даже изменять код внутри существующих библиотек и сценариев моделей.
- Долгое время обучения на моем ноутбуке (без графического процессора). Потребовалось более 4 часов, чтобы довести потери до <0,0xxxx.
Основные выводы
- Навигация по различным API и склеивание всего вместе.
- Интеграция камер ASI с OpenCV.
- Использование LabelIMG для аннотирования моих поездов/тестовых изображений
Советы и советы
Полную историю можно найти в моем блоге по адресу
Заключительные мысли и следующие шаги
Хорошее начало, но для этого все еще требуется больше данных для обучения, поскольку в нем отсутствуют некоторые очевидные функции.
Обнаруженные особенности меняются от кадра к кадру, поэтому стоит исследовать различия в кадрах.
Я планирую интегрировать это в свою удаленную обсерваторию Pi4 или транслировать ее в прямом эфире на сервер для удаленного обнаружения функций.