Добрый вечер. Можете подсказать как мне загрузить изображения в программу PyCharm? А то она не хочет воспринимать строчку from google.colab import files
colab - это библиотека для работы в Гугл Колабе, чтобы в его облако что-то загрузить с вашего компа. Если вы локально работаете, просто грузите с диска Image.open("Folder/picture.jpg"). А еще в Keras своя утилита есть: keras.utils.load_img().
почему последний слой UpSampling2D? согласно вашему объяснению апсемплинг просто увеличивает площадь каждого пикселя добавляя еще три пустых пикселя(в данном примере). разве не нужно после него еще раз какуюто обработку делать?
Не очень понятно почему у меня на выходе получается вектор другой размерности если входная картинка имеет не ровные значения. У меня есть небольшие отличия в нейросети но суть такая-же на вход подается картинка (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)
Вторая сеть предназначена для опознования отдельных друг от друга объектов. Понимания и разделяя друг от друга объекты , первая раскрасочная инс получает отдельные друг от объекты , благодоря этому покраска происходит отдельно , и соответственно столь качественно.
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: проверил этот алгоритм на одном исходном изображении, работает также, как и по исходному коду урока для одного изображения, так что кому надо-пользуйтесь)
Добрый день! Пытаюсь обучить первую нейронку, представленную на видео. С одной единственной фоткой получается, но она попросту запоминает результат. Подставлять другие фото нет смысла, так как под них она не заточена. Попытался скормить ей 42 изображения котиков, но учится очень долго, а результат неудовлетворительный. Есть ли смысл работать с этой моделью в таком ключе или нужна более сложная модель?
42 изображения простая нейросеть выучит, слишком малая выборка. Нужны десятки тысяч наблюдений (минимум). Посмотрите в сторону БД CIFAR-10 и CIFAR-1000 там большое разнообразие реальных полноцветных изображений для тренировки.
@@selfedu_rus спасибо за ответ и за наводку на базы данных. Но есть ли смысл продолжать именно с этой моделью, если даже для 42 изображений никакого результата не выходит? То есть ошибка просто стоит на месте, сколько бы времени не происходил процесс обучения. Я думаю, это из-за неоднородности обучающей выборки, она практически рандомная, если так посмотреть. В любом случае, даже если ничего и не получится с этим, то даже такие попытки очень сильно повлияли на моё понимание нейронок и библиотек TensorFlow/Keras. А вам отдельное спасибо за курс.
Добрый день. Почему передавая изображение в функцию rgb2lab мы делим его значения на 255 "lab = rgb2lab(1.0/255*image)", а при обратной трансформации не делаем обратной операции "img2 = lab2rgb(cur)"?
Доброго! Я обучила сеть на 2000 картинках. Результат не очень, и уменьшение шага обучения уже не дает повышения точности обучения. Хочу попробовать с vgg19. Мы берем карту признаков с предпоследненго слоя? И как соединить выход из нашей сети с этой картой признаков? А после фьжн слоя, что за слои? Я прочитатла статью, но пока не поняла как сделать. Прошу помощи.
Что здесь не совсем понятно, это то каким образом мы из целых чисел в диапазоне от 0 до 255, путем деления на 255, а потом деления на 128 получаем диапазон чисел от -1 до 1???? как можно получить отрицательные числа?
речь идёт про разные переменные. Деление на 128 применяется, когда работаем с Lab, где a,b [-128;127] ну а при работе с RGB делим на 255 и получаем от 0 до 1 значения.
Спасибо. Здесь цветное взято с целью эксперимента: мы его сначала искусственно преобразовываем в ч/б, а затем, смотрим, что получилось на выходе и сравниваем с оригиналом. В практике, конечно, есть только ч/б, которое раскрашивается.
@@selfedu_rus Понял, спасибо. А такую нейронную сеть, можно запустить на локальном компьютере с видеокартой AMD? Или тут нужна карта Nvidia? Столько есть интересных нейронных сетей, но везде нужна Nvidia... Вот бы можно было бы запускать на AMD Radeon или на процессоре. У меня i5-9600K.
Спасибо, всё доступно и интересно, как всегда!
Лучший видеокурс, спасибо!
большое спасибо за урок!
Было бы круто, увидеть от автора еще уроки по сегментации и детекции...Автор прирожденный преподаватель..его уроки лучшие для начинающих...
Как всегда на высоте !!!
как всегда супер!
Любезный друг selfedu, Вы могли бы разместить код на вторую нейросеть, а лучше сделать еще одно видео в этот плейлист с ее объяснением.
Добрый вечер. Можете подсказать как мне загрузить изображения в программу PyCharm? А то она не хочет воспринимать строчку from google.colab import files
colab - это библиотека для работы в Гугл Колабе, чтобы в его облако что-то загрузить с вашего компа. Если вы локально работаете, просто грузите с диска Image.open("Folder/picture.jpg"). А еще в Keras своя утилита есть: keras.utils.load_img().
Большое спасибо. Разобрался я правда очень давно в этом. Даже приятно вспоминать, что когда-то у меня были таки маленькие трудности😅
Вдохновляете, спасибо!
почему последний слой UpSampling2D? согласно вашему объяснению апсемплинг просто увеличивает площадь каждого пикселя добавляя еще три пустых пикселя(в данном примере). разве не нужно после него еще раз какуюто обработку делать?
Не очень понятно почему у меня на выходе получается вектор другой размерности если входная картинка имеет не ровные значения.
У меня есть небольшие отличия в нейросети но суть такая-же
на вход подается картинка (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)
Здравствуйте!
Подскажите, пожалуйста, а что означает lab[:,:,0] и lab[:,:,1:] в 21 строке кода?
14:59 классные котики (снизу) 😂
Вторая сеть предназначена для опознования отдельных друг от друга объектов. Понимания и разделяя друг от друга объекты , первая раскрасочная инс получает отдельные друг от объекты , благодоря этому покраска происходит отдельно , и соответственно столь качественно.
Мне кажется нужно не обрезать цвет, а приравнять к максимальному.
И ждёт ли нас разбор генеративных моделей(текста, изображений и видео(?))
Это уже следующий уровень ))
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: проверил этот алгоритм на одном исходном изображении, работает также, как и по исходному коду урока для одного изображения, так что кому надо-пользуйтесь)
Не могли бы вы скинуть более полную часть кода, я не совсем понимаю каково начальное значение x_train. Заранее благодарю)
@@coffeefoam00 x_train = []
Добрый день. У Вас случайно не осталось целого кода? Если скинете, буду очень благодарен.
Добрый день! Пытаюсь обучить первую нейронку, представленную на видео. С одной единственной фоткой получается, но она попросту запоминает результат. Подставлять другие фото нет смысла, так как под них она не заточена. Попытался скормить ей 42 изображения котиков, но учится очень долго, а результат неудовлетворительный. Есть ли смысл работать с этой моделью в таком ключе или нужна более сложная модель?
42 изображения простая нейросеть выучит, слишком малая выборка. Нужны десятки тысяч наблюдений (минимум). Посмотрите в сторону БД CIFAR-10 и CIFAR-1000 там большое разнообразие реальных полноцветных изображений для тренировки.
@@selfedu_rus спасибо за ответ и за наводку на базы данных. Но есть ли смысл продолжать именно с этой моделью, если даже для 42 изображений никакого результата не выходит? То есть ошибка просто стоит на месте, сколько бы времени не происходил процесс обучения. Я думаю, это из-за неоднородности обучающей выборки, она практически рандомная, если так посмотреть.
В любом случае, даже если ничего и не получится с этим, то даже такие попытки очень сильно повлияли на моё понимание нейронок и библиотек TensorFlow/Keras. А вам отдельное спасибо за курс.
Добрый день, не может кто-нибудь подсказать, как через функцию processed_image провести множество изображений, которые уже в гугл драйве?
Добрый день. Почему передавая изображение в функцию rgb2lab мы делим его значения на 255 "lab = rgb2lab(1.0/255*image)", а при обратной трансформации не делаем обратной операции "img2 = lab2rgb(cur)"?
Насколько я помню обратно функция сама все преобразовывает как надо, т.е. умножение не требуется.
@@selfedu_rus Нет, она в sRGB переводит. Это уже plt.imshow() сам распознает формат: [0.0, 1.0]float или [0, 255]int
Доброго! Я обучила сеть на 2000 картинках. Результат не очень, и уменьшение шага обучения уже не дает повышения точности обучения. Хочу попробовать с vgg19. Мы берем карту признаков с предпоследненго слоя? И как соединить выход из нашей сети с этой картой признаков? А после фьжн слоя, что за слои? Я прочитатла статью, но пока не поняла как сделать. Прошу помощи.
Или мы просто меняем на последнем слое функцию активации?
Что здесь не совсем понятно, это то каким образом мы из целых чисел в диапазоне от 0 до 255, путем деления на 255, а потом деления на 128 получаем диапазон чисел от -1 до 1???? как можно получить отрицательные числа?
речь идёт про разные переменные. Деление на 128 применяется, когда работаем с Lab, где a,b [-128;127]
ну а при работе с RGB делим на 255 и получаем от 0 до 1 значения.
Спасибо дружище! Очень интересно! Только я не понял, зачем повторно раскрашивать цветное изображение? На ч/б не работает?
Спасибо. Здесь цветное взято с целью эксперимента: мы его сначала искусственно преобразовываем в ч/б, а затем, смотрим, что получилось на выходе и сравниваем с оригиналом. В практике, конечно, есть только ч/б, которое раскрашивается.
@@selfedu_rus Понял, спасибо. А такую нейронную сеть, можно запустить на локальном компьютере с видеокартой AMD? Или тут нужна карта Nvidia? Столько есть интересных нейронных сетей, но везде нужна Nvidia... Вот бы можно было бы запускать на AMD Radeon или на процессоре. У меня i5-9600K.
@@Юрий-ф5я4м пользуйся колабом
@@selfedu_rus А в какой части кода мы из цветного переводим в чб?
@@ДимаОрлов-б6ч processed_image и берем первую компоненту X
Привет)))))
а домашку кто сделал?
у вас получилось? а то я не справляюсь?
Автор урезал сеть по сравнению с оригиналом. Эта может просто запомнить цвета нескольких изображений а обобщать не может.
Чёт запарил! А нельзя это сделать онлайн, хоть бесплатно, но сердито?
14102024