Russian Qt Forum
Апрель 20, 2024, 02:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3 ... 6   Вниз
  Печать  
Автор Тема: Восстановление изображения  (Прочитано 25688 раз)
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« : Октябрь 21, 2020, 17:36 »

Всем доброго времени суток, камрады!

Задача такая:
Имеется матрица пикселей: каждый пиксель имеет свои координаты (x, y) и значение (R, G, B). Причём большинство пикселей "битые",
пусть для определённости, 95% всех пикселей нерабочие, и мы можем работать только с оставшимися 5% "живых" пикселей. Живые пиксели
равновероятно распределены по всей матрице и мы знаем их координаты (x, y).
Вопрос: как на основе "живых" пикселей наиболее "корректно" восстановить всё изображение?

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

Заранее спасибо)  



« Последнее редактирование: Октябрь 21, 2020, 17:50 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #1 : Октябрь 21, 2020, 17:38 »

Сейчас нейросети картины дорисовывают... Улыбающийся Вот я бы опять в эту сторону смотрел.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #2 : Октябрь 21, 2020, 17:45 »

Сейчас нейросети картины дорисовывают... Улыбающийся Вот я бы опять в эту сторону смотрел.


Пожалуй, да) Это, как я понимаю, проблема классификации.. Входные данные это 2D вектор (x, y), а выходной - 3D (R, G, B).
 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #3 : Октябрь 21, 2020, 19:07 »

Входные данные это 2D вектор (x, y), а выходной - 3D (R, G, B).
Да тут огромный простор для экспериментов. Улыбающийся
Я бы тренировал сеть показывая исходную картинку (где все битые пиксели заменялись [0, 0, 0]), а в качестве правильного ответа показывал бы валидную картинку.
 
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #4 : Октябрь 21, 2020, 19:17 »

Входные данные это 2D вектор (x, y), а выходной - 3D (R, G, B).
Да тут огромный простор для экспериментов. Улыбающийся
Я бы тренировал сеть показывая исходную картинку (где все битые пиксели заменялись [0, 0, 0]), а в качестве правильного ответа показывал бы валидную картинку.
 

А что значит валидная картинка? У меня условно только 5% живых пикселей, случайно распределённых по матрице)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #5 : Октябрь 21, 2020, 19:21 »

А что значит валидная картинка? У меня условно только 5% живых пикселей, случайно распределённых по матрице)
Ну сеть то нужно вначале натренировать, поэтому понадобяться некие исходные картинки. Дальше мы берем хорошую картинку, убиваем по определенным правилам 95% и отдаем эту пару сети. И там 100500 разных картинок. Улыбающийся
А потом при запросе мы даем сети битую картинку, а она нам восстановленную (на ее взгляд). Улыбающийся
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #6 : Октябрь 21, 2020, 19:41 »

А что значит валидная картинка? У меня условно только 5% живых пикселей, случайно распределённых по матрице)
Ну сеть то нужно вначале натренировать, поэтому понадобяться некие исходные картинки. Дальше мы берем хорошую картинку, убиваем по определенным правилам 95% и отдаем эту пару сети. И там 100500 разных картинок. Улыбающийся
А потом при запросе мы даем сети битую картинку, а она нам восстановленную (на ее взгляд). Улыбающийся

Так, хорошо, идею понял.. Улыбающийся
Но мне не совсем очевидно следующее:
Пусть у нас есть 100500 валидных картинок, одинаковой размерности (соответствующих размерности нашей восстанавливаемой) с одинаковым набором живых пикселей.
Нейросеть выцепляет некоторые корреляции между координатами живых пикселей с их значениями (R, G, B).
Мне не очевидно, почему обученная сеть, на основе "левых" вылидных картинок, сможет восстановить конкретно совершенно другую картинку?
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #7 : Октябрь 21, 2020, 19:57 »

Мне не очевидно, почему обученная сеть, на основе "левых" вылидных картинок, сможет восстановить конкретно совершенно другую картинку?
Конечно, другую картинку она не восстановит. Улыбающийся
Если сеть тренировать на пейзажах, а потом показать ей "убитого" робота, то она из него пейзаж и восстановит. Улыбающийся
Я думал у вас некий определенный набор картинок будет.
А так натренировать сеть на всё-всё-всё врядли получится. Улыбающийся
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #8 : Октябрь 21, 2020, 20:11 »

Мне не очевидно, почему обученная сеть, на основе "левых" вылидных картинок, сможет восстановить конкретно совершенно другую картинку?
Конечно, другую картинку она не восстановит. Улыбающийся
Если сеть тренировать на пейзажах, а потом показать ей "убитого" робота, то она из него пейзаж и восстановит. Улыбающийся
Я думал у вас некий определенный набор картинок будет.
А так натренировать сеть на всё-всё-всё врядли получится. Улыбающийся

Мне не очевидно, почему обученная сеть, на основе "левых" вылидных картинок, сможет восстановить конкретно совершенно другую картинку?
Конечно, другую картинку она не восстановит. Улыбающийся
Если сеть тренировать на пейзажах, а потом показать ей "убитого" робота, то она из него пейзаж и восстановит. Улыбающийся
Я думал у вас некий определенный набор картинок будет.
А так натренировать сеть на всё-всё-всё врядли получится. Улыбающийся

Вот  Улыбающийся
Я немного слукавил - у меня уже есть решение этой проблемы, правда не без своих минусов.. Хотел просто сравнить разные подходы.
И да, моё решение - это именно machine learning  Улыбающийся

Вот в аттаче https://dropmefiles.com.ua/ru/LANZ8Q6mxD прикрепляю архив с картинками - оригинальными и восстановленными на основе 5% случайных пикселей Улыбающийся
Ну, как вам?  Улыбающийся
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #9 : Октябрь 21, 2020, 20:22 »

Вот исходники для двух примеров. Во втором примере нужно png картинку в корень положить (example2) с именем "photo.png" + boost::gil,
а в первом примере нужно иметь установленный gnuplot http://www.gnuplot.info/ )
« Последнее редактирование: Октябрь 21, 2020, 21:12 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #10 : Октябрь 21, 2020, 20:27 »

Ну, как вам?  Улыбающийся
Шикарно.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #11 : Октябрь 21, 2020, 21:13 »

Прошу прощения: перепутал example1 с example2... Исправил..
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #12 : Октябрь 21, 2020, 22:13 »

Ну, как вам?  Улыбающийся
Шикарно.

Вы знаете, я сравнивал с классической нейросетью (tiny_dnn) в плане обучения её по времени.. Так вот (не исключаю, что у меня руки не из того места растут) она в статистическом плане всегда проигрывает vanda-е..Т.е. время обучения  у неё нереально большое..(
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #13 : Октябрь 22, 2020, 00:13 »

нужно png картинку в корень положить (example2) с именем "photo.png" + boost::gil,

как посмотреть на картинку, от которой осталось 5% из исходной ?
boost::gil не знаю - как сохранить не соображу
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #14 : Октябрь 22, 2020, 06:41 »

нужно png картинку в корень положить (example2) с именем "photo.png" + boost::gil,

как посмотреть на картинку, от которой осталось 5% из исходной ?
boost::gil не знаю - как сохранить не соображу

Да и не нужно на неё смотреть.. Просто берёте png картинку, называете её photo.png и кидаете её в папочку example2...
boost::gil - это Generic Image Library - библиотека для работы с изображениями)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: [1] 2 3 ... 6   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.056 секунд. Запросов: 23.