|
Dimon146
Стаж: 17 лет 8 месяцев Сообщений: 123
|
Dimon146 ·
25-Май-18 16:05
(7 лет 4 месяца назад, ред. 25-Май-18 16:05)
CyberDain писал(а):
75405745Ошибка - нехватка памяти. Не знаю почему но на некоторых 4Гб картах не едут модели.
Да, даже 64 лучше любых других аналогов выдаёт результат. Жаль конечно, что не тянет, на близких ракурсах размыто, но перетопчемся.
|
|
oloth
 Стаж: 15 лет 7 месяцев Сообщений: 119
|
oloth ·
25-Май-18 18:03
(спустя 1 час 58 мин.)
Dimon146,
Перезагрузите компьютер, включите самый базовый интерфейс вместо AERO.
Не включайте броузеры или видеоплееры, сразу освободиться 1гб с лишним.
Я заметил простая перезагрузка драйвера видеокарты освобождает всю память, но это прокатывает, если стоит несколько ГПУ.
|
|
Dimon146
Стаж: 17 лет 8 месяцев Сообщений: 123
|
Dimon146 ·
25-Май-18 19:15
(спустя 1 час 11 мин., ред. 25-Май-18 19:15)
oloth писал(а):
75406435Dimon146,
Перезагрузите компьютер, включите самый базовый интерфейс вместо AERO.
Не включайте броузеры или видеоплееры, сразу освободиться 1гб с лишним.
Я заметил простая перезагрузка драйвера видеокарты освобождает всю память, но это прокатывает, если стоит несколько ГПУ.
Это я уже пытался. И вручную и с помощью ASUS GPU TweakII. Всё закрывал и ставил на быстродействие.
FaceSwap находит 3,72 свободными и спокойно работает, а эта ни в какую не хочет.
Сейчас попытался запустить 64 дебуг. Тоже облом, не запускается. 64 бест идет, а дебуг нет. Извлекал все лица с дебугом. Иконка с лицами и зелеными точками вылазит и всё, затык. Не прёт мне с 4-х гиговой картой.
|
|
CyberDain
Стаж: 13 лет 4 месяца Сообщений: 839
|
CyberDain ·
25-Май-18 19:49
(спустя 34 мин.)
Дебаг и не тренирует модель, он показывает какие сэмплы пойдут в тренировку.
|
|
Dimon146
Стаж: 17 лет 8 месяцев Сообщений: 123
|
Dimon146 ·
25-Май-18 20:13
(спустя 24 мин.)
CyberDain писал(а):
75406894Дебаг и не тренирует модель, он показывает какие сэмплы пойдут в тренировку.
 Блин, а я в очках и с лупой на этих микроиконках пытаюсь точки двигать...
|
|
CyberDain
Стаж: 13 лет 4 месяца Сообщений: 839
|
CyberDain ·
25-Май-18 21:15
(спустя 1 час 1 мин., ред. 25-Май-18 21:15)
наверно надо было сначала инструкцию прочитать?
Цитата:
Опция debug - позволяет посмотреть какие сэмплы генерируются на вход в нейронную сеть.
попробуй в том же setenv.bat
убрать rem со строки
SET ODFS_BATCH_SIZE=4
|
|
CyberDain
Стаж: 13 лет 4 месяца Сообщений: 839
|
CyberDain ·
25-Май-18 23:07
(спустя 1 час 52 мин., ред. 25-Май-18 23:07)
раздача обновлена фиксы
улучшено качество извлечения лиц
изменены минимальные требования видеопамяти для моделей
H128 для 4Гб запускается урезанной версией как и для 3Гб.
|
|
sanych1010
Стаж: 15 лет 2 месяца Сообщений: 32
|
sanych1010 ·
25-Май-18 23:42
(спустя 35 мин.)
а как насчет изменения nfloat c 32 на 16  где можно поменять
|
|
oloth
 Стаж: 15 лет 7 месяцев Сообщений: 119
|
oloth ·
26-Май-18 01:45
(спустя 2 часа 2 мин., ред. 26-Май-18 01:45)
Просьба не пинать, я откровенно говоря не смог разобраться как по нормальному ускорить сортировку, но всё же сделал PR на:
Код:
def sort_by_hist(input_path):
Код весьма некрасивый вышел, но сортировка файлов, когда их десятки тысяч занимала очень долгое время. В итоге, перепробовав кучу методов, просто добавил LRU перед вычислением score, стало гораздо быстрее. Я наконецто смог старое видео обработать.
Если результат устроит можно попробовать с blur такой же подход. Это два обязательных метода сортировки. До них я вообще вручную собирал наборы 
PS: Я подумал, возможно стоит сделать ручное кеширование scores с пересчётом очков при сваппинге. Я подумаю, и сделаю другой PR.
|
|
Dimon146
Стаж: 17 лет 8 месяцев Сообщений: 123
|
Dimon146 ·
26-Май-18 12:07
(спустя 10 часов, ред. 26-Май-18 12:07)
Небольшое наблюдение и вопрос.
Был взят короткий клип, разбит на 2 сотни кадров. Практически всё в одной резкости. В туже папку были закинуты пол-сотни фотографий различной насыщенности и освещенности, которые извлекалка удачно съела. После data_src sort by similar histogram.bat, волей случая, все фото оказались в конце. Не запуская blur, запустил 128. После 40 килопросчетов обратил внимание, что гоняются по кругу идентичные по параметрам скрины из видео, а фото не появляется в окне. Ждал долго, топтал "р" - не появляются. Остановил, прогнал через blur, понятно, что переименовало и кинуло в начало фото. Запустил 128 и в иконке сразу пошли фото. С нуля, не обсчитанные, когда из клипа были уже почти полностью готовые и шкала графика сразу скаканула вверх. Свойство программы или опять мои кривые руки?
|
|
CyberDain
Стаж: 13 лет 4 месяца Сообщений: 839
|
CyberDain ·
26-Май-18 13:24
(спустя 1 час 16 мин.)
хз, трейнер ест всё что извлечено в aligned
|
|
Dimon146
Стаж: 17 лет 8 месяцев Сообщений: 123
|
Dimon146 ·
26-Май-18 15:09
(спустя 1 час 45 мин.)
CyberDain писал(а):
75410132хз, трейнер ест всё что извлечено в aligned
Изменение на графике - прогон тех же файлов по blur.
|
|
CyberDain
Стаж: 13 лет 4 месяца Сообщений: 839
|
CyberDain ·
26-Май-18 15:22
(спустя 13 мин.)
если ты нашел баг - нужно шаги для его повторения. А так по словам это гадание какое-то.
|
|
oloth
 Стаж: 15 лет 7 месяцев Сообщений: 119
|
oloth ·
26-Май-18 16:55
(спустя 1 час 32 мин., ред. 26-Май-18 16:58)
CyberDain писал(а):
75408425завязывай с этим
Ясно.
Dimon146 писал(а):
75410599
CyberDain писал(а):
75410132хз, трейнер ест всё что извлечено в aligned
Изменение на графике - прогон тех же файлов по blur.
Фига себе у вас ребята loss, я не видел ничего меньше 0.3, это при полностью натренированной и чёткой сети. 70к эпох это очень много, ни 1 сеть столько не учится тут. Ваш тесак в середине показывает, что изменены наборы тренировке с центре (видимо на 35 эпохе), и что src ухудшился, проверьте вручную, можетбыть там появились левые кадры (типа нераспознанных лиц, которые вообще не лица). Если такое появилось после сортировки, значит тренер действительно не использует все пари симметрично. Я могу это лично проверить сейчас. Также --batch-size 4 в H128 ИМО очень сильно не рулит. Попробуйте лучше DF/LIAEF128YAW.
CyberDain, не могли бы Вы проверить такую штуку. Если изменить название модели MIAEF128 на любое другое, она некорректно себя ведёт, а именно результат предиктора становится инвертирован (как у негативов). Долго искал причину, причина только в имени папки.
|
|
CyberDain
Стаж: 13 лет 4 месяца Сообщений: 839
|
CyberDain ·
26-Май-18 17:29
(спустя 34 мин., ред. 26-Май-18 17:29)
Цитата:
70к эпох это очень много
почему это? вот азиатские лица 118к эпох https://github.com/iperov/OpenDeepFaceSwap/raw/master/doc/H128_Asian_1.jpg
по графику можно было бы и еще
oloth писал(а):
не могли бы Вы проверить, это 100% информация, если изменить название модели MIAEF128 на любое другое, она некорректно себя ведёт, а именно результат становится инвертирован (как негативы). Долго искал причину, причина только в имени папки.
че за бред?
--
действительно баг, спасибо за инфу Dimon146
Сейчас половина фейсов пропускается. В итоге половина фейсов неизвестна модели.
|
|
oloth
 Стаж: 15 лет 7 месяцев Сообщений: 119
|
oloth ·
26-Май-18 17:34
(спустя 4 мин., ред. 26-Май-18 17:40)
Цитата:
действительно баг, спасибо за инфу Dimon146
Сейчас половина фейсов пропускается. В итоге половина фейсов неизвестна модели.
Спасибо за работу и за фиксы!
Совершенно отчётливо видно место "разрыва" тренировки, после сортировки by blur. Сделал у себя тоже самое, и на графике скачёк наверх.
PS: Не обращайте внимание на тренинг сет, я тестирую всё подряд во всё подряд, чтобы настроить Dense и Encoder.
Действительно присутствует такая штука с привязкой к названию папки.
Но мы не в претензию к Вам. На самом деле я просто модели тестирую.
Я не сделал ни одного фейс свапа и не планирую:)
|
|
CyberDain
Стаж: 13 лет 4 месяца Сообщений: 839
|
CyberDain ·
26-Май-18 17:39
(спустя 4 мин.)
раздача обновлена фикс серьезного бага с которым модель не учила половину лиц
|
|
oloth
 Стаж: 15 лет 7 месяцев Сообщений: 119
|
oloth ·
26-Май-18 17:47
(спустя 8 мин.)
CyberDain,
Ещё раз спасибо за фикс. Смотрите, что я предлагаю: https://github.com/titu1994/Image-Super-Resolution
Вот здесь взять самый простой sr алгоритм, вся сеть по моему длинной в 4-5 строк. Достаточно быстрый чтобы тренировать его параллельно на CPU. И тренировать его на src и dst в онлайне. Затем просто матрицы перед наложением в конвертере им растягивать в 512x512. Можно даже лица изначально хранить в таком же разрешении.
|
|
CyberDain
Стаж: 13 лет 4 месяца Сообщений: 839
|
CyberDain ·
26-Май-18 18:27
(спустя 40 мин., ред. 26-Май-18 18:27)
на CPU тренить исключено, во первых это в 40 раз медленнее, во вторых он и так занят подготовкой сэмплов.
А на гпу памяти нет.
Просто когда увеличится память для гпу, увеличатся и размеры слоёв с которыми качество и так улучшится =)
Но твою теорию поидее можно проверить на H64х64 увеличенной суперресом до 128 и сравнить с H128
и как там? просто она урезана адско для 3-4Гб. Скорее всего ничего путного не получится =( потому что она даже не урезанная не хватает ей мощности для нормального разрешения.
-
вообще все ограничения моделей из-за тренировки маски, она жрет существенную часть памяти.
Маску можно было бы не тренировать, если бы был распознаватель лицевых точек хотя бы на 256, а он на 64, да и тот не идеален, но он лучший из всех аналогов. Я его кстати портировал изначально из pytorch, это был мой первый вклад в faceswap репо =) Когда появится распознаватель точек на 256 неизвестно. Для этого нужно где-то брать базу лиц с проставленными вручную точками, хотя бы тысяч 100, а затем тренировать неделями нейронку которая будет весить больше гига.
Вощем пока усредненная предсказанная маска лучше всего, что мы имеем.
Вощем всё дико урезано, даже 6Гб памяти это очень мало. Вся эта область находится в самом начале пути развития. oloth ты кстати с матаном дружишь? Потому что я двоечник по матану =)) многие pdf из arxiv по части нейронок не понятны из-за формул, а там стабильно выходят результаты новых исследований.
|
|
oloth
 Стаж: 15 лет 7 месяцев Сообщений: 119
|
oloth ·
26-Май-18 18:40
(спустя 13 мин., ред. 26-Май-18 18:41)
CyberDain писал(а):
75411558Но твою теорию поидее можно проверить на H64х64 увеличенной суперресом до 128 и сравнить с H128
Давайте проверим пожалуйста, когда у Вас будет время. Дело пойдет - адаптируем. Главное же он может выдавать upscale хоть x8. Суперрес не очень активно использует оперативку, к тому же алгоритм там рассчитан на картинки под 6к, а у нас 256 исходники, для него это мелочь. Он учит только кусочки из которых сделано изображение, а не запоминает лица целиком, как
autoencoder. Я даже не уверен, что там есть Dense.
Dimon146, могу посоветовать поменять некоторые слои на:
Код:
def conv_sep2(keras, input_tensor, filters, kernel_size=5, strides=2, **kwargs):
x = input_tensor
x = keras.layers.convolutional.SeparableConv2D(filters, kernel_size=kernel_size, strides=2, kernel_initializer=keras.initializers.RandomNormal(0, 0.02), use_bias=False, padding="same")(x)
x = keras.layers.core.Activation("relu")(x)
return x
и повысить размерность у себя обратно до 4ГБ модели. Я постоянно так делаю, когда не могу запихнуть в память достаточную размерность свёртки.
CyberDain говорит, что качество SeparableConv2D очень хреновое, у меня зрение не очень, вот расскажите нам об ощущениях.
|
|
CyberDain
Стаж: 13 лет 4 месяца Сообщений: 839
|
CyberDain ·
26-Май-18 18:40
(спустя 5 сек.)
Так Conv это и есть Dense, только по локальным фичам изображения размером с kernel_size
Т.е. если Conv сделать kernel_size = 64 по изображению 64, то это будет равносильно обычному Dense
kernel_size = 1 - ищет однопиксельные фичи без учета соседних
kernel_size = 3 - ищет фичи с учетом 1 соседних пикселей, такой размер стоит сейчас во всех моделях.
если поставить 5 - выжрет еще больше памяти. Возможно с ним будет лучше качество. Так что суперрес он как раз должен изучать фичи на основе которых добавлять пиксели. А dense в autoencoder который после flatten это чтобы изучить N-размерное представление лица. Причем если тренить только одно лицо на один декодер, то это представление нифига не будет означать ни поворотов лица, ни направление глаз итд итп.
Оно таким становится именно при тренировке 2х лиц на одном энкодере, т.е. N представление учится означать общие фичи двух лиц, а декодер начинает учиться чтобы представлять лицо из этого N представления =)
|
|
Dimon146
Стаж: 17 лет 8 месяцев Сообщений: 123
|
Dimon146 ·
26-Май-18 18:42
(спустя 1 мин.)
CyberDain писал(а):
и как там? просто она урезана адско для 3-4Гб. Скорее всего ничего путного не получится =( потому что она даже не урезанная не хватает ей мощности для нормального разрешения.
Супер. С 64 ни в какое сравнение по разрешению. Запас свободной памяти позволяет и прогу гонять и одновременно смотреть фильмы он-лайн, без разгона твипиком. Правда только 480р, при 720 и выше через пару минут в фильме начинается срыв по горизонтали, а еще через пару вылет питона.
Улыбнуло, что прога распознает морды животных, светлые щенки и японские обезьяны(!), остальное не пробовал. Кино про тёщу и её родню что ли сделать...
|
|
oloth
 Стаж: 15 лет 7 месяцев Сообщений: 119
|
oloth ·
26-Май-18 18:48
(спустя 5 мин., ред. 26-Май-18 18:54)
CyberDain писал(а):
75411750Так Conv это и есть Dense, только по локальным фичам изображения размером с kernel_size
Т.е. если Conv сделать kernel_size = 64 по изображению 64, то это будет равносильно обычному Dense
kernel_size = 1 - ищет однопиксельные фичи без учета соседних
kernel_size = 3 - ищет фичи с учетом 1 соседних пикселей, такой размер стоит сейчас во всех моделях.
если поставить 5 - выжрет еще больше памяти. Возможно с ним будет лучше качество. Так что суперрес он как раз должен изучать фичи на основе которых добавлять пиксели.
Насколько я вижу у Вас в nnlib, везде стоит окно в 5 пикселей. Откровенно я плохо понимаю теорию.
Суперрес не должен уметь восстанавливать объекты, он только восстанавливает кусочки изображения
на основе знакомых ему данных. Т.е. он скорее всего не знает связей между соседними окнами свёртки,
иначе ему бы понадобились терабайты памяти. Возьмите NNEDI3, у него гдето 300мб весит NN,
он работает во всех фильмах, я сомневаюсь, чтобы он знал столько объектов, скорее всего максимум матрицы
4x4.
Я тут не пытаюсь спорить, мне реально интересно, что получиться. И также авторс сам говорит, что самый просто sr можно легко пустить
на CPU. Просто тренировать параллельно с тренингом модели. Он же по сути не должен быть в синке с общим тренингом, у него свой loss.
|
|
sanych1010
Стаж: 15 лет 2 месяца Сообщений: 32
|
sanych1010 ·
26-Май-18 18:51
(спустя 3 мин.)
а есть что нибудь для Titan V тензор коры или возможность увеличить батч размер?
|
|
Dimon146
Стаж: 17 лет 8 месяцев Сообщений: 123
|
Dimon146 ·
26-Май-18 18:55
(спустя 4 мин., ред. 26-Май-18 18:55)
oloth писал(а):
Dimon146, могу посоветовать поменять некоторые слои на:
Код:
def conv_sep2(keras, input_tensor, filters, kernel_size=5, strides=2, **kwargs):
x = input_tensor
x = keras.layers.convolutional.SeparableConv2D(filters, kernel_size=kernel_size, strides=2, kernel_initializer=keras.initializers.RandomNormal(0, 0.02), use_bias=False, padding="same")(x)
x = keras.layers.core.Activation("relu")(x)
return x
и повысить размерность у себя обратно до 4ГБ модели. Я постоянно так делаю, когда не могу запихнуть в память достаточную размерность свёртки.

Издеваемся, да? 
Я из всего вышенаписанного понял только "Димон".
|
|
oloth
 Стаж: 15 лет 7 месяцев Сообщений: 119
|
oloth ·
26-Май-18 18:58
(спустя 3 мин.)
Dimon146, там в H128 в энкодере использует conv(...) из nnlib, можно вместо неё поставить conv_sep2(...), с теми же параметрами на все слои, кроме первого. Можно будет запихнуть размерность гораздо больше, вернувшись к исходной 5ГБ модели. На счёт качества - заодно и проверите. relu хуже чем LeakyReLU, но также быстрее и меньше оперативки ест. Я могу ошибаться, но relu это по моему:
|
|
Dimon146
Стаж: 17 лет 8 месяцев Сообщений: 123
|
Dimon146 ·
26-Май-18 19:22
(спустя 23 мин., ред. 26-Май-18 19:22)
oloth писал(а):
75411848Dimon146, там в H128 в энкодере использует conv(...) из nnlib, можно вместо неё поставить conv_sep2(...), с теми же параметрами на все слои, кроме первого. Можно будет запихнуть размерность гораздо больше, вернувшись к исходной 5ГБ модели. На счёт качества - заодно и проверите. relu хуже чем LeakyReLU, но также быстрее и меньше оперативки ест. Я могу ошибаться, но relu это по моему:
 Гм... всёж, поясню, - я в школе учился пользоваться арифмометром, механическим. И с двумя мешочками ходил, в одном обувь подменка, в другом, чтоб в портфель не натекло, чернильница, осилок, и ручка с запасными перьями. Затем логарифмическая линейка. В Вузе у меня был калькулятор с зелеными лампочками, работающий от 220 вольт.
Я с удовольствием готов поменять, если мне нарисовать где, что и на что. 
И "исходной 5ГБ модели" мне не надо, у меня 1050 4 гига.
|
|
CyberDain
Стаж: 13 лет 4 месяца Сообщений: 839
|
CyberDain ·
26-Май-18 19:32
(спустя 10 мин.)
oloth писал(а):
Насколько я вижу у Вас в nnlib, везде стоит окно в 5 пикселей. Откровенно я плохо понимаю теорию.
Суперрес не должен уметь восстанавливать объекты, он только восстанавливает кусочки изображения
на основе знакомых ему данных. Т.е. он скорее всего не знает связей между соседними окнами свёртки,
иначе ему бы понадобились терабайты памяти
да ошибся, стоит 5 на энкодере и 3 на декодере.
как это не знает? в том и смысл свертки, чтобы на основе контента формировать новый контент.
Для фильмов наверняка тренирована на фильмовых сценах.
|
|
sanych1010
Стаж: 15 лет 2 месяца Сообщений: 32
|
sanych1010 ·
26-Май-18 19:32
(спустя 17 сек.)
а как можно увеличить память?
|
|
CyberDain
Стаж: 13 лет 4 месяца Сообщений: 839
|
CyberDain ·
26-Май-18 19:37
(спустя 5 мин., ред. 26-Май-18 19:37)
sanych1010 у тебя всё идеально.
Только насчёт 9к dst изображений не уверен. Я не проверял еще длинные 5 мин фейки. Как видно даже 12 гб это только чтобы нормально тренировать H128 =))
|
|
|