Делаем перенос стилей изображений с помощью Keras и Tensorflow | #17 нейросети на Python

  Рет қаралды 22,502

selfedu

selfedu

Күн бұрын

Пікірлер: 72
@dubinin_s
@dubinin_s 4 жыл бұрын
Спасибо большое за видео. Сначала подумал, что несколько видео пропустит, ничего не понял с первого раза. Потом законспектировал предыдущие видео, три раза пересмотрел это видео, построчно разобрал программу и через 3 часа все стало предельно понятно)))
@selfedu_rus
@selfedu_rus 4 жыл бұрын
Да, это занятие не простое, приходится вникать, но по другому никак. То, что вы сделали над собой все эти усилия - очень здорово!
@ywbc1217
@ywbc1217 4 жыл бұрын
@@selfedu_rus спасибо вам
@reabstractor
@reabstractor 3 жыл бұрын
Если один просмотр этого видео принять за эпоху, то сколько нужно эпох, чтобы моя боилогическая нейронная сеть распознала всё содержимое видео?
@krv76
@krv76 3 жыл бұрын
Я предлагаю принять просмотр этого видео за батч
@sanpavlovich9726
@sanpavlovich9726 2 жыл бұрын
Ахахах
@sanpavlovich9726
@sanpavlovich9726 2 жыл бұрын
Столько эпох, сколько тут лайков 👍
@Dmitrii-Zhinzhilov
@Dmitrii-Zhinzhilov Жыл бұрын
Предполагаю, что тут всё же нужны видео разной тематики по теме + эксперименты + проекты (заказы). Иначе на "тестовой выборке" нейросеть вряд ли покажет хорошие результаты. P.S. Я запускаю 2 эпохи видео )) и через 3 месяца планирую ещё одну ))
@mif4222
@mif4222 3 жыл бұрын
Вот это уже было сложно, я конечно, в итоге, этот код понял, но самому такое написать, а тем более придумать... нужно много практики.
@СергейЮров-б6е
@СергейЮров-б6е 2 жыл бұрын
Как хорошо, что я внимательно изучил плейлист ЦОС перед этим. В этом уроке осталось просто уловить последовательность действий. Ну и сам тензорфлоу все же специфичный фреймворк. Надо разбираться с его методами. Спасибо! Очень круто!
@userqh67vey6
@userqh67vey6 2 жыл бұрын
Видео полезное. Симбиоз предыдущих уроков, немного ЦОС и особенностей Tensorflow2. Рекордное количество кода. Голова пухнет, особенно когда меняешь количество итераций + настройки оптимизации или параметры альфа и бетта и получаешь не то что ожидаешь. Как сказано ниже, нужно много эпох теории и эксперементов для понимания всего кода :) Лайк!
@discara
@discara 3 жыл бұрын
использую этот же код для вкрб (который ты брал изначально) как же прекрасно, что я нашла этот плейлист, помогает "распутать мозги" нужны были видео про vgg + предыдущее + это спасибо огромное за объяснение, возможно буду использовать их в рпз :D
@discara
@discara 3 жыл бұрын
написала для этого кода интерфейс на streamlit, даже есть задеплоенный вариант)
@itm6197
@itm6197 2 жыл бұрын
@@discara привет, а можешь скинуть ?
@argrigorov
@argrigorov 3 жыл бұрын
Интересен пример обработки изображений нефиксированного размера - чтобы можно было подавать на вход изображения различных размеров, и на выходе получать обработанное изображение такого же размера.
@ravenalbatros
@ravenalbatros 2 жыл бұрын
Можно просто подогнать любое изображение под сеть, - изменить качество, добавить дополнительную свертку в начало
@ll2pakll
@ll2pakll 4 жыл бұрын
Мильярд лайкау)
@lyonya7025
@lyonya7025 3 жыл бұрын
Какой же ты крутой, ну просто трындец
@timon1816
@timon1816 Жыл бұрын
Ура! Я всё понял всего за 8 просмотров
@СарматПересветов
@СарматПересветов Ай бұрын
вопрос, на 12.36 когда мы вычисляем матрицу ГРАМА - в предыдущем уроке мы записывали что нужно перемножить "матрицу признаков" на матрицу признаков".транспонированную. А На этом уроке в фукции gram_matrix мы наоборот перемножаем "матрицу признаков".транспонированную на "матрицу признаков". насколько это правильно? или нам в принцыпе не важно что на что перемножать, главное что бы этот алгоритм применялся ко все обьектам одинаковый???
@yuriynaumov4466
@yuriynaumov4466 Жыл бұрын
скажите пож-та, как сохранить веса модели и применить этот же стиль к другому изображению 224*224 ?
@mormonteg4073
@mormonteg4073 Жыл бұрын
Как всё работает то понятно, но вот сама реализация... Тьма просто. До такого уровня еще долго. надо будет глянуть курс по тензорфлоу
@РоманЛ-г6ш
@РоманЛ-г6ш 3 жыл бұрын
Круто, конечно! Как я понимаю, приложение Prizma было основано на подобной сети (а может и прямо на этой?))). Один вопрос только возникает - зачем этой сети нужно еще одно измерение на подаваемых изображениях, если для положения/размера и цвета пикселя, вроде и трех достаточно?
@selfedu_rus
@selfedu_rus 3 жыл бұрын
Вы имеете в виду скрытые слои? Зачем там брать дополнительные каналы? Это нужно только для оценки степени стилизации изображения, т.к. понятие несколько абстрактное, вот и приходится применять более сложный подход (кстати, далеко не единственный, есть и другие методы оценки степени стилизации изображений).
@РоманЛ-г6ш
@РоманЛ-г6ш 3 жыл бұрын
@@selfedu_rus Нет, по этому поводу я, как ни странно, понял. Думаю, что понял) Поскольку контент - это четкое изображение, то нам достаточно выходов с одного слоя, чтобы приблизить стилизованную картинку к нему, а стиль - абстракция, поэтому нужно больше выходов, чтобы пытаться ему соответствовать при "размазывании контента". То есть нам нужно как бы сбалансировать "точную" передачу контента (и здесь этой точности добиться проще) наложением "точной стилизации" (здесь задача сложнее, поэтому "информации" нужно больше).
@РоманЛ-г6ш
@РоманЛ-г6ш 3 жыл бұрын
@@selfedu_rus мой вопрос более простого характера. Для подачи на вход сети VGG каких-либо изображений приходится добавлять дополнительную нулевую ось (делать np.expand (...axis=0)). Не могу понять, зачем у сети VGG такое требование. Просто интересно. В этом измерении можно еще какой-то параметр изображения задавать?
@selfedu_rus
@selfedu_rus 3 жыл бұрын
@@РоманЛ-г6ш а, ясно, это не то чтобы требование сети, скорее особенность реализации пакета Keras и Tensoflow. Они предполагают работу с пакетами данных (батчами), поэтому первая ось - это измерение для разных наблюдений (изображений). Если, например, подать тензор из двух изображений, то эта первая ось, как раз, и пригодится.
@РоманЛ-г6ш
@РоманЛ-г6ш 3 жыл бұрын
@@selfedu_rus точно, в стандартной ситуации пакеты же подаются, а мы по одному изображению прогоняем! Спасибо за пояснение!
@Alex-un3nz
@Alex-un3nz Жыл бұрын
в калабе ставьте Аппаратный ускоритель GPU и бедет счастье
@reklama63
@reklama63 3 жыл бұрын
А можно ли по какому-то алгоритму обучить сеть стилизации без тензорных векторов? Сделать 1000+ входных картинок (оригинал + стиль) и столько же выходных (стилизованных). Смотрю видео. До VGG16 было идеально понятно. Дальше с каждыми видео становится много загадочного. понимаю, что уровень моей математики не на столько продвинутый. ((
@wMonarch
@wMonarch 3 ай бұрын
Описать это видео можно одним словом - пиздец.
@veta_shine
@veta_shine 2 жыл бұрын
Скажите, пожалуйста, как нам сохранять навыки созданной модели? Ведь выходит, что в данном коде модель не сохраняет никаких навыков, каждый запуск изображений для нее - это чистый лист
@selfedu_rus
@selfedu_rus 2 жыл бұрын
save_weights() и load_weights() вроде такие методы для сохранения и загрузки коэффициентов модели, чтобы не обучать каждый раз заново
@fewra600
@fewra600 2 жыл бұрын
Почему, если я подаю изображение большего размера на вход сети, то НС работает медленнее, но РАБОТАЕТ? При этом она даже значения выдаёт, как это, там же только 244х244 можно подавать?
@vovaaw
@vovaaw 7 ай бұрын
Посмотри ещё раз видео в котором рассказывается об операции maxpool
@VenatoresnamIgnotis
@VenatoresnamIgnotis 3 жыл бұрын
Правильно ли я понимаю, что для каждой пары изображений нужно заново обучать сеть? Вернее сказать мы же ее не обучаем, а уменьшаем критерий ошибки ?
@selfedu_rus
@selfedu_rus 3 жыл бұрын
НС обучается на обучающей выборке, дальше она эксплуатируется на разных изображениях. Конечно, если задача меняется, скажем, обучили отличать мужчин от женщин, а собираетесь использовать для различения кошек и собак, то конечно, нужно обучать заново )
@VenatoresnamIgnotis
@VenatoresnamIgnotis 3 жыл бұрын
​@@selfedu_rus Ну т.е. в данном случае мы должны взять большое множество пар изображение-стиль чтобы обучить сеть конкретно задаче стилизации?
@vovaaw
@vovaaw 7 ай бұрын
​@@VenatoresnamIgnotisда
@albertasatryan1477
@albertasatryan1477 2 жыл бұрын
А почему функция потерь не определяется в соответствии формулы, а просто берётся среднее через reduce_mean?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
константные множители при оптимизации не имеют смысла, их можно отбросить по идее
@albertasatryan1477
@albertasatryan1477 2 жыл бұрын
@@selfedu_rus понятно, спасибо за ответ
@vanillaicecream4949
@vanillaicecream4949 3 жыл бұрын
не могу понять, почему мы в видео vgg16, после загрузки изображения преобразовывали его в массив с помощью np.array, потом только загружали в preprocess для преобразования в bgr и добавляли ось, а тут мы сразу без преобразования в массив добавляем ось и запихиваем в preprocess. Помогите пожалуйста понять
@selfedu_rus
@selfedu_rus 3 жыл бұрын
А здесь это не принципиально, мы же не классификацию делаем, а лишь используем его обученные слои для оценки степени стилизации. Другая задача и преобразование делать смысла нет.
@andrey_sautenko
@andrey_sautenko 2 жыл бұрын
Здравствуйте!Подскажите, пожалуйста, а если не использовать ноубук как Вы, а использовать Pycharm....Как загрузить изображения с компьютера, аналогично Вашим действиям?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
еще проще, используйте Image.open(путь к файлу): from PIL import Image with Image.open("hopper.jpg") as im: im.rotate(45).show()
@andrey_sautenko
@andrey_sautenko 2 жыл бұрын
@@selfedu_rus спасибо,Сергей!
@andrey_sautenko
@andrey_sautenko 2 жыл бұрын
@@selfedu_rus уже сам нашел решение)
@костябельков
@костябельков 4 жыл бұрын
Почти "Ни чего не понял, но очень интересно." хочется посмотреть на хотя бы маленькое шоу как работает НС. на не только лекцию прослушать.
@selfedu_rus
@selfedu_rus 4 жыл бұрын
под видео ссылка на программу, каждый себе может устроить маленькое шоу ))
@AcCeHu3aToP
@AcCeHu3aToP 3 жыл бұрын
А есть ли предобученные модели для изображений большего размера чем 224x224? Как это все применять на практике, если размер изображений из "реального мира" гораздо больше?
@selfedu_rus
@selfedu_rus 3 жыл бұрын
Надо уже искать в сети, или делать, обучать самому, но это непросто.
@ivanbezrukov3680
@ivanbezrukov3680 3 жыл бұрын
Здравствуйте! Решил попробовать повторить то, что делалось в уроке. Единственным исключением было то, что делал не в гугл колаб, а в анаконде, открывал изображения при помощи opencv, командой cv2.imread. Изображение открывалось сразу в формате bgr, соответственно манипуляции с rgb->bgr->rgb можно было опустить. Дошел до конца, анаконда делает одну итерацию и все. Воевал несколько часов, в итоге скопировал Ваш код, только в начале свои изображения открывал так же при помощи imread, и приводил все к rgb командой cv2.cvtColor(img, cv2.COLOR_BGR2RGB). Все равно одна итерация и все. Код - прям копия, ctrl+c, ctrl+v. Подскажите пожалуйста, с чем это может быть связано?
@selfedu_rus
@selfedu_rus 3 жыл бұрын
Ну так сложно сказать, тем более, что в Анаконде никогда не работал, не знаю ее нюансов.
@mif4222
@mif4222 3 жыл бұрын
В смысле на 1 эпохе все застревало?
@networkpy8352
@networkpy8352 3 жыл бұрын
А почему Learning Rate такой высокий? Обычно же должен быть не более 1
@selfedu_rus
@selfedu_rus 3 жыл бұрын
Мы здесь меняем значения пикселей, для этого нужен высокий шаг изменения. Это не веса связей у НС.
@networkpy8352
@networkpy8352 3 жыл бұрын
@@selfedu_rus Кстати, я тестировал 1000 итераций обучения с лр=0.02. Результаты стали намного лучше выглядеть, сохраняется детализация.
@networkpy8352
@networkpy8352 3 жыл бұрын
@@selfedu_rus Вы не делали видео по переносу сразу нескольких стилей?
@selfedu_rus
@selfedu_rus 3 жыл бұрын
@@networkpy8352 нет, только так как в видео
@ravenalbatros
@ravenalbatros 2 жыл бұрын
жесть
@Zeding_Stuff
@Zeding_Stuff Жыл бұрын
Сергей. здравствуйте. Спасибо за уроки! Учусь на 3 курсе информационной безопасности и делаю научный проект по объекту стеганографии. Если кратко, то моя задумка заключается в том. чтобы брать сообщение, которое нужно будет спрятать ("вписать") в изображение, разбить по символьно и через таблицу ascii представить в виде списка чисел от 0 до 255. Затем с помощью ГПСЧ с заданным сидом раскидать эти числа на холсте изображения в виде пикселей, и уже отталкиваясь от этих пикселей нейросеть должна генерировать какое-либо изображение (например, изображение кота). Скажите пожалуйста, какой тип НС для этого лучше подходит и слишком ли это сложная задача? Я пока только на 17 занятии, но дедлайны уже начинают гореть. В конце данного курса вы делали видео про генеративно-состязательную сеть (я очень поверхностно знаю что это), подойдут ли они для этой задачи, если на вход подавать не какой-то случайный шум, а конкретные значения символов сообщения по таблице ASCII? Подскажите, пожалуйста🙏
@artyomkolas6850
@artyomkolas6850 3 жыл бұрын
Большое спасибо за крутые видео и материалы!) Не могу пофиксить эту ошибку никак(( ValueError: Input 0 is incompatible with layer model_2: expected shape=(None, None, None, 3), found shape=(1, 224, 224, 4)
@selfedu_rus
@selfedu_rus 3 жыл бұрын
у вас последняя размерность тензора 4, а должно быть 3
@artyomkolas6850
@artyomkolas6850 3 жыл бұрын
@@selfedu_rus , спасибо, буду разбираться)
@cimoncimonoff515
@cimoncimonoff515 3 жыл бұрын
@@artyomkolas6850 если разобрались подскажите пожалуйста, никак не могу преобразовать
@artyomkolas6850
@artyomkolas6850 3 жыл бұрын
пока нет)
@fedotik827
@fedotik827 3 жыл бұрын
у меня та же проблема была, когда картинку в png формате загрузил, а оказалось что у изображения в png размерность 4, переделал ту же картинку в jpeg, у неё уже 3 было и всё заработало.
@evgenykolesenko
@evgenykolesenko 2 жыл бұрын
Спасибо за видео, но я никак не могу решить проблему: ModuleNotFoundError: No module named 'google.colab'
@selfedu_rus
@selfedu_rus 2 жыл бұрын
это все в коллаборатории гугл нужно прописывать: colab.research.google.com
@pages777
@pages777 Ай бұрын
13102024
А я думаю что за звук такой знакомый? 😂😂😂
00:15
Денис Кукояка
Рет қаралды 5 МЛН
Sigma Kid Mistake #funny #sigma
00:17
CRAZY GREAPA
Рет қаралды 8 МЛН
Don't underestimate anyone
00:47
奇軒Tricking
Рет қаралды 24 МЛН
I thought one thing and the truth is something else 😂
00:34
عائلة ابو رعد Abo Raad family
Рет қаралды 11 МЛН
Софт (VS code + ESP-IDF) для беспилотника на ESP32
16:15
Беспилотник на ESP32
Рет қаралды 3,8 М.
А я думаю что за звук такой знакомый? 😂😂😂
00:15
Денис Кукояка
Рет қаралды 5 МЛН