Телескопы покупают здесь


A A A A Автор Тема: Делаю ИИ приложение для поиска комет и астероидов на фотографиях. Нужно мнение.  (Прочитано 1445 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн N0R1SАвтор темы

  • **
  • Сообщений: 82
  • Благодарностей: 110
  • Мне нравится этот форум!
    • Сообщения от N0R1S
Чукча не писатель, чукча программист, поэтому пост написан как есть.
Давно лелеял мысль познакомиться с ИИ технологиями, читал, узнавал, а потом внезапно пришла мысль, а почему бы не сделать пет-проект связанный с моим хобби?

Вводные: у меня есть куча сырых фотографии, некоторые объекты снимались по-нескольку ночей, почему бы не попытаться на них найти не только звёзды, а еще и малые тела солнечной системы?
Да, в PixInsight есть скрипт AnnotateImage, скачав каталоги - можно разметить известные астеройды, и если какой-нибудь достаточно яркий, то он будет виден. Но! мы же не ищем лёгких путей и есть мечта найти что-то новенькое, тогда каталоги нам не в помощь. Отсматривать все снимки (или даже разницы) в поисках перемещающейся точки лень и глаза жалко.

ИИ: Почитав, погуглив, собрал свою модель, написал генератор обучающего датасета, и понеслось обучение. Каково было счастье, когда подсунул фотографии с RASA8 телескопа, и оно нашло настоящий астероид! Попробовал разных архитектур сетей и пришёл к той, что пока работает лучше всего. Отмечает она не 100% точно, иногда наблюдаются ложные срабатывания, но чем меньше артефактов на сабах- тем лучше.

На тех сабах, что у меня есть с RASA8 оно смогло найти несколько десятков астероидов (все пробиваются по каталогу) и переменную звезду в туманности Ориона (V* MM Ori).

Тему создал, чтобы поделиться альфа версией и получить фидбэк, а может, кто-нибудь найдет что-то интересное=)

Как пользоваться:
1) Скачать архив. Вирусов быть не должно, кто первый найдёт - не стесняйтесь кидаться помидорами. https://drive.google.com/file/d/1q-IgCL0GMzxk1pqeS0BxHCWzPR-RGqUV/view?usp=drive_link
2) Распаковать. Размер приличный, так как туда включены все зависимости, в частности довольно увесистый tensorflow.
3) Приложение пока работает из командной строки и не имеет UI (альфа же). Запустить его
CelestialSurveyor.exe -s <source_folder> -o <output_folder>

Есть help, но тут поясню следующее:
В качестве source_folder надо указать путь до папки с отклиброванными и выровненными по звёздам снимками, проще говоря папка registred с промежуточными файлами, которые получаются в процессе работы WBPP в PixInsight. В текущем виде приложение понимает ТОЛЬКО XISF формат. Снимки могут быть как цветные, так и монохромные. ВАЖНО: убедиться, что все снимки ориентированы одинаково, нет перевернутых, в старых сетах у меня такие есть. Так же важно отбраковать откровенно плохие снимки смазанные, с ореолами от облаков.
В качестве output_folder указывается папка куда сложить результат, если её нет, то она будет создана.
Ключ -n надо указать, если по каким то причинам снимки в source_folder не в linear state, если были стречнуты, например, с линейными снимками его указывать не надо.

Пример работы:
CelestialSurveyor>CelestialSurveyor.exe -s C:\Users\bsolomin\Astro\NGC_1333_RASA\cropped -o C:\Users\bsolomin\Astro\ready11
WARNING:tensorflow:AutoGraph is not available in this environment: functions lack code information. This is typical of some environments like the interactive Python shell. See https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/autograph/g3doc/reference/limitations.md#access-to-source-code for more information.
WARNING:tensorflow:From keras\src\losses.py:2976: The name tf.losses.sparse_softmax_cross_entropy is deprecated. Please use tf.compat.v1.losses.sparse_softmax_cross_entropy instead.

Loading images...
100%|██████████████████████████████████████████████████████████████████████████████████| 24/24 [00:08<00:00,  2.95it/s]
Raw image data loaded:
SHAPE: [(24, 3237, 4903)]
Used RAM: 1453 Mb
Processing object number 1 of 1
100%|████████████████████████████████████████████████████████████████████████████████| 190/190 [01:36<00:00,  1.98it/s]

На варнинги внимания можно не обращать, их кидает tensorflow, причём превентивно, попытки их отключить пока не увенчались успехом.
В output_folder должен появиться файлик results0.png, каждый пиксель которого есть максимум от всех изображений в input_folder после autostretch. И если что-то нашлось - на нём появятся пометки куда смотреть. Как пример мой самый плодовитый объект, снятый на RASA8 сабами по 5 минут, видны объекты до 18,5 звездной величины.

Зелёными квадратиками отмечены найденные участки. Красными с номерами - построенные гифки для удобного просмотра, которые так же находятся в output_folder.
Например гифка номер 7.

Пример этого сета: https://drive.google.com/file/d/1vPQ9mERABDkdkO9fDGdhAWmLdITaNQlN/view?usp=drive_link


Вот и всё... Дайте знать в случае проблем.
Ах да, вот инструкция, как к пиксе прикрутить аннотатор астеройдов: http://www.youtube.com/watch?v=n2zI3aX0iSA#

« Последнее редактирование: 24 Ноя 2023 [18:50:10] от N0R1S »


Оффлайн N0R1SАвтор темы

  • **
  • Сообщений: 82
  • Благодарностей: 110
  • Мне нравится этот форум!
    • Сообщения от N0R1S
UPD: Гугл ограничили доступ в архиву с программой. Общаюсь с поддержкой, надеюсь, скоро откроют обратно.

Оффлайн N0R1SАвтор темы

  • **
  • Сообщений: 82
  • Благодарностей: 110
  • Мне нравится этот форум!
    • Сообщения от N0R1S
Пока Google проверяет архив, загрузил такой же на Yandex.
https://disk.yandex.com/d/smLnpoqSY3rDPQ

Онлайн Дмитрий Маколкин

  • *****
  • Сообщений: 14 869
  • Благодарностей: 1295
  • всяко разно
    • Skype - dmitrymakolkin
    • DeepSkyHosting: dvmak
  • Награды Призер конкурса астрофото
    • Сообщения от Дмитрий Маколкин
    • Панорамы Луны
Отмечает она не 100% точно, иногда наблюдаются ложные срабатывания, но чем меньше артефактов на сабах- тем лучше.

Космики как-то идентифицируются? Или объект должен быть на нескольких последовательных кадрах для срабатывания детектора?
Панорамы Луны в моей галерее:
http://www.makolkin.ru/Gallery/gallery.html
Мои дипы: https://deepskyhosting.com/dvmak

Оффлайн N0R1SАвтор темы

  • **
  • Сообщений: 82
  • Благодарностей: 110
  • Мне нравится этот форум!
    • Сообщения от N0R1S
Космики как-то идентифицируются? Или объект должен быть на нескольких последовательных кадрах для срабатывания детектора?

Отличный вопрос! Если речь идёт про косметические дефекты вроде горячих пикселей, то ответ следующий:
Модель обучалась НЕ реагировать на случайно возникающие точки и другие объекты (вроде метеоров, спутников, которые возникают только на 1 кадре). Касательно косметических дефектов, добавлю, что выбрал именно этот пример для демонстрации еще и потому, что здесь полно горячих пикселей, смещающихся при дитеринге по RA (смотри вложение). Однако в особо сложных случаях модель на них всё таки срабатывает, как например квадратик номер 6.

Онлайн Дмитрий Маколкин

  • *****
  • Сообщений: 14 869
  • Благодарностей: 1295
  • всяко разно
    • Skype - dmitrymakolkin
    • DeepSkyHosting: dvmak
  • Награды Призер конкурса астрофото
    • Сообщения от Дмитрий Маколкин
    • Панорамы Луны
Отличный вопрос! Если речь идёт про косметические дефекты вроде горячих пикселей, то ответ следующий:

Я имел в виду следы космических лучей, которые могут быть достаточно длинными, но каждый присутствует только на своём кадре.
Если одиночные события игнорируются, то ОК.
Панорамы Луны в моей галерее:
http://www.makolkin.ru/Gallery/gallery.html
Мои дипы: https://deepskyhosting.com/dvmak

Оффлайн jaker

  • *****
  • Сообщений: 1 467
  • Благодарностей: 232
  • Андрей
    • Сообщения от jaker

Что-то у меня не пошло


C:\Test>CelestialSurveyor.exe -s z:\z\1 -o z:\z\2
WARNING:tensorflow:AutoGraph is not available in this environment: functions lack code information. This is typical of some environments like the interactive Python shell. See https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/autograph/g3doc/reference/limitations.md#access-to-source-code for more information.
WARNING:tensorflow:From keras\src\losses.py:2976: The name tf.losses.sparse_softmax_cross_entropy is deprecated. Please use tf.compat.v1.losses.sparse_softmax_cross_entropy instead.


Unsupported Property type F64Vector: <Element '{http://www.pixinsight.com/xisf}Property' at 0x0000026B2948A9D0>
Unsupported Property type F64Matrix: <Element '{http://www.pixinsight.com/xisf}Property' at 0x0000026B2948ACA0>
Unsupported Property type F64Vector: <Element '{http://www.pixinsight.com/xisf}Property' at 0x0000026B2948AD40>
Unsupported Property type F64Vector: <Element '{http://www.pixinsight.com/xisf}Property' at 0x0000026B2948ADE0>
Unsupported Property type F64Vector: <Element '{http://www.pixinsight.com/xisf}Property' at 0x0000026B2948AE80>
Unsupported Property type UI8Vector: <Element '{http://www.pixinsight.com/xisf}Property' at 0x0000026B2948AF70>
Unsupported Property type F32Matrix: <Element '{http://www.pixinsight.com/xisf}Property' at 0x0000026B2948B290>
Traceback (most recent call last):
  File "try_model.py", line 249, in <module>
  File "try_model.py", line 114, in main
  File "dataset_creator\dataset_creator.py", line 20, in __init__
  File "dataset_creator\dataset_creator.py", line 38, in __load_raw_dataset
  File "dataset_creator\dataset_creator.py", line 38, in <listcomp>
  File "dataset_creator\dataset_creator.py", line 102, in crop_folder_on_the_fly
  File "_strptime.py", line 568, in _strptime_datetime
  File "_strptime.py", line 349, in _strptime
ValueError: time data '2022-08-05 21:49:35' does not match format '%Y-%m-%d %H:%M:%S.%f'
[4732] Failed to execute script 'try_model' due to unhandled exception!
Немного фоток: http://www.flickr.com/photos/jakerbe

Оффлайн jaker

  • *****
  • Сообщений: 1 467
  • Благодарностей: 232
  • Андрей
    • Сообщения от jaker
Что-то у меня не пошло
Ладно, попробовал, поменял даты с целых секунд (к примеру 15) на  (15.01) на 10 кадрах
У меня почему-то ловит только мусор


« Последнее редактирование: 26 Ноя 2023 [21:53:31] от jaker »
Немного фоток: http://www.flickr.com/photos/jakerbe

Оффлайн N0R1SАвтор темы

  • **
  • Сообщений: 82
  • Благодарностей: 110
  • Мне нравится этот форум!
    • Сообщения от N0R1S
Что-то у меня не пошло
Большое спасибо за первый баг репорт, поправлю в течении дня!
У меня почему-то ловит только мусор
Надеюсь, это не повод отчаиваться? У меня тоже что-то нашлось лишь на нескольких сетах, насчёт мусора - я продолжаю обучать модель, должно быть со временем всё меньше.
Кстати, до этого не пробовал запускаться с некалиброванными снимками (как минимум без флэтов), так что, как мне видится, Ваш пример работы выглядит не так уж плохо, доработаем.

P.S. Takahashi? Я пока так и не нашёл чем лечить бабочкоподобные блики...

Оффлайн jaker

  • *****
  • Сообщений: 1 467
  • Благодарностей: 232
  • Андрей
    • Сообщения от jaker
P.S. Takahashi?
Нет, это Samyang 135 на Canon 6d
То что без флетов, это я напутал , взял не те файлы, не стал исправлять, тк приходилось вручную корректировать время , чтобы запустить
Немного фоток: http://www.flickr.com/photos/jakerbe

Оффлайн N0R1SАвтор темы

  • **
  • Сообщений: 82
  • Благодарностей: 110
  • Мне нравится этот форум!
    • Сообщения от N0R1S
Что-то у меня не пошло
Прикладываю ссылку на новую версию, бага с датами должна исчезнуть.
https://disk.yandex.com/d/ctHQAcx3tsbiAQ
Обновлю первый пост с актуальной версией. (UPD: Не удалось)

Так же хочу обратить внимание, что в текущем варианте фотографии грузятся в оперативню память в монохроме в формате float32 (4 байта на пиксель). Таким образом, в моём случае сет из 181 фотки 4827х3133 занимает в >10 гигабайт памяти.
SHAPE: [(181, 3133, 4827)]
Used RAM: 10441 Mb
Понимаю, что это может быть ограничением, но при использовании диска довольно медленный подсчет (11 минут в этом случае на core i7 12th Gen) станет ещё медленнее. Буду думать, что с этим делать попозже.

Дальнейшие шаги в разработке:
- UI
- Оптимизация использования RAM для машин с недостаточным объемом.
« Последнее редактирование: 27 Ноя 2023 [15:56:06] от N0R1S »

Оффлайн leviathan

  • *****
  • Сообщений: 27 367
  • Благодарностей: 1593
  • Смотри в оба !
    • Сообщения от leviathan
Takahashi? Я пока так и не нашёл чем лечить бабочкоподобные блики...
Виньетирование.
Я видел всё небо !

Оффлайн N0R1SАвтор темы

  • **
  • Сообщений: 82
  • Благодарностей: 110
  • Мне нравится этот форум!
    • Сообщения от N0R1S
Виньетирование.
Буду очень благодарен за подробности. Заранее спасибо!

Оффлайн jaker

  • *****
  • Сообщений: 1 467
  • Благодарностей: 232
  • Андрей
    • Сообщения от jaker
Прикладываю ссылку на новую версию, бага с датами должна исчезнуть.
Теперь другое
c:\Test>CelestialSurveyor.exe -s z:\z\1 -o z:\z\2
WARNING:tensorflow:AutoGraph is not available in this environment: functions lack code information. This is typical of some environments like the interactive Python shell. See https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/autograph/g3doc/reference/limitations.md#access-to-source-code for more information.
WARNING:tensorflow:From keras\src\losses.py:2976: The name tf.losses.sparse_softmax_cross_entropy is deprecated. Please use tf.compat.v1.losses.sparse_softmax_cross_entropy instead.

Unsupported Property type F64Vector: <Element '{http://www.pixinsight.com/xisf}Property' at 0x00000236231C9D50>
Unsupported Property type F64Matrix: <Element '{http://www.pixinsight.com/xisf}Property' at 0x00000236231CA020>
Unsupported Property type F64Vector: <Element '{http://www.pixinsight.com/xisf}Property' at 0x00000236231CA0C0>
Unsupported Property type F64Vector: <Element '{http://www.pixinsight.com/xisf}Property' at 0x00000236231CA160>
Unsupported Property type F64Vector: <Element '{http://www.pixinsight.com/xisf}Property' at 0x00000236231CA200>
Unsupported Property type UI8Vector: <Element '{http://www.pixinsight.com/xisf}Property' at 0x00000236231CA2F0>
Unsupported Property type F32Matrix: <Element '{http://www.pixinsight.com/xisf}Property' at 0x00000236231CA610>
Traceback (most recent call last):
  File "try_model.py", line 255, in <module>
  File "try_model.py", line 114, in main
  File "dataset_creator\dataset_creator.py", line 22, in __init__
  File "dataset_creator\dataset_creator.py", line 40, in __load_raw_dataset
  File "dataset_creator\dataset_creator.py", line 40, in <listcomp>
  File "dataset_creator\dataset_creator.py", line 106, in crop_folder_on_the_fly
AttributeError: 'NoneType' object has no attribute 'group'
[2884] Failed to execute script 'try_model' due to unhandled exception!
Немного фоток: http://www.flickr.com/photos/jakerbe

Оффлайн N0R1SАвтор темы

  • **
  • Сообщений: 82
  • Благодарностей: 110
  • Мне нравится этот форум!
    • Сообщения от N0R1S
Теперь другое
https://disk.yandex.com/d/HhvfKBpE2tIVbQ
Прошу прощения, ошибка вышла, теперь точно быть хорошо.
« Последнее редактирование: 27 Ноя 2023 [20:51:58] от N0R1S »

Оффлайн jaker

  • *****
  • Сообщений: 1 467
  • Благодарностей: 232
  • Андрей
    • Сообщения от jaker
Немного фоток: http://www.flickr.com/photos/jakerbe

Оффлайн N0R1SАвтор темы

  • **
  • Сообщений: 82
  • Благодарностей: 110
  • Мне нравится этот форум!
    • Сообщения от N0R1S
Приведу пример работы на одном из своих сетов.
Итак, Barnard 150 снималась мной в августе 2022 за несколько ночей. RASA8, ASI071MC Pro, 120 sec сабы, gain90
https://deepskyhosting.com/mVfHt41
Натравил свою программу на часть из снимков. Ниже результаты.
results0.png


Нашлось немного интересного, рассмотрим детально квадратик и гифка номер 1:

Ничего, скорее всего нейросеть среагировала на изменение формы неидеальных звёзд на краю.

Гифка номер 2 и 3:


Что-то движется, открываем PixInsight, аннотацию астеройдов (инструкция в конце первого поста). Видим, что это астеройд.


Один и тот же астеройд 2 км в диаметре +17.33 звёздной величины, можно его найти тут https://asteroid.lowell.edu/

Гифка номер 4:

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

Гифка номер 5:

Тоже ложное срабатывание.

Результаты: 2 ложных срабатывания, 1 астероид, одна "мигнувшая" звезда. Продолжу обучение в ближайшее время.
Спасибо @jaker за тестирование.

Оффлайн leviathan

  • *****
  • Сообщений: 27 367
  • Благодарностей: 1593
  • Смотри в оба !
    • Сообщения от leviathan
Я видел всё небо !

Оффлайн mo

  • *****
  • Сообщений: 17 501
  • Благодарностей: 1073
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
А нет ли планов выпуска версии под Linux? У меня в обсерватории есть машинка на Debian со старенькой NV Tesla M40.

Tensorflow использую в перловой YOLO для AllSky и CCTV задач.

Было бы интересно пропускать все лайты хостела через эту поисковую программу.
モ - mo

Оффлайн mo

  • *****
  • Сообщений: 17 501
  • Благодарностей: 1073
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
Ну и обучалку модели бы тоже. Под конкретный астрограф. Для повышения эффективности сети.
モ - mo