- 22
- 118 064
КрасноТех
Приєднався 26 жов 2022
Пишем программы и обучаем нейронки
Как найти решение задачи по ее описанию? Градиентный спуск: Теория и Практика на Tensorflow
Градиентный спуск - основа всех алгоритмов по обучению нейросетей. Рассмотрим, почему он работает именно так, как найти градиент, как понимать функцию ошибки и т.д.
Переглядів: 617
Відео
Робот на защите от Сорняков! Огородник-2 - умный робот на 3D принтере с камерой и wifi
Переглядів 19 тис.2 місяці тому
Год назад был создан огородник-1, но пришло время разработать вторую версию, исправить недочеты и познакомиться с новыми методами разработки и конструирования... Репозиторий проекта: github.com/krasnoteh/O-2
Быстрый Object Detection. Разбор и реализация Faster RCNN на tensorflow
Переглядів 1,4 тис.9 місяців тому
Реализуем нейросеть архитектуры Faster RCNN, а также разбираем как она работает. GitHub: github.com/krasnoteh/AI-experiments/tree/main/object detection part 3 (Faster RCNN) Модели: drive.google.com/drive/folders/1YLSMzz8QSbzBkfJzPfKTxuieU-VTs-hy?usp=sharing (скоро будет и на hugging face) Статья: Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks Shaoqing Ren, Kaimin...
Сделал нейросеть Генератор картинок по тексту. Можете попробовать ее! Часть 2
Переглядів 1,5 тис.10 місяців тому
Модели: drive.google.com/drive/folders/14KW9gPeGhF7w4FClD9xhFskzhhqRpUYm?usp=sharing GitHub: github.com/krasnoteh/AI-experiments/tree/main/Text To Image part two Бот: t.me/krasnoteh_diffusion_bot
Увеличиваем картинки. Сделал Diffusion Super Resolution нейросеть в Tensorflow
Переглядів 74210 місяців тому
GitHub: github.com/krasnoteh/AI-experiments/tree/main/SuperResolution Модели: drive.google.com/drive/folders/1XKef8FoypyZPmyJ9VeN0gJ71WUYzYzG7?usp=sharing
Прокачал свой Vs code Российской Нейронкой) Работаем с языковыми моделями через API
Переглядів 1,2 тис.10 місяців тому
Многие простые процессы можно автоматизировать используя языковые модели. Тут я показываю, как работать с одной из них через Python, javascript и другие языки, в которых можно работать с HTTPS протоколом. GitHub: github.com/krasnoteh/vscode-ai Найти расширение в vs code: vs-code-ai #gigachat #llm #нейросеть #vscode
VQ-GAN: нейросеть, давшая начало всем Dalle и Stable Diffusion. Разбираем принцип и делаем сами.
Переглядів 90911 місяців тому
Код из видео: github.com/krasnoteh/AI-experiments/tree/main/Autoencoders part 2 (VQ-GAN) Большой vqgan: drive.google.com/drive/folders/1t_-Av8kwWTRJSvBRj98tJN7AOCje06vF?usp=sharing #нейросеть #vqgan #tensorflow
Реализовал Text to Image нейросеть с нуля на Tensorflow! Направленная дифузия.
Переглядів 1,2 тис.Рік тому
GitHub: github.com/krasnoteh/AI-experiments/tree/main/Text To Image Неросеть большевата для гитхаба, есть на гугл-драйве: drive.google.com/file/d/1sNmlcYDpdqPTVdl3k7y2f3Mq7tRkdAsi/view?usp=sharing drive.google.com/file/d/11qlooMS4LCfPLa6_1t2rC1MyL3MDPq8b/view?usp=sharing Почитать: keras.io/examples/generative/ddim/ keras.io/examples/generative/ddpm/ arxiv.org/pdf/2105.05233v4.pdf Бот: t.me/kras...
Нейросеть для сжатия данных. Автоэнкодеры: объяснение и реализация на tensorflow.
Переглядів 1,4 тис.Рік тому
В этом видео разберем архитектуру автоэнкодеров, реализуем три разных нейронки: Fully-connected autoencoder Autoencoder "local compressor" Res-net autoencoder Git hub с кодом из видео: github.com/krasnoteh/AI-experiments/tree/main/Autoencoders part 1
Сделал свой Stable Diffusion с нуля на Tensorflow. Это проще, чем кажется.
Переглядів 3,1 тис.Рік тому
В этом видео реализуем генеративную нейросеть, работающую на том же принципе, что и популярный Stable Diffusion на Tensorflow. GitHub: github.com/krasnoteh/AI-experiments/tree/main/Diffusion for images Статья от Keras, некоторые элементы кода брал оттуда: keras.io/examples/generative/ddim/ Upscaler: www.iloveimg.com/upscale-image
сделал Нейросеть, обращающую время вспять! Диффузионные модели на Tensorflow.
Переглядів 958Рік тому
Делаем модели прямой о обратной диффузии, погружаемся в теорию энтропии и вероятностей (чуть-чуть) и смотрим завораживающие анимации обратной диффузии, которые мы сделали своими руками. GitHub: github.com/krasnoteh/AI-experiments/tree/main/Diffusion for points
Я сделал Object Detection с нуля. Он работает. Tensorflow. часть 2
Переглядів 3,8 тис.Рік тому
GitHub: github.com/krasnoteh/AI-experiments/tree/main/object detection part two
Давайте реализуем Object Detection. С нуля, в коде, на своих данных,Tensorflow.
Переглядів 8 тис.Рік тому
Тут мы не будем дообучать предобученные модели, а сами сделаем простую keras нейросеть и реализуем object detection на tensorflow. GitHub: github.com/krasnoteh/AI-experiments
Гайд: Denoising нейросеть своими руками на Tensorflow. Работает с картинками ЛЮБОГО размера
Переглядів 666Рік тому
делаем Denoising unet нейросеть с нуля. github: github.com/krasnoteh/AI-experiments/blob/main/Denoising unet.ipynb
Сделал свою нейросеть для раскрашивания старых фильмов! Unet на Tensorflow
Переглядів 868Рік тому
В этом видео познакомимся с архитектурой unet и создадим небольшую нейросеть для превращения черно-белых картинок в цветные
Делаем Генератор изображений с нуля! Генеративно-состязательная нейросеть на Tensorflow
Переглядів 5 тис.Рік тому
Делаем Генератор изображений с нуля! Генеративно-состязательная нейросеть на Tensorflow
Нейросети для изображений на Tensorflow. Классификация, перенос обучения, fine-tunung.
Переглядів 2,3 тис.Рік тому
Нейросети для изображений на Tensorflow. Классификация, перенос обучения, fine-tunung.
Это база. Как создать простую нейросеть на Tensorflow и Keras
Переглядів 3,9 тис.Рік тому
Это база. Как создать простую нейросеть на Tensorflow и Keras
как установить Tensorflow для работы с GPU. jupyter notebook. conda.
Переглядів 7 тис.Рік тому
как установить Tensorflow для работы с GPU. jupyter notebook. conda.
Новый проект - Многофункциональный робот огородник. Часть 1: Корпус, моделирование, 3D печать.
Переглядів 503Рік тому
Новый проект - Многофункциональный робот огородник. Часть 1: Корпус, моделирование, 3D печать.
Как обучить Object Detection Нейросеть на своем наборе данных. Гайд от начала и до конца.
Переглядів 54 тис.2 роки тому
Как обучить Object Detection Нейросеть на своем наборе данных. Гайд от начала и до конца.
Крутая Светодиодная лампа с датчиком движения Своими руками за 400 рублей
Переглядів 4452 роки тому
Крутая Светодиодная лампа с датчиком движения Своими руками за 400 рублей
не работает, делаю как по пайплайну и выдает ошибки в готовом коде
Привет, расскажи, пожалуйста, как собрать после завершения обучения модель, для дальнейшего использования в проектах. Очень нужная была бы информация
Спасибо за то, что ты делаешь ❤ очень помогаешь!!!! Продолжай в том же духе
Спасибо огромное❤❤ спаситель
Dropout нужен не для стабильность, а как раз наоборот вносит немного хаоса в процесс обучения сети, чтобы избежать переобучения, блокируя для предыдущем слое определенные нейроны, чтобы их задачи выполняли другие нейроны
Dropout выполняет довольно смешанную функцию, в том числе стабилизирующую. Если его нет, нейросеть может начать использовать только один нейрон как какой-то важный признак и веса вокруг него могут быстро начать расти. В gan ландшафт функции ошибки постоянно меняется для обоих нейросетей и могут возникать самые разные конфигурации, которые (если не повезет) могут за несколько шагов сломать весь процесс, веса улетят в бесконечность и назад не вернуться. Dropout в том числе предохраняет от такого, хотя не является сильным и основным стабилизатором процесса.
Краснотех, а как в керасе специализируются ядра свертки? Ты говоришь, что одни ядра уголки определяют, а другие - линии. Но ведь ты не указываешь, за что каждое ядро отвечает. Как получается тогда специализация каждого канала на поиске отдельных закономерностей? Как ядра работают? Они просто суммируют под собой все числа из реальной картинки? И устойчива ли сверточная сеть к переворотам картинки? Разный угол наклона? Если да, то как удается распознавать одинаковые закономерности в перевернутых изображениях?
специализация ядра определяется в процессе обучения путем адаптации к данным и минимизации ошибки. Никак вручную они не настраиваются. Ядро работает так: например есть ядро 3 на 3. Параметры ядра - числа в этой матрице из 9 элементов. При анализе части картинки сначала 9 пикселей картинки умножаются на соответствующие числа, затем все суммируется и применяется функция нелинейности (активация). Эта операция проделывается для всех квадратов из 9 пикселей на картинка, ядро как-бы сканирует всю картинку собой. На втором слое выход этого ядра считается картинкой и т.д. Так можно описать очень сложные паттерны. К переворотам картинки такая система сама по себе не устойчива, нужно добавлять в обучающие данные перевернутые картинки, чтобы она также адаптировалась к ним. Также с поворотами на разные углы.
Интересные у вас видео про нейросети... Скажите, а на каком компе вы работаете, какой процессор, сколько оперативки?
Ноут просто, asus, лет 5 ему, средней ценовой категории, оператива 32 гб, проц ryzen radeon, gpu gtx 1650
Информативность и подача материала отличная, анимация в видео с каждым роликом все лучше и лучше!
Пркатическое применение с изменением углов в графе подскажите пожалуйста. Интересная задача, но где и для чего ее применить. Спасибо!
Ну это только пример, можно адаптировать под свои задачи. Например мы делам программу, в которой пользователь от руки рисует какую-то фигуру, например прямоугольник. Алгоритмом находим его углы и делаем их вершинами, чтобы выровнять используем этот алгоритм. Кажется, в corel draw что-то похожее было.
Очень хорошо объяснил спасибо
это очень хороший видеоролик: информация, графика - все на уровне! ты замотивировал меня сдуть пыль с моего старого проекта (писал свою версию такотрона2 для курсачча) и продолжить изучение нейронок и соответственно разработку проекта. жду еще видеороликов на подобные темы, которые объясняют самую базу. спасибо !
Честно говоря, пока только начинаю в этой теме разбираться, но вроде всё так. Видео отличное
Очень сильно! Ролики с каждым разом все круче! Больше спасибо!
Спасибо. Давай еще.
Краснотех, у тебя ошибка. На 4:46 ты говоришь, что стоит задача 2-ая - как сильнее двигаться на более крутых склонах. Наоборот, чем склон круче, т.е. чем сильнее ошибка минимизируется при малейшем изменении параметров, тем меньший шаг мы должны делать, а не сильнее двигаться. А вот при плоских склонах как раз-таки нужно побольше шаги делать. И да, ты не ответил на этот вопрос. У тебя константный выбор шага изменения параметров, т.е. ты всегда двигаешься с одинаковой скоростью. И я вот не могу понять, объясни. Пусть у нас 2 параметра. Их значение 15 и 20. Шаг прироста 1. Чтобы вычислить градиент, мы должны сделать их 16 и 21 и высчитать ошибку, верно? А дальше? Если ошибка оказалась меньше, чем при 15 и 20, значит на 1 увеличиваем оба параметра? А что если лучше было бы лишь 1 параметр увеличить, .е. 15 на 16, а 20 не изменять? Или градиентный спуск сможет это понять? С 1 переменной логика понятна, но с 2-мя - не понимаю.
Так он же сказал, что мы должны искать именно вектор к наилучшему решению из текущей позиции. То есть ты сначала замеряешь, что будет при изменении a на дельту, выбираешь лучшее изменение (то есть -1, 0 или +1), потом по b делаешь то же самое. Делаешь шаг и повторяешь процедуру, пока по обоим переменным изменение не будет 0. И ты правильно пишешь, что стоит изменять шаг при разных ситуациях и это уже будет считаться оптимизацией. То есть в зависимости от изменения loss относительно предыдущего шага мы может изменять дельту шага.
1. Нет, мы должны быстрее двигаться на более крутых склонах. Это точно правильно, посмотрите еще раз анимацию спуска, которая сразу после кода. Там значения взяты из того, что выдал тензорфлоу спуск, т.е. его не я написал, и он как раз двигается сильнее на более крутом склоне. Тут логика такая: Если склон крутой, то мы еще где-то далеко от ответа и надо двигаться быстрее. Если очень пологий, почти плато, то нужно двигаться на очень маленький шаг, ответ уже рядом и нужно отсюда не "улететь". 2. Вот эта подстановка чисел - это скорее про первый алгоритм поиск восхождением, он бы по честному проверял все 8 вариантов (какой изменять и куда). Градиентный спуск ничего не проверяет (я думал, это сказано достаточно явно, но видимо нужно было еще сильнее). Он использует производную функции, которая вычисляется где-то автоматически и по ней сразу понимает направление. Т.е. если там хоть 1000 параметров измерение он проводит одно, далее проводит одно измерение производной для каждого параметра (эти процессы на оптимизируются и данные проходят через нейросеть всего один раз) и мы сразу получаем численное значение ошибки и градиент.
@@КрасноТех Я имею ввиду, после рассчета вектора градиента, как правильно изменить веса? Судя по тому, как мне ответили - делаем это по знаку каждой частной производной. Если мы получили скажем такой вектор [-5, +3, -3], то мы должны 1 параметр уменьшить на минимальный шаг, второй увеличить, а третий - уменьшить. Я правильно понимаю? Ты просто этот момент не раскрыл с наглядными примерами, как мне показалось. Еще вопрос, ты шаришь за обратное распространение ошибки? Интересно было бы увидеть видос на эту тему, как никак самый главный инструмент для обучения многослойных сетей.
@@bunasha Просто прибавить вектор градиента к весам умноженный на learning rate, например, веса [10, 20, 30], градиент [1, -2, 0.5], lr = 0.1, тогда новые веса [10 + 0.1, 20 - 0.2, 30 + 0.05]. Обратное распространение это просто способ найти градиент, он сам считает производные по каждому параметру применяя формулу производной сложной функции много раз.
Круть. Все понятно. Это было у нас на теории эксперемента в институте. Только тогда питона небыло 😂😂😂. А что делать если есть 2 вершины.например график функции увеличивается, наступает локальный максимум потом уменьшается. Получается обучение застрянет на этом локальном максимуме, но дальше функция какое то время уменьшается, а потом опять увеличивается. И второй максимум например выше чем прошедший первый. Как убедится что мы нашли самый максимальный максимум за всю функцию, а не локальный?
Никак) Градиентный спуск находит именно локальный минимум, но с увеличением числа параметров появляются довольно интересные эффекты, из-за которых нам становится довольно все-равно на это. Может будет об этом еще отдельный ролик, но если вкратце: если у нас функция одной переменной, то мы по ней можем двигаться только "влево" и "вправо" и попадаем в минимум очень быстро. Если переменных две, то мы уже можем "огибать" некоторые возвышенности, перемещаясь по более сложной траектории. Когда мы попадаем в минимум, производная по всем производным становится нулем, а вокруг функция только возрастает. Так вот с увеличением количества параметров вероятность того, что по всем из них больше некуда двигаться уменьшается. Если у нас функция от миллиарда параметров, то надо еще очень постараться, чтобы найти хотя-бы локальный минимум. При этом в функции появляется огромное количество почти равнозначных минимумов, и мы просто будем идти в какой-то из них.
@КрасноТех спасибо за ответ!
Ничего не понятно, но очень интересно. Огромное спасибо за ролик!
Ну наконец то видево, ты не пропадай там
Во-во
А я напомню, что анонсы роликов и что-то о текущих проектах иногда появляются в мое тг канале t.me/krasnoteh_ai
И где ссылка на видео по установке и настройке анаконды?
Вместо анаконды можно миниконду юзать Как я понял это версия без интерфейса и весит не много
Есть одно НО, количество эпох в данном случае не влияет на точность. Есть такое понятие как переобучение модели, слышал такое? Нужно увеличить датасет и разнообразить его. И достаточно даже 30 эпох для обучения.
Пацан перевел урок другого автора и скомпилировал в 24 минуты. Понятно что щас лучше для подобных целей использовать YOLO модели, они оптимизирование, быстрее обучаются, более точны. Встроенные методы для аугментации маленького датасета, удобные графики и методы позволяют решить все твои проблемы с маленьким датасетом и переобучением - щас не проблема.
@@Readidno То что он перевёл, не знал, меняет всё.
Видео супер!
Как можно с вами связаться?
Красавчек!
Круто вышло
Спасибо, за подробный урок! Успехов !
Плейбой, филантроп, миллиардер, премного благодарствую!!!!!!
Не нашла способа написать тебе в ТГ, чтобы ответить на вопрос с колесом, поэтому придется текстом :) Для крепления свободных колес вместо шпильки или болта предлагаю следующий вариант: ось колеса будет частью корпуса и представлять собой цилиндр, соответствующий внутреннему диаметру шарикового подшипника 6204 ZZ (можно и RR или его аналога, который более доступен) - 40 мм. Подшипник устанавливается на ось, а сам подшипник запрессовывается в колесо, что минимизирует конический зазор между колесом и корпусом робота. Этот зазор необходим для удаления загрязнений, которые неизбежно будут попадать в процессе эксплуатации робота. Отсутствие зазора может привести к трению и повреждению корпуса. Ну и логично что колесо не касается корпуса, имея контакт с роботом только через подшипник. За счет такой конструкции не будет никаких вертикальных точек качения и трения через болт, нагрузка будет распределятся более равномерно. Тут есть место деталям улучшения конструкции, но описывать возможный чертеж текстом - такая себе забава :)
Так вроде оно у меня так сейчас и есть, только еще болт для крепления в центре. Я уже придумал несколько неплохих вариантов, в целом очень на ваш похоже.
@@КрасноТех Ну не совсем, в Вашем варианте подшипник запрессован в ось корпуса, а колесо во внутренний диаметр подшипника, создавая другое пятно касания и другой тип нагрузки совершенно. Я бы начертила, но Ютуб не даст ссылку выложить или изображение :(
Очень круто, спасибо! А какой у тебя проц?)
МОЛОДЕЦ! Хороший результат! И всёравно ты можешь намного больше и лучше -только не останавливайся не смотря ни на что! Верим в тебя! Ждем новых успехов!
Тема умности робота не раскрыта, навигация/анализ, удаление сорняка, эффективность и прочее. Зачем вентиляция на корпусе, песок/земля/пыль на платах?
а не хочешь использовать гсм модем для связи, платформу сделать из металлопрофиля побольше 50 на 80 например. Написать простенький автопилот с корректировкой по гсм так же и пустить вторичный поток для логирования работы. Нейронку по сорнякам и вместо выдергивания, через редуктор тросик по низу кинуть, чтобы была типо косилка. И колёса самый подходящий вариант, просто кажется будет лучше если увеличить площадь сцепления. Ещё кстати я делал протектор из велокамеры, просто отрезаешь по длине своей окружности, в натяжку сплавляешь, ровняешь и протектор из кусков резины, так же просто приплавлял. Вполне себе надёжно было. Потом карту маршрута задавать и по логам можно строить карту плодородия или засорённости и в дальнейшем использовать для анализа и прогнозирования. а вообще кстати говоря в рамках огорода, можно не париться с механическим удалением, можно по детекции определять вид сорняков и дифференцированно использовать подходящие гербициды, ёмкости в 1 литр думаю хватит на прилично. кароче идей много тут, найти бы время и деньги на реализацию
Лазером можно точечно испепелять сорняки. Шасси сделать на двух ногах, это повысит проходимость.
Круто! Вопрос: стекло перед камерой и светодиодом не даёт засвета на камеру, когда диод включен?
Дает, надо разделять, уже понял)
Чел, ты крут !
Свободно вращающиеся колёса надо делать на полностью неподвижной оси. Т.е. торчат 2 рога в стороны, на них надеваются колёса. При этом там в колёсах надо предусмотреть центральные отверстия большего диаметра чем диаметр оси и туда вставляются втулки, изнашиваться будут эти втулки а не колёса полностью. Соответственно они будут маленькими и недорогими расходниками, которые при желании могут изготавливаться из пропитанного маслом и спрессованного дерева на токарном станке или просто дрели. Что обеспечит бОльшую долговечность чем у пластика. Внутри рогов - или резьба, или просто отверстия, т.е. колёса надеваются на трубки, чтобы не слетали - фиксируются дюбелем, вставленным в трубку и саморезом с надетой шайбочкой, которая упрётся в конец трубки при вкручивании самореза.
Шикарный робот. Автор молодец. Так же ролик смонтирован просто отлично.
Че умного то?
Молодец
Дружище, скажу тебе как агроинженер: исполнение у тебя - гениальное, а вот задумка устаревшая. Современный тренд направлен на уничтожение сорняков с помощью лазера. При этом сорняки будут очень маленькие - всего насколько дней от роду, а следовательно очень нежные, т.ч. сверх сильного лазера не потребуется. Удачи в дальнейших разработках.
Ну так у него сорняки другие, крупные
@@НеуказаноНеуказано-п4ч Ну так о том и речь - в реальности крупные сорняки на грядке не встречаются (только у пермокультрущиков, но они вообще не пропалывают :).
@@Nobodymentor значит я пермокультурщик! А думал просто распздяй
Круть
Поставь между передними и задними колёсами ролики будет полный привод.
Откуда берёте данные по изображениям
в поисках идей нужно смотреть "битву роботов" работать ночью, днем заряжаться, рога с магнитным разъемом для зарядки нужны или троллеи )) степеней защиты IP54 хотя бы нужна... растения будет яндекс классифицировать? З.Ы. сейчас в моде "танковый разворот"
Круто братан! а может правда авто-газонокосилку смотыриш? за базу взять готовую газонокосилку чтоб механнику не мучить, а управление уже свое
о кстати ты можешь еще солнечную панель туда чпоньк
если ты боишься что твой болт с гайкой начнуть раскручиватся ты можешь пропаять гайку к болту оловом и все залить лужением
Raspberry pi 4 и другие компьютеры под GNU/Linux необязательно снимать для того что бы пере прошить. Файлы пользовательских программ на Python например и .sh скрипты можно перекидывать по sftp. FiliZilla например очень удобный sftp клиент сервер. Для передачи файлов между компьютерами без графического интерфейса удобно использовать midnight commander (sudo apt install mc). Ну и ещё есть очень полезные диспетчеры задач htop и btop, btop очень подробный диспетчер задач.
А, это то да. Использовал ssh для управления и scp для передачи файлов. Один раз только пришлось снять, и то для подключения через hdmi напрямую к экрану для настройки сети
Болт с гайкой и еще гайку за контрогаить или просверлить болт и поставить стопорную шпильку чтобы гайки не открутились ну или на резьбу намотать веревку и залить супер клеем но уже будет не разборная конструкция так легко не разберешь как со шпилькой.
как насчёт натянуть резинки на колёса, так сказать гусеницы из резины
На превью будто чья то могила