Как нейронная сеть раскрашивает изображения | #18 нейросети на Python

Поделиться
HTML-код
  • Опубликовано: 17 янв 2025

Комментарии • 55

  • @ghebodne2644
    @ghebodne2644 3 года назад +4

    Спасибо, всё доступно и интересно, как всегда!

  • @352556
    @352556 3 года назад +3

    Лучший видеокурс, спасибо!

  • @СарматПересветов
    @СарматПересветов 2 месяца назад

    большое спасибо за урок!

  • @ДмитрийСафронов-р2ъ

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

  • @86Blind
    @86Blind 3 года назад +3

    Как всегда на высоте !!!

  • @Vivavatnik
    @Vivavatnik 3 года назад +1

    как всегда супер!

  • @Демократия-п2е
    @Демократия-п2е 2 года назад +2

    Любезный друг selfedu, Вы могли бы разместить код на вторую нейросеть, а лучше сделать еще одно видео в этот плейлист с ее объяснением.

  • @Листик-у3о
    @Листик-у3о 10 месяцев назад +2

    Добрый вечер. Можете подсказать как мне загрузить изображения в программу PyCharm? А то она не хочет воспринимать строчку from google.colab import files

    • @YbisZX
      @YbisZX 8 месяцев назад

      colab - это библиотека для работы в Гугл Колабе, чтобы в его облако что-то загрузить с вашего компа. Если вы локально работаете, просто грузите с диска Image.open("Folder/picture.jpg"). А еще в Keras своя утилита есть: keras.utils.load_img().

    • @Листик-у3о
      @Листик-у3о 8 месяцев назад

      Большое спасибо. Разобрался я правда очень давно в этом. Даже приятно вспоминать, что когда-то у меня были таки маленькие трудности😅

  • @iKanaL4
    @iKanaL4 4 года назад +1

    Вдохновляете, спасибо!

  • @1234mifa
    @1234mifa 7 месяцев назад +1

    почему последний слой UpSampling2D? согласно вашему объяснению апсемплинг просто увеличивает площадь каждого пикселя добавляя еще три пустых пикселя(в данном примере). разве не нужно после него еще раз какуюто обработку делать?

  • @user-ffffffff
    @user-ffffffff 6 месяцев назад +1

    Не очень понятно почему у меня на выходе получается вектор другой размерности если входная картинка имеет не ровные значения.
    У меня есть небольшие отличия в нейросети но суть такая-же
    на вход подается картинка (1020, 1361) и я ожидаю такую-же размерность на выходе. Но получается на выходе (1024, 1368) это не совсем то что я ожидаю. Видимо это из-за того что некоторый значения не делятся на два. Нужно приводить к одному размеру что-ли? А потом обратно возвращать? В видео этого не заметил.
    Вот мои вектора на выходе из каждого слоя
    (1, 1020, 1361, 64)
    (1, 510, 681, 64)
    (1, 510, 681, 128)
    (1, 255, 341, 128)
    (1, 255, 341, 256)
    (1, 128, 171, 256)
    (1, 128, 171, 512)
    (1, 128, 171, 256)
    (1, 256, 342, 256)
    (1, 256, 342, 128)
    (1, 512, 684, 128)
    (1, 512, 684, 64)
    (1, 1024, 1368, 64)
    (1, 1024, 1368, 2)

  • @ФишкиОтАйтишника
    @ФишкиОтАйтишника 11 месяцев назад +1

    Здравствуйте!
    Подскажите, пожалуйста, а что означает lab[:,:,0] и lab[:,:,1:] в 21 строке кода?

  • @Anopeng
    @Anopeng 3 года назад +2

    14:59 классные котики (снизу) 😂

  • @rtu_karaidel115
    @rtu_karaidel115 Год назад +1

    Вторая сеть предназначена для опознования отдельных друг от друга объектов. Понимания и разделяя друг от друга объекты , первая раскрасочная инс получает отдельные друг от объекты , благодоря этому покраска происходит отдельно , и соответственно столь качественно.

  • @Lego_history_of_the_war
    @Lego_history_of_the_war Месяц назад +1

    Мне кажется нужно не обрезать цвет, а приравнять к максимальному.
    И ждёт ли нас разбор генеративных моделей(текста, изображений и видео(?))

    • @selfedu_rus
      @selfedu_rus  Месяц назад +1

      Это уже следующий уровень ))

  • @VenatoresnamIgnotis
    @VenatoresnamIgnotis 3 года назад +2

    files = os.listdir('files/jb')
    for file in files:
    img = Image.open(f'files/jb/{file}')
    x_train.append(img)
    x_list = []
    y_list = []
    size_list = []
    for image in x_train:
    x, y, size = processed_image(image)
    x_list.append(x)
    y_list.append(y)
    size_list.append(size)
    x_list = np.array(x_list)
    y_list = np.array(y_list)
    x_list = np.squeeze(x_list, axis=1)
    y_list = np.squeeze(y_list, axis=1)
    Вот таким образом сделал массив изображений.
    Изначально делал вашим способом, который вы указали внизу (x_train = np.array( Image.open(io.BytesIO(z.read(z.filelist[0].filename))) ))
    В этом случае при добавлении 39 изображений длина x_train почему-то оказывалась равной 960. Поэтому сделал список вручную, оказалось что model.fit не принимает такой формат, пришлось сделать np.array. Но тогда возникла другая ошибка, что у меня в массиве не 4 размерности а 5, не понял вообще откуда их 5 там взялось, но убрал одну с помощью np.squeeze. В итоге сеть стала обучаться, но я все равно не уверен что все корректно сделал
    Еще не совсем понятно зачем для конкретного экземпляра изображения используется батч (который соответствует первой размерности), он же всегда равен единице по сути дела
    UPD: проверил этот алгоритм на одном исходном изображении, работает также, как и по исходному коду урока для одного изображения, так что кому надо-пользуйтесь)

    • @coffeefoam00
      @coffeefoam00 Год назад

      Не могли бы вы скинуть более полную часть кода, я не совсем понимаю каково начальное значение x_train. Заранее благодарю)

    • @fds22231
      @fds22231 Год назад

      @@coffeefoam00 x_train = []

    • @artemka5555
      @artemka5555 Год назад

      Добрый день. У Вас случайно не осталось целого кода? Если скинете, буду очень благодарен.

  • @smokost95
    @smokost95 3 года назад +2

    Добрый день! Пытаюсь обучить первую нейронку, представленную на видео. С одной единственной фоткой получается, но она попросту запоминает результат. Подставлять другие фото нет смысла, так как под них она не заточена. Попытался скормить ей 42 изображения котиков, но учится очень долго, а результат неудовлетворительный. Есть ли смысл работать с этой моделью в таком ключе или нужна более сложная модель?

    • @selfedu_rus
      @selfedu_rus  3 года назад +2

      42 изображения простая нейросеть выучит, слишком малая выборка. Нужны десятки тысяч наблюдений (минимум). Посмотрите в сторону БД CIFAR-10 и CIFAR-1000 там большое разнообразие реальных полноцветных изображений для тренировки.

    • @smokost95
      @smokost95 3 года назад +2

      @@selfedu_rus спасибо за ответ и за наводку на базы данных. Но есть ли смысл продолжать именно с этой моделью, если даже для 42 изображений никакого результата не выходит? То есть ошибка просто стоит на месте, сколько бы времени не происходил процесс обучения. Я думаю, это из-за неоднородности обучающей выборки, она практически рандомная, если так посмотреть.
      В любом случае, даже если ничего и не получится с этим, то даже такие попытки очень сильно повлияли на моё понимание нейронок и библиотек TensorFlow/Keras. А вам отдельное спасибо за курс.

  • @coffeefoam00
    @coffeefoam00 Год назад +1

    Добрый день, не может кто-нибудь подсказать, как через функцию processed_image провести множество изображений, которые уже в гугл драйве?

  • @AcCeHu3aToP
    @AcCeHu3aToP 3 года назад +1

    Добрый день. Почему передавая изображение в функцию rgb2lab мы делим его значения на 255 "lab = rgb2lab(1.0/255*image)", а при обратной трансформации не делаем обратной операции "img2 = lab2rgb(cur)"?

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

      Насколько я помню обратно функция сама все преобразовывает как надо, т.е. умножение не требуется.

    • @YbisZX
      @YbisZX 8 месяцев назад

      @@selfedu_rus Нет, она в sRGB переводит. Это уже plt.imshow() сам распознает формат: [0.0, 1.0]float или [0, 255]int

  • @ОльгаЗавьялова-ф8ш
    @ОльгаЗавьялова-ф8ш 3 года назад +1

    Доброго! Я обучила сеть на 2000 картинках. Результат не очень, и уменьшение шага обучения уже не дает повышения точности обучения. Хочу попробовать с vgg19. Мы берем карту признаков с предпоследненго слоя? И как соединить выход из нашей сети с этой картой признаков? А после фьжн слоя, что за слои? Я прочитатла статью, но пока не поняла как сделать. Прошу помощи.

  • @СарматПересветов
    @СарматПересветов 2 месяца назад

    Что здесь не совсем понятно, это то каким образом мы из целых чисел в диапазоне от 0 до 255, путем деления на 255, а потом деления на 128 получаем диапазон чисел от -1 до 1???? как можно получить отрицательные числа?

    • @ВладиславБаранов-с2р
      @ВладиславБаранов-с2р Месяц назад +1

      речь идёт про разные переменные. Деление на 128 применяется, когда работаем с Lab, где a,b [-128;127]
      ну а при работе с RGB делим на 255 и получаем от 0 до 1 значения.

  • @Юрий-ф5я4м
    @Юрий-ф5я4м 4 года назад +2

    Спасибо дружище! Очень интересно! Только я не понял, зачем повторно раскрашивать цветное изображение? На ч/б не работает?

    • @selfedu_rus
      @selfedu_rus  4 года назад +5

      Спасибо. Здесь цветное взято с целью эксперимента: мы его сначала искусственно преобразовываем в ч/б, а затем, смотрим, что получилось на выходе и сравниваем с оригиналом. В практике, конечно, есть только ч/б, которое раскрашивается.

    • @Юрий-ф5я4м
      @Юрий-ф5я4м 4 года назад +1

      @@selfedu_rus Понял, спасибо. А такую нейронную сеть, можно запустить на локальном компьютере с видеокартой AMD? Или тут нужна карта Nvidia? Столько есть интересных нейронных сетей, но везде нужна Nvidia... Вот бы можно было бы запускать на AMD Radeon или на процессоре. У меня i5-9600K.

    • @ll2pakll
      @ll2pakll 4 года назад +1

      @@Юрий-ф5я4м пользуйся колабом

    • @ДимаОрлов-б6ч
      @ДимаОрлов-б6ч 3 года назад

      @@selfedu_rus А в какой части кода мы из цветного переводим в чб?

    • @selfedu_rus
      @selfedu_rus  3 года назад

      @@ДимаОрлов-б6ч processed_image и берем первую компоненту X

  • @danialakhmetbek6781
    @danialakhmetbek6781 4 года назад

    Привет)))))

  • @АлексейШихов-ы4в
    @АлексейШихов-ы4в 3 года назад +3

    а домашку кто сделал?

  • @aeees8
    @aeees8 3 года назад +1

    Автор урезал сеть по сравнению с оригиналом. Эта может просто запомнить цвета нескольких изображений а обобщать не может.

  • @ОлегДемин-в8я
    @ОлегДемин-в8я 3 года назад

    Чёт запарил! А нельзя это сделать онлайн, хоть бесплатно, но сердито?

  • @pages777
    @pages777 3 месяца назад

    14102024