0: Всем добрый день. В этом видеоролике мы рассмотрим zero shot learning в задаче компьютерного зрения все существующие разделы это классификация, детекция, семантическая сегментация, инстанс, сегментация и вот все на примерах посмотрим, как это все реализуется давайте начнём.
1: Того, что такое в принципе, зеро шот обучение это максимально актуальная задача. На сегодняшний день это попытка использовать какие-то готовые сетки без вообще какого-либо обучения и при этом на ваш уникальный кейс. То есть, например, вам нужно там, не знаю, классифицировать там
2: Красную от левой, красная от синей птицы или что-нибудь ещё неважно. Любую классификацию, любую детекцию любых объектов, которые вы не имеете, тестовых, ну не имеете наборов данных для разметки. То есть вообще не производите никакую разметку. Для чего это может быть полезно. Ну, например, для использования пруф.
3: Concepts, да, то есть для первоначальной стадии разработки какого-либо программного обеспечения это может быть для помощи, в том числе в авторазметки. То есть вы можете использовать вот эти вот нейронки как стартовые сетки для того, чтобы автоматически разметить ваш дата.
4: А уже потом доразметить их руками, то есть доуточнить там, например, детекции, сегментации, это тоже я в ближайших своих туториалах покажу, расскажу, как можно использовать авторазметку с использованием зеро Шотов. Вот сегодня мы просто посмотрим примеры того, как вообще, в принципе, зеро шоты использовать, ка
5: Можно на практике реализовать и прям по очереди, по всем задачам компьютерного зрения пройдёмся самые актуальные модельки. Посмотрим. Зеро шоты появляются сейчас максимально активно, потому что идёт бум направления с трансформерами связанное. Началось все это с нлпи, да, задачи
6: Где трансформер показал себя наилучшим образом. Это вот gpt, текущие, да, модели. И далее уже вот эти вот технологии трансформеров стали интегрироваться в компьютерное зрение. Вот сейчас они как раз-таки создали вот такой вот целый кластер, да, но
7: Типов задач за zero shot обучением что ж, ну давайте тогда посмотрим на примере начнём давайте тогда прямо с какого-нибудь примера, да, чтобы было понятно вообще, когда нужен зеро шот, а когда он не нужен ну вот, смотрите.
8: Себе задачу, что нужно детектировать людей. Ну, само собой, такая задача, скорее всего, решена. И можно найти где-нибудь в интернете. Очень хороший детектор с готовыми весами нейронной сети, которую просто грузите и пользуетесь на здоровье машины тоже там, не знаю, какие-нибудь, может, номера там, знаков.
9: Этих каких-нибудь там может быть ещё какие-нибудь, не знаю, пусть будет лица, атрибуты, лица тоже. Это, наверное такие довольно базовые вещи, которые скорее всего можно найти в интернете, найти готовые веса и их в принципе использовать, то есть в качестве мвп, например, какого-нибудь без
10: Обучение можно, в принципе, здесь просто готовые веса. Такие примеры мы тоже рассматривали, да, вот меня в моих курсах, которые я снимаю на YouTube, есть даже вот видео, где мы используем какие-нибудь готовые сетки, например, там на базе йоло каких-нибудь, да, там есть уже готовые 80 классов от coca датасет.
11: Или если мы используем классификатор, есть готовые 1000 классов от имеджине, то в принципе можно, да, классифицировать на эти классы. А что если у вас есть какие-то уникальные задачи, прям вообще уникальные. То есть, например, вам нужно детектировать какой-нибудь фрезерный станок. Ну, логично, что такого вы нигде не найдёте.
12: Скорее всего, веса, ну, практически такие отсутствуют. Вот. Поэтому можно попробовать, скажем так, создать данный класс и протестировать. Вдруг у вас, в принципе, это получится, как это работает. Ну, смотрите, есть какая-нибудь модель, да, какая-нибудь модель. И вот
13: Эта модель на вход принимает некой некий запрос, то есть некий, допустим, текст называется текст промпт.
14: То есть текстовый запрос и, собственно, тем самым данная модель становится уже как раз-таки ориентирована на те самые текстовые запросы, которые вы сделали. То есть, например, у вас бы есть какая-то просто пустая модель. Вы сказали, что хочу, чтобы эта модель детектиро
15: Там, не знаю, кошек и собак. Все. Ура. Ваша модель теперь действительно имеет возможность это редактировать. Да, конечно, качество оставляет желать лучшего. 2 главный минус такой модели, она очень много весит. Она, возможно, не самая хорошая для интеграции в продакшн, но для неких
16: Стадия мвп для начального тестирования авторазметки ну нет ничего лучше, чем попробовать zero shot, то есть всегда советую начинать ваш ресерч с zero Шотов, а потом переходить на что-то более вот прям специфическое, то есть уже начинать процесс разметки.
17: Обучение сетей и вот уже дальше развивать проект постепенно, ну, для стартовых тестирований. Зеро, шоты, самое то, что ж, давайте тогда начнём прям по задачам. Значит, какие у нас есть задачи компьютерного зрения. Ну, все эти задачи мы уже рассматривали в туториалах на YouTube, то есть про каждую есть прям
18: Именно туториал как обучаться, например давайте начнём с детекции, значит детекция, напомню, у меня есть на YouTube курс по детекции, это на примере йола. В 8 мы обучали детектор, да, с полным полной стадией разметка и обучение давайте посмотрим, что.
19: Есть по зеро шотам для детекции, для детекции самые популярные зеро шоты. Это 1 дино, да, это как раз-таки граундинг Дина, известная сетка, вот, но она довольно тяжёлая и очень медленная.
20: Поэтому есть её аналог, это, по сути, дистиллированный дино, то есть переведённый в виде из трансформера в цинки. Мы как раз сегодня его посмотрим на примере. Это йола ворлд.
21: Ну, йола, то есть you only look ванс. Ну, есть, означает, что это быстрая сетка ола ворлд. Как раз-таки сегодня мы её посмотрим. Давайте дальше. 2 аспект посмотрим. Значит, классификация, значит, классификация.
22: Что у нас есть обычно классификация. Обычно используют какие-нибудь резнеты. Сейчас вот популярны стали трансформеры, в том числе для классификации на примере Витов и подобных архитектур. Ну, мы с вами рассмотрим именно зирот, зеро, шоты для классификации это
23: Клип, то есть модель клип, это трансформерная сетка, как раз, которая позволяет скодировать каким-то образом текст, закодировать каким-то образом изображение и сравнить близость, то есть оценить текст и изображение соотносятся или текст изображение не соотносятся.
24: То есть, да, понятно. Это вот как раз-таки попытка, скажем так, выбрать, является ли текстовый запрос схожим с фоткой, которую вы подали. Вот такая интуиция находится под задачей Клипа, поэтому вы задаёте там и фотку, и некий текстовый промп.
25: Которым будете все время сравниваться. Поэтому, видите, можно любую тексту про задать, например, фотография станка или там, не знаю, фотография там, расплавленной руды, ну, все, что угодно. И потенциально, с большой долей вероятности у вас этот классификатор будет более менее неплохо работать даже при
26: Без какого-либо обучения. Следующая, 3 задача это семантическая сегментация ну вспомним, что у нас есть обычно по этой задаче это юнеты да, тоже туториал. У меня на YouTube есть последнее как раз видео это
27: Про обучение Юнета. Давайте посмотрим, что есть по зирот. Зирот в этой сфере постепенно развиваются. Вот из актуальных, по моему, моделей. Это клип, клип сёк, по моему, называется, как раз его тоже посмотрим. Вот.
28: Это как раз модель, которая позволяет делать именно семантическую сегментацию для инстанс сегментации тоже есть решения, довольно неплохие решения. В данном случае, если нам нужно найти всего лишь 1, скажем так, объект в кадре, то тут может подойти даже
29: Какой-нибудь сэм. Вот, но нам с вами скорее подойдёт другая моделька. Сейчас давайте про неё скажем. Значит, инстанс сегментация, значит, тут мы рассмотрим с вами на примере модели, которая называется language сэм.
30: Вот, надо понимать, что ещё, в принципе, есть отдельная, наверное, 5 задача. Я назвал бы сегментация всего сегментация всего. То есть, когда нужно просто, по сути, знаете, сделать из фотографии некую раскраску, просто как бы попробовать найти все, все, все существующии.
31: Объекты на фотографии. Для этого тоже используется готовая сетка. Называется сэм. В принципе, сэм на вход принимает как задачу точки, как задачу какого-то баундинг бокса, так и текстовый запрос. То есть можно подать на вход 3 вот этих вот
32: Ипостаси и, в принципе, как-то подкорректировать работу сэма, чтоб было понятно. Сэм, вы уже, наверное, если смотрите мои туториалы, хорошо знаете, мы его использовали много раз в каждом проекте, где мы занимались какой-либо разметкой, мы все время использовали сэм сэм, помните готовый
33: Которая помогала нам быстрее размечать данные. Это как раз-таки был сэм, это готовая сетка. Помните, мы её не обучали, но при этом она прекрасно справлялась на всех задачах, потому что, как бы мы входным запросом на неё подавали, например, точки, да, то есть некие точки, за которые он захватывался и понимал, что перед нами какой-то объект.
34: Вот, в принципе, использование сэма больше, по большей части оно не в продакшене, а оно вот больше под разделом авторазметки. То есть сэм очень классно сейчас используется почти во всех штуках по авторазметки, например, севат вообще его очень хорошо и классно использует поэт.
35: Поэтому вот вам пример такого. Прям зерошеллу действительно помогает ускорить процесс. Что ж, давайте пройдёмся прям по разделам, начнём тогда с 1, с детекции, значит, ну, что у нас есть, значит, по детек.
36: Мы будем использовать с вами, йола ворлд, вот так выглядит эта модель, то есть она на вход принимает какое-то изображение с помощью yolo бэкбоуна, она получает некие фичи, вот в разных размерностях, и, собственно, также подаётся текст на вход, то есть некий
37: Словарик словарик, потому что у нас есть несколько, например, классов, да, логично, что детектор у нас многоклассовый, поэтому можем подать несколько классов, например, man, woman dog. И вот, собственно, вот этот словарик как-то кодируется, а потом мы производим детекцию и находим
38: Те детекции, которые соответствуют этим вот, собственно, словарным описаниям и на выходе получаем вот что-то такое. То есть получаем детектор мультиклассовый. Что ж, ну давайте, наверное, посмотрим на примере для этого будем
39: World. Давайте как раз-таки поглянем, как это все делается. Значит, чтобы все установить и все работало, необходимо установить 2 библиотеки. Это ультралитературное оду библиотеки пач ола, инфер. Как раз-таки будем использовать её для того, чтобы визуализовывать результаты прогона нейро.
40: На сетке, чтоб было понятно, это вот есть отдельная документация у меня на гитхабе, вот на йола, пач Бейс инференс. Буду очень благодарен. Если поставите лайк, поддержите наш проект. Это вот, собственно, наша библиотека на питоне, что она позволяет делать? Нам вот нужно сюда перелететь.
41: Раздел custom инференс визуализ и тут как раз вот есть все параметры. Позволяет очень красиво, кастомно визуализовать результаты обработки нейронной сети. То есть можно посмотреть всякие там box, нарисовать сегментации, нарисовать разные цвета, задать, то есть вообще все
42: Любая кастомизация связанная с визуализацией результатов инференса йолы все находится там, так что будем как раз её использовать, чтобы установить нужно просто запустить эти ячейки, не забудьте что перед тем как вообще в принципе что-то вот закачивать нужно поставить pytorch.
43: Если у вас есть видеокарта, заходите на сайт пайторча, ставите версия с кудой. Вот, и тогда у вас будет поддержка видеокарты, все будет быстрее обрабатываться. Ну все, мы поставили в библиотеке. Теперь давайте тогда запускаться. Принцип очень простой. Мы зака.
44: Готовую модель вот она я взял ларч модель то есть можно размеры поменять, есть лардж, есть medium size то есть ставите в зависимости от того какая у вас скорость нужна. Чем больше модель, тем лучше качество, но при этом медленнее скорость. То есть тут как бы вот это вот нужно выбирать.
45: Что для вас важнее? Специфичней. Далее, что ещё нам нужно здесь вот мы загрузили модель. Дальше у нас есть сет классес мы должны установить какие классы мы хотим использовать. Тут можно писать вообще любые слова, любые предложения то есть это вот как раз-таки и есть промт инженеринг то есть мы придумываем
46: Некий пром, то есть некие текстовые задания, что именно будет детектировать наш алгоритм. Ну вот, например, я решил сделать персон, тейбл и тикап. Ну почему бы нет? Вот такие у меня 3 класса все. Вот я установил, собственно классы. Теперь можно, собственно, какую
47: Фотографию загрузить. Давайте посмотрим. У меня есть вот папочка имиджес и вот в ней есть вот такие вот фотографии, как раз сегодня мы с ними этим фотографиям поработаем. Ну давайте тогда загрузим 1 фотографию и посмотрим, как она выглядит. Ну вот, собственно, загрузили и посмотрели, как выглядит фотография, то есть
48: Это вот просто люди в кофейне. Ну и запускаем теперь функцию как раз из пакета пач Бейс инференс. Да, вот вижила йола инференс. Тут нужно передать как раз-таки изображение, модель саму, передать которую мы только что загрузили имидж сайсс. Это вот тот самый ре.
49: Который производится на инференсе йолы. Дальше конфиденс это уверенность детекций intersection over union это как раз-таки параметр. Non, maximum suppression тоже можете поиграться, увидеть, как меняется при изменении этих параметров. Сейчас у нас используется детекция, поэтому ставим
50: Сегмент равный фоллс. Ну и давайте сейчас запустим, посмотрим как это все выглядит.
51: Ну вот наш результат, то есть вот как выглядит результат детекции, как видим, в принципе, очень даже неплохо. При этом сетка сама первоначально не знала про понятие тейбл, там персон тикап. Мы сами придумали эти классы и сами получили какие-то результаты.
52: Давайте вот ради интереса просто здесь, например, добавим ещё 1 новый класс, которого тоже, само собой, ещё не было. Пусть будет лампа lamp. Ну вот давайте ещё раз тогда установим.
53: Новые классы. И давайте запустим. Загрузили фотку, прогнали через инференс. Ну вот интересно, че он сейчас справится, найдёт лампы? Ну, вроде бы не нашёл, да, можно сказать, что, видимо, ламп нет, ну это, наверно, связано с тем, что у нас слишком жёсткое ограничение по конфиденсу. Видите, у вас есть конфи.
54: То есть уверенность мы поставили 0 2. Надо понимать, что сетка, которая используется, вот эта вот готовая зеро шоная, она выплёвывает много предсказаний, но они очень на самом деле низкой. То есть давайте попробуем. Я сейчас
55: Вероятности.
56: То есть уверенность мы поставили 0 2. Надо понимать, что сетка, которая используется, вот эта вот готовая зеро шоная, она выплёвывает много предсказаний, но они очень на самом деле низкой вероятности. То есть давайте попробуем. Я сейчас
57: Здесь просто тупо 0, да, просто вообще отключу конфиденс. Сейчас мы видим очень много детекций. Вот смотрите, как много вот. То есть вообще прям слишком много, много детекций. Ну давайте тогда их все-таки как-нибудь отфильтруем. Давайте поставим, пусть будет 0 1.
58: Может быть у нас будет чуть больше шансов найти больше объектов. Ну вот в принципе, ничего сильно не добавилось, пока ни 1 лампу мы не нашли. Давайте поставим 0.
59: 0 1. Может быть теперь хоть что-то будет. Ну смотрите, тоже в принципе, ничего особо сильно не добавилось, но при этом, если ставить ещё ниже конфиденс, например, вот так вот, то, скорее всего, уже, да, уже лампу, наверное, мы захватим. Ну вот, че то он видит здесь дати.
60: I cup, ламп. Так, сейчас, мне кажется, мы название неправильно задали. Да, точно все. Я думаю, что че, ошибка, я запятую не поставил. Давайте ещё раз.
61: Вот сейчас должно быть все нормально, да, все, все, все нормально. Видите, я просто случайно неправильно поставил запрос, запятую не поставил. Вот смотрите, ставлю конфиденс 0 1. Смотрите, вот нашёл лампу. Раз, лампа 2, лампа 3, 4, 5, то есть.
62: Вот у нас, собственно, производится детекция, при этом класс лампы он, само собой, первоначально не знал. О, может давайте сделаем ещё какой-нибудь отдельный класс, добавим сюда класс, назовём его.
63: Cell phone я не помню, как правильно пишется. По моему, вот так мобильный телефон, ну и давайте посмотрим, найдёт ли он этот вот мобильный телефон на столе запускаем. Да, нашёл, смотрите, давайте ограничим чуть побольше конфиденс, поставим 0 дв.
64: То есть, видите, нужно немножко играться с параметрами, менять всякие конфиденци, другие прочие вещи. Так, он тут находит 2 цел фона. Давайте, чтоб было понятней. Отключим визуализацию классов. То есть show классес равное фолс. Теперь будем.
65: Ориентироваться только по цветам.
66: Ну вот видно, да, он нашёл 2 телефона, все правильно, реально. Тут 2, смотрите, вот 1, вот 2, да, действительно, все очень даже неплохо находит. Смотрите, что тут ещё за параметры. Вот в визуализации можно здесь, например, поставить параметр фитнес. Это как раз-таки
67: Толщина да, можно поставить толщину поменьше давайте поставим толщину 2 теперь у нас будут более тонкие баундинбоксы да, вот теперь стали они более тонкими что ещё тут можно поставить есть понятие шоу класса давайте поставим все-таки здесь true как
68: Было, да, только что до этого. И давайте уменьшим размер текста, а то текст слишком большой, да, вот персон пишется большими буквами. Вот тут есть фон скейл, давайте поставим, пусть будет 0.
69: Там 5, не знаю, в 2 раза меньше возьмём шрифт. Ну вот теперь он стал меньше. Теперь, наверное, даже стало комфортней. Все лучше видно. Ну вот, думаю, вы поняли общую логику. То есть вот как работают зираат и как можно тут все, в принципе, визуализовывать. Есть ещё параметр.
70: Шоу вот random обжект калорс если мы ставим true тогда все объекты будут не по цветам соответствующим их классам, а просто каждый объект будет рандомного цвета ну вот смотрите как так и получилось да вот каждый человек видите каждый объект вообще разного цвета ну так тоже можно убедитьс.
71: Что? Да, действительно, у нас находится много, много объектов. Хорошо, с этим разобрались. Давайте другой пример. Возьмём другую фотографию. Загрузили фотографию. Вот такая она, да, имаджес 2 точка джипек. И давайте теперь её, собственно, тоже прогоним и посмотрим, че получилось. Ну вот.
72: В принципе, неплохой результат. Лампы найдены. Да, притом, смотрите, сейчас у меня ещё отображается конфиденс, почему отображается, видите, есть параметр. Вот здесь я поставил шоу конфиденс равный. True, если мы здесь поставим его false, то у нас не будет отображаться данный конфиденс. То есть вот
73: Можно видеть, да, то есть вот уверенность, тикап, уверенность очень низкая, то есть она прям гипер низкая. Если вот мы отключим, мы это даже и не узнаем. Смотрите, стоит мне поднять здесь конфиденс с 0 0 3 до 0 3, как сразу же
74: Большое количество детекций исчезнет. Вот, например, тик аппы всякие, да, уже перестанут быть вообще найдены. То есть люди лампы находиться, в принципе, будут, а вот уже всякие чашки, скорее всего, нет. То есть тут нужно играться с этими коэффициентами и подбирать то, что вам
75: Нравится обычно для таких сетей, если у вас какие-то сложные текстовые запросы, да, вот, то есть, например, какие-то специфические, да, ваши уникальные. Зачастую нужно конфи ставить значительно ниже, и только тогда у вас все будет работать. Хорошо, давайте теперь ради интереса поставим другие классы.
76: Paper money и евроценты. Вот такие я вот сделал классы почему бы нет фотка у меня выглядит вот таким образом. Думаю теперь понятно почему я поставил центы и paper money. То есть я хочу найти в идеале вот это вот бумажные деньги и вот эти вот маленькие
77: Деньги давайте поставим сначала конфиденс равный 0 2, да, то есть высокая степень уверенности запускаем. Ну и вот че мы получаем, как бы ничего, он вообще ничего не нашёл. Это почему? Это? Потому что у нас очень низкая
78: Скажем так, очень высокий. Поставили конфиденс. Давайте поставим поменьше. Поставим теперь 0 1. Вдруг уже что-то найдём, запускаем.
79: Смотрите, тоже ничего не нашли. То есть это тоже такое бывает. Смотрите, давайте поставим теперь 0 0 2, например, давайте такой вот вариант запускаем.
80: И вот на таком конфиденс мы нашли пейпер мани, ну и видно, да, вот, собственно, его конфиденс, вот, вот какой он, он равняется. 0 0 4. То есть вот эти вот маленькие монетки вообще не найдены. Скорее всего, чтобы их найти, нужно ещё ниже конфиденс ставить. Давайте попробуем ещё ниже конфиденс.
81: Поставить. То есть тут нужно, короче, вот это вот моменты с ним поиграться. Вот смотрите, вот кто-то видит евроценты, выделяет вообще непонятную область. То есть он не всегда справляется. Не нужно думать, что это все-таки идеальная сетка, которая всегда так робастно работает. Вот давайте попробуем поста
82: Dpi снижу что такое dpi dpi это видите размер фотки сейчас фотка очень большая получается, мне не очень удобно с такой работой давайте поменьше поставим дипиай 150, тогда вот видите, фотка стала поменьше, теперь покомфортнее, так ставим, что ещё давайте.
83: Отобразим теперь image size так не трогаем. Давайте поставим конфиденс ещё ниже. Пусть будет 0 0 1 запускаем. И вот смотрите, теперь уже некоторые евроценты реально находят
84: Вот смотрите, уже появились боксы, притом видно, да, их конфиденс, смотрите, какой 0 запятая, 0 0 2 3. То есть очень низкий конфиденс, чтобы отключить конфиденс. Опять-таки вот этот вот параметр ставим фолс, и теперь вы, собственно, не выводите их. То есть тут очень большая кастомизация.
85: Чтобы почитать подробно про все возможности кастомизации, про всякие выводы на любой вкус их можно сделать. Можно, например, вообще текст скрыть. Если вам, например, текст не нравится, да, вы не хотите вообще, в принципе видеть текст, только вас интересуют сами боксы, то вот тут есть параметр.
86: Сейчас скажу. По моему называется сейчас шоу класса лист. Сейчас это можно прочитать прям давайте прочитаем по документации шоу конфиденци такс дельта калорс калор текст вот шоу.
87: Давайте поставим шоу класс видите to show класс label дефолт из true, то есть по умолчанию true давайте поставим здесь равный фолс и теперь, когда мы отобразим, у нас не будет показаны вообще в принципе текстовые описания.
88: Только вот будут такие вот штуки. Возникает вопрос, что такое вот это вот дельта калорс, дельта калорс, это сменить цвета. Видишь, сейчас у нас цвета вот такие вот сиреневый и зелёный, это рандом. На самом деле цвета определяются рандомайзером, а это sit рандомайзер. То есть как бы параметр рандома, допустим,
89: Там 0 как параметр рандома цвета, наверное, чуть поменяется. Давайте поставим какой-нибудь побольше, не знаю, там давайте вот 6 запускаем и вот видите, теперь цвета вот такие вот, да, стал зеленовый, сиреневый 90.
90: 9 поставим неважно. То есть понятно, это чисто поиграться с рандомом и можно подобрать те цвета, которые вам больше нравятся для визуализации каждый раз обычно какой-то более кому что нравится. Хорошо, давайте теперь посмотрим, а что можно сделать дальш.
91: Вот мы только что с моделькой поигрались, объекты понаходили. Можно в идеале эту модельку теперь сохранить. То есть дальше использовать её на продакшене. Пока что эта модель, скажем так, не сохранена, чтобы сохранить эту модель. Вот все, что надо сделать, просто вот здесь откомментировать.
92: И вот она сохранится с именем кастом йола в 8 m module по сути, мы просто получаем готовую модель детекции, то есть, видите, мы только что с вами сначала установили параметры, установили классы, а теперь просто сохранили, и вот смотрите, у нас теперь директория появилась, появилась моделька, эту модельку теперь можн.
93: Использовать, в принципе, в продакшене где угодно. Это будет Ровно такая же модель, как мы обучали в туториале про детекцию. То есть там мы обучали сетку на своих данных, а тут мы как бы сгенерировали данные, передав какой-то словарь объектов. Вот качество, конечно, оставляет желать лучшего, но, в принципе, как видит,
94: Для каких-то минимальных тестирований вполне сойдёт. Что ж, давайте теперь поговорим про следующую модель сэм. Значит, про сэм я тоже рассказывал. Значит, что это за модель. Это модель, которая позволяет сегментировать вообще все, сейчас, давайте какой-нибудь найду пример. Ну вот.
95: Находится уже на сайте ультралитературное ь вариант сэм, который медленный вот он он через трансформер реализован довольно долгий у него инференс и есть вариант более быстрого сэма называется face сэм это дистиллированная модель, то есть переведённая из трансформерной формы в цнн форму, она просто
96: Чуть быстрее работает, при этом выдаёт те же самые результаты. Принцип у неё такой, что эта модель позволяет сегментировать вообще все. То есть вот смотрите, вы берете фотографию, прогоняете через модель и модель вам сегментирует вообще все. Вот вам пример, да, то есть просто нашла здесь фон, там, не знаю, песок палку.
97: Собака, собака. То есть вообще все, все объекты она находит, по сути дела, знаете, как некую раскраску, да, вот для детей, а потом далее вы можете передать ей дополнительно, например, либо промт в виде точки, то есть даёте точку. И тогда вы конкретно выделяете только 1 объект, который вас интересует, либо бокс пром.
98: То есть выделяете бокс, и он, согласно нему, выделяет то, что интересует, либо даёте какой-то текстовый запрос. Согласно текстовому запросу, он как раз-таки находит нужный объект из перечисленных. При этом текстовый запрос может быть абсолютно любой. Тут как раз-таки промт, инжинирин
99: Должны поиграться с разными промтами, разными текстами и найти тот, который вот идеально работает под ваш случай тут тоже на некий некий, как вот как research, да, вот когда вы с gpt работаете, тоже нужно иметь определённый правильный подход с ним общения для того, чтобы получить хорошие ответы, это особенность как раз-таки любых трансформеров, вот, и любых-таки
100: Сетей, которые используют какой-то про некие текстовые промты что ж, давайте посмотрим, как это работает. Значит, чтобы с этим работать все также довольно легко мы берём ультралитературное ь. Тут есть либо x, либо s. X. Это более тяжёлая модель, она медле.
101: Чуть помедленнее, с более быстро ну давайте возьмём xx прям самую такую мощную модельку, выберем фотографию ту самую, на которой у нас, помните, были эти, на которой у нас мешочек с деньгами, собственно, считаем его и просто дальше прогоним опять-таки.
102: Image model и вот все эти параметры установим конфиденс я поставил 0 6. То есть такую высокую степень уверенности давайте запустим, у нас сейчас происходит скачивание модели. Видите, она довольно тяжёлая 138 мегабайт весит, вот модель у нас закачалась, вот она, да, в директории появилас.
103: Вот фотка исходная, а вот результат посмотрите как классно у нас получается результат. Можно сразу заметить, что у сэма в принципе 1 класс, он выплёвывает класс под названием обжект видите обжект и confidence да, выписывается ну давайте, в принципе.
104: Берём это вот подпись, потому что, в принципе это 1, один и тот же класс, поэтому большого резона называть нету его. Пишем шоу классас равный фолс. Собственно, давайте ееще конфиденс тоже поднимем пусть будет не 0 6, а 0 7, то есть
105: Более уверенные объекты только будет находиться. Запускаем.
106: Ждём. Ну вот получили что-то такое. То есть, видно, каждый объект был найден. Ну, сейчас мы получили с вами просто box, но главный плюс плюс sam. Это сегментейшн модель, то есть она позволяет находить сегменты, чтобы их найти. Все, что надо сделать здесь поставить сегмент, равный true.
107: И теперь у нас уже модель будет выплёвывать на выходе визуализацию с сегментацией. Ждём прогрузку.
108: И вот мы получили смотрите теперь каждый объект он обводится неким да, вот таким вот полигоном то есть видно теперь это уже скажем так попытка сегментировать объекты давайте чтоб понятнее было тут есть параметр show random калор ставим true то есть тем самым у нас теперь будет каждый
109: Своего цвета отображаться. Дипиай можно понизить. Давайте сделаем 150, чтобы было не такое большое изображение. Внешне ждём прогрузку.
110: Сейчас загрузилась фотография, ну и вот видно да, теперь каждый объект своего цвета, видите, зелёный там типа чуть больше к синему. Жёлтый короче, все, все, все цвета, которые есть, все в рандомном виде. Что ж, давайте боксы уберём, а то box мешают, чтобы убрать box, тут нужно, собственно, поставить параметр.
111: Шоу бокса равный фолс ставим фолс и запускаем теперь у нас будет
112: Реализация.
113: Вот такая, смотрите, можно ещё, в принципе, поиграться с параметром. Вот это вот имидж сайз поставить, допустим, 1024. Давайте поставим 1000.
114: Сейчас, секундочку, 1024 и давайте ещё ради интереса поставим Фил маск, равный true что это значит, это значит то, что теперь мы не просто выделим объекты, да, по контуру выделим, а ещё и закрасим их внутри, чтобы было чуть чуть более наглядно нажимаем готово.
115: Ждём.
116: Ну вот как это примерно выглядит. То есть теперь видите, у нас каждый объект своего цвета ещё он при этом закрашен. Ну тут опять-таки все от рандомайзера зависит. Можно попробовать поиграть. Вот видите, дельта калорс можно поставить другое, не знаю, там пусть будет 18.
117: Да, то есть это как раз-таки random сит, раздача цветов может быть будет симпатичнее если мы просто чуть чуть его изменим. Ну думаю с идеей поняли. То есть это довольно удобная библиотека с большой кастомизацией. Вот смотрите да, теперь вот так вот у нас все это примерно выглядит так, что
118: То, пожалуйста, пользуйтесь, если что, поддержите проект, потому что мы довольно много времени потратили и сил на его создание. Вот как раз-таки ссылка на данный проект. Здесь вот можно поставить лайк, поддержать наши старания. Хорошо, ну давайте теперь, что сделаем интереснее, значит, вот он полу,
119: Получили с вами куча, куча разных предсказаний. Правильно? Да, то есть модель просто выплёвывает кучу предсказаний. А давайте теперь попробуем скажем так, уточнить, что конкретно нас интересует из этих предсказаний. То есть мы получили много объектов, а, например, хотим увидеть конкретно a photo of a paper money. То есть
120: Только лишь то, что бумажные деньги. Поэтому мы передаём собственно модель, image, да, допустим, девайс, можно использовать цпу либо видеокарту. Неважно. Вот дальше промт процесс, то есть прогоняем уже промпт. Дальше.
121: Указываем аннотацию в виде текстового промта, указываем текстовый промт и дальше, собственно, запускаем и дальше указываем директорию, куда сохранить результат. То есть на выходе сетка сохранит финальную фотографию куда-то к вам на компьютер. Если стоит такой знак, значит закачаем прям в эту же директорию, в которой
122: Работаем, давайте нажмём, собственно, довольно длительная операция, само собой, потому что сначала он прогоняет через сетку, потом ещё он задаёт текстовый пром, потом проводит. То есть для реалтайма такое, конечно, не подойдёт, но, в принципе, для какого-то там какого-то ресер
123: Да, там, чтоб просто выделить маску без использования севатар чего-то ещё или какую-нибудь, не знаю, авторазметку в севате, в принципе, очень даже неплохо использовать. Ну, мы с вами уже её даже много раз использовали, эту авторазметку с использованием сема. Сейчас просто теперь на месте убедились, как это все рабо.
124: То есть там можно ещё и текстовый запрос передать, видите, уже 32 секунды грузится. Ну понятно, это все связано с цпу. Если поставил видеокарту, то скорость была бы быстрее. Итак, готово. Сейф, имидж. Ну давайте посмотрим. Вот у меня появилась фотография имидж 0. Ну и вот как-то
125: Смотрите, то есть вот он, смотрите, че сделал, действительно нашёл область пейпер мани, и вот, собственно, её сегментировал так что, да, действительно, сетка работает, притом работает очень даже неплохо. Вообще без какого-либо обучения она смогла найти paper man.
126: Главная проблема в данном случае, Фатема, в том, что эта сетка выдаёт только 1 объект. То есть, если мы хотим, напишем коин и рассчитываем найти много, много, много Коинов. К сожалению, мы это не сможем сделать. Почему? Потому что сетка вот именно только на 1
127: Хорошо работает. Ну, ничего страшного. Я уже говорил о том, что мы сегодня с вами рассмотрим в процессе видеоурока раздачу инстанс сегментации. Вот, собственно, там на примере Ланк сема, мы вас как раз-таки сможем получить вообще любое количество об
128: Любого желаемого класса, притом именно отдельных инстансов. Так что тоже до этого дойдём. Супер. Значит, с детекцией закончили. То есть это вот 1 тема, детекция есть. Ну и sam отдельный тоже. Вот мы его рассмотрели. Думаю с этим понятно.
129: Переходим к следующей задаче. Классификация, наверное, самая базовая задача, с которой все начинают сталкиваться начинающие разработчики, это классификация фотографий. Собственно, тут может подойти нам клип. В чем идея Клипа клип сам под собой. Это просто сетка, которая. Давайте я вам сейчас покажу на примере. Вот клип.
130: Это сетка, которая вот что делает. Давайте откроем фотографию, она берет некий текстовый запрос, некие и фотографии и просто кодирует фотографии, получает некий вектор из фотографии и текст тоже кодирует, получает некий вектор, что именно кодирует, какая там сетка, это трансформеры, если вам ещё
131: В принципе интересно про архитектуры, про то, как работают снёнки, как работают трансформер, как работают обычные полносвязные сети, всякие рекуррентные сети, там может быть лстмки и много много много всего другого, то напишите своё желание в комментарии.
132: Если наберётся много желающих, то обязательно, конечно, сниму такое видео. Расскажу вам теорию на пальцах базовые принципы таких архитектур. Значит вот идея какая. Мы взяли, прогнали текст, получили код, какой-то вектор, прогнали, изображение, получили вектор, а дальше просто сравниваем наскольк.
133: Вектор текста близок к вектору изображения. Если вектор изображения и текста близки, то можно сказать, что эти объекты соответствуют, то есть текстовое описание и изображение друг другу как бы коннектятся значит, как бы класс есть тот, какой надо, если же они
134: Далеко друг от друга, да, то есть расстояние очень далёкое, то объекты как бы не объект не соответствует текстовому описанию. Вот такая идея поэтому в данном случае в качестве метрики, расстояния, да, то есть между векторами используется косинусная мера близости. То есть вот, например, у вас
135: Есть некая некий текст, получился некий вектор, да, вот некий вектор каких-то чисел и есть фото.
136: Тоже получили некий вектор неких чисел. Потом дальше считаем между ними косинусную меру близости, да, и оцениваем, близок объект или нет. Там можно посмотреть просто порог, да, какой-нибудь найти, просто подобрать идеально оптимальный порог и сказать, что а, да, это фотка.
137: Описание под названием там, не знаю, человек, стоящий в воде или там, не знаю, крот, роющий себе нору тогда супер. Вот мы классифицировали на такой довольно странный класс, то есть сами придумали текст вообще любой и согласно нему просто проверили, соответствует фотка или не соответствует
138: В данном плане вам не нужно использовать готовые классы имиджнет. Можно взять свой вообще уникальный класс, например, там, не знаю, порванная цепь комбайна, я не знаю, я вообще выдумываю любую ерунду, там неработающий станок, там горящая машина и
139: Пожалуйста, просто проверить меру близости объектов, как обычно, классификацию делают обычно в классификации, у нас есть n количество классов, то есть мы знаем какие-то классы, например, у нас есть класс dog, да, например dog и cat, и тогда, собственно, что мы делаем?
140: У нас есть некая фотография, мы её закодировали, есть doc, мы её закодировали, текст и кэт тоже закодировали, а потом смотрим так а к чему ближе к этому или к этому? И таким самым классифицируем, если вектор изображения ближе к собаке?
141: Значит, это скорее собака. Если кошки, то это кошка. И вот, собственно, такой подход в принципе лежит в основе классификации с использованием модели клип. То есть клип вообще это прекрасная модель, которую можно на много разных кейсов разнести. Это может быть, видите, модель, которая позволяет вам ранжировать фотографии.
142: По убыванию близости, да, то есть можно тем самым, например, сделать какой-то ранжированный поиск по смыслу. То есть, например, вы говорите, хочу найти фотографии на компьютере там, где у меня фотка собак нажмёте enter, и он находит реально, прям все фотографии в порядке, прям ранжир.
143: Максимально максимально похожие на запрос текстовый, который вы дали, а можно использовать в виде классификации. То есть вы просто сравниваете с готовыми некими импутами. Давайте вот как раз этот пример, мы с вами рассмотрим использование Клипа, если что, вот то, что я рассказал про ранжирование фотографий,
144: На самом деле тоже очень популярный кейс с использованием Клипа. Мы его рассмотрим в следующем видеоролике, где я вам расскажу про то, как можно сделать продакшн, интересное решение поисковика фотографий. То есть можно сделать поисковик свой собственный, например,
145: Момента внутри любого видео на основе Клипа. То есть у нас будет сервис резать фотографии, видео на кадры, а потом просто прогоняем я каким-то промтом. То есть задаём некий текстовый запрос, он ищет самые похожие фотографии на этот текстовый запрос и выдае
146: Там конкретные моменты, фрагменты внутри YouTube, видеоролика где конкретно вот это вот текстовое описание лучше всего подходит тем самым можете попасть прям в нужный момент в нужную секунду нужную миллисекунду конкретного YouTube видеоролика вот по текстовому запросу.
147: Вот так вот то есть это поиск именно по по сути фотографиям довольно интересно то есть про это тоже будет видеоролик отдельный там и рассмотрим сейчас поговорим с вами про классификацию, переходим в notebook под названием клип вот он здесь и давайте собственно начнём
148: Значит, вот мы загружаем некую фотографию. Так, давайте сначала нужно, да, устанавливаем библиотеку transformers, она нужна нам, да, то есть у нас есть уже пайторч. Вот мы установили библиотеку трансформера. Собственно клип это трансформерная сетка, значит, вот закачиваем все.
149: Нам нужно это происходит установка модели клип, притом довольно тяжёлая модель, она несколько гигабайтов весит. Поэтому учтите, что эта загрузка, скажем так, занимает достаточно приличное количество места на компьютере. Вот. Но иначе никак трансформеры не все тяжелы.
150: Притом это трансформер от компании open ai та самая, которая сделала чат gpt. Значит давайте загрузим какую-то фотографию значит вот наша фотография это птичка супер супер давайте теперь сделаем некие текстовые запросы. Значит вот текст импут. Я сделал трехклассную классификацию.
151: Класс. Я назвал a photo of red beard. Дальше блю бёрд и dancing people у меня просто вот 3 таких вот класса почему бы нет, могу любой текст писать, то есть фото чего-то обычно вот такой принцип текста промта, то есть пишите.
152: Photo of и дальше уже что-то что вам интересно запускаем функцию процессор, указываем текст импут собственно изображение возвращаем пайторч тензер ставим паддинг тру ну и запускаем. Готово, отработало. Ну и дальше что мы делаем? Мы
153: Получаем выход нейронной сети и прогоняем на выходе софтмакс, операцию софтмакс как раз-таки позволяет получить нам probability. То есть, да, вероятности принадлежности класса запускаем. И вот мы получили вероятность. То есть у нас, смотрите, 1 класс
154: Вероятность почти под, почти под единицу, то есть почти стопроцентная, и вот эти вот максимально низкие степени вероятности. То есть видно при этом. Смотрите, вот тут у нас 10 minutes 4, а тут 10 минус 7, то есть на текстовый запрос дэнсинг пипл это вообще не похоже.
155: А вот blue bird тоже не похоже, но в принципе чуть чуть ближе, чем дэнсин пипл. То есть видно да, он в принципе даже ранжирует по Такому вот логическому смыслу. Давайте визуализируем барплот, запускаем. И вот мы видим результат. То есть действительно класс, который назвали фо,
156: Именно он и есть класс почти со стопроцентной уверенностью при этом, да, то есть вот такой вот интересный момент. Супер давайте попробуем поиграться с этим давайте загрузим другую фотку, возьмём фотку номер 5. Здесь у меня синяя птичка.
157: Значит, запускаем, запускаем, запускаем. И вот смотрите, да, действительно, классификация не дала соврать фото голубой птицы, да, притом с огромной степенью вероятности видно, да, вот у неё почти под единицу. А вот эти вот по бокам вообще практически 0 вероятности.
158: То есть сетка действительно классно работает. Так, ну давайте ради интереса. Теперь фотку номер 6, фотка номер 6.
159: Dancing people скорее всего, должно быть в идеале, но тут довольно сложно, да, но серо, видите, справляется фото в dancing people. При этом видно да, следующее по вероятности, это фото в блюберд, почему он так понял? Ну, потому что тут реально есть, да, голубая одежда, поэтому да, он, наверное,
160: Вот на этой и стриггерился, и маленькую степень вероятности все-таки сюда закинул, но при этом, конечно, почти стопроцентная у нас на фото денсинг пипл. То есть реально клип очень классно работает как классификатор, поэтому используйте его в своих целях. Очень совет
161: Зачастую даже нет нужды использовать, там резнеты. Ну, понимаете, резнёт. Это все-таки очень быстрая сетка, неглубокая сетка, которая весит там всего лишь несколько гигабайт. А тут мы говорим про трансформер, который весит гигабайты. Зачастую это большая проблема и нагрузка
162: На вашу, скажем так, машину, поэтому в продакшене, скажем так, для некого стартового ресерча неплохо. А вот для какого-нибудь финального прода, ну, честно говоря, сомнительно, но попробовать можно. Думаю, с этим мы разобрались хорошо.
163: С темой про классификацию, думаю, мы тоже закончили, так что давайте отметим как пройдённое и переходим к следующему. Семантическая сегментация. Ну понятно, задача. Понятно. Это нужно каждый пиксель классифицировать тем или иным классом. Тоже последний, последний видеоурок у меня был про
164: Как с этим работать? Заходим клип сёк. Вот собственно моделька, загружаем её, тут используется та же самая библиотека, то есть transformers пил, используем, да, то есть ну ставьте все, что вам необходимо для этого. То есть пил трансформерс готово вот мы загрузили тоже моделька тяжёлая, у меня она просто уже
165: Ружена готово, используется под капотом клип сёк. То есть, понятно, это модель как раз-таки, которая использует клип, да, как, как основа, да, то есть она позволяет как раз в кодировать, а потом как бы декодирует, получает сегментацию. Вот пример, смотрите, то есть вот использу
166: Как раз-таки клип сега, то есть производится клип трансформер, да, прогоняет, получает некий вектор, а потом декодер декодирует этот вот текстовый эмбеддинг от Клипа в финальный. Это вот
167: Финальное представление сегментации, вот как это примерно работает. То есть это вот такой двухстадийный пайплайн, то есть наверх Клипа добавили декодер, позволяющий формировать маску. Что ж, ну давайте посмотрим теперь на практике, значит,
168: Как это работает? Загружаем какую-то фотографию. Давайте возьмём фотку птички, готово и сдадим собственно трехклассную сегментацию. 1 просто птица, да, будем выделять целиком область птицы вуд, то есть дерево я в идеале хочу получить здесь, да, вот эту вот деревяшку.
169: И последний эвинг. Ну то есть крыло далее запускаем. Готово.
170: Ну, паддинг, он че то жалуется, можно, в принципе, убрать, просто ничего страшного не будет. Ну и запускаем вот эту вот функцию visualize, предикшн ждём. И вот как это работает, смотрите, он фотку сегментировал, и мы получили область птицы, где он считает, да, то есть
171: Видно, это просто притом это маска как бы от нуля до единицы. То есть это уверенности тут расставлены, то есть конфиденс, вот почему конфиденс, потому что, видно, мы тут сделали торч 7, да, то есть мы привели к размерам от нуля до 1. Вот. И поэтому у нас теперь как бы уверенности на
172: Находятся в каждом классе. Вот это вот уверенность, вот тоже некая уверенность, но уже вуд и уверенность на крыло. То есть на самом деле реально очень классно так и работает, потому что мы реально получили достаточно похожие сегментацию, пока это не сегментация, пока это просто как бы
173: Уверенности. Сегментация это всегда 0 1, да, то есть это как бы финальная выдача класса. Тут уже нужно поставить порог. То есть мы сами определяем порог, например, порог, там, 0 5, 0 7, 0 8. Неважно, порог, да, по сигмоиде полученной и уже непосредственно её используем. Значит, вот че я делаю?
174: Для примера беру какой-нибудь класс, например, я возьму класс птица, далее указываем порог, умножаем 255 и, собственно, порог ставим по 100, да, то есть у нас будет теперь значения лежат от нуля до 255. Я взял порог 100, все, что больше, чем 100.
175: То я называю птицы этим, как его класс 1 это класс дерева, да, то есть 0 1 2. И вот смотрите, я получил уже реально бинарную маску, то есть тут либо нолики, либо единички, вот как-то так. То есть можно играться с этим параметром и получать нужную маску. Давайте сделаем, допустим, класс.
176: 2 поставим, запускаем. Вот смотрите, крыло птицы, да, вот так вот оно получено. Можно поставить пониже порог. Поставим порог, допустим, 0. И мы видим, теперь будет вообще прям жёсткий порог. Давайте поставим
177: Там, не знаю.
178: 200.
179: Там, не знаю, 200.
180: Сейчас нужно, наверное, перезапустить, скорее всего. Сейчас, секундочку.
181: Сейчас такс.
182: Что же это он так 100?
183: Так, 100 на 100 он выдаёт, давайте поставим, я не знаю, 30. Да, да, видимо, все-таки 0 нельзя ставить слишком жёстко. Вот видно 30, да, то есть это прям низкий конфиденс, и он берет слишком много лишнего, да, то есть
184: Захватывает лишние моменты. Если мы ставим наоборот, пожёстче порог, например, под 200, то он уже прям вообще не находит ничего, потому что это слишком жёсткий порог. То есть, например, ставим 150
185: Ну вот что-то находит, вот прям самые, самые уверенные пиксели. То есть тут нужно поиграться с порогом. Ну пусть будет 100 стоить по умолчанию, в принципе, на сотке он себя неплохо вёл, прям реально показывал крыло там, где оно должно быть. То есть вот видно, да, как раз-таки это как раз таблица уверенности, видно, что вот эти вот пиксели, они низкие уверенности.
186: Поэтому, когда мы орг ставили маленький, мы получали эту область, когда ставим слишком высокую вреность, получаем только вот эти вот слишком жёлтые пиксели. В общем, думаю, с этим мы тоже разобрались. Поставим, например, класс нолик, да, то есть класс 0. Вот мы получили прям маску самой.
187: Бинарную. Супер, думаю, с этим разобрались. Значит, с сегментацией тематической мы тоже закончили. И последнее, что нам осталось, это инстанс сегментация. Значит это как раз-таки попытка найти большое количество объектов и внутри каждого объекта сделать сегментацию.
188: Что будем использовать для этого? Используем для этого модель под названием language сэм. Значит, вот он, Ланг сэм, ну, у них тут под капотом находится граундинг Дина, да, то есть трансформер, который находит непосредственно
189: Все как бы детекции, согласно текстовому промту, а потом внутри этих детекций подаёт их на сэм и sam их сегментирует. Видите, такая, такая двустадийная пайплайн. То есть, по сути инстанс сегментация это как бы вот использование 2 вещей. Сейчас покажу, что имеется в вид
190: Смотрите, значит, получается, берётся у нас детекция, да, вот берётся детекция текстовая, мы создаём некий текстовый запрос, он находит кучу боксов, бокс, бокс, бокс, бокс, да, а потом эти box подаёт на вход запросу сэма. Помните?
191: Сэм на вход принимает боксы, также можно подать ему box точку либо текст, и он, по сути, просто как бы делает двухстадийный пайплайн сэм у нас сегментирует, сегментирует н раз, то есть столько, сколько найдено боксов, каждый раз подавая новый бокс на вход, и то есть.
192: Самым как бы вот такой двухстадийный пайплайн рождает нам инсан сегментацию, да, это, по сути, 2 тяжёлые трансформерные сетки воедино. Очень тяжёлый алгоритм, но работает для авторазметки, подойдёт для каких-то таких базовых Маломальских вещей.
193: Нормально, само собой, для продакшена возникают вопросы, да, то есть для мвп, для proof of concepts, для такого этапа исследований это самое то, когда вы уже делаете продакшн, зачастую нужно само собой под свои данные обучить свою собственную сетку, которая будет, во первых, меньше весить, которая будет быстрее.
194: Работать более рабано работать. Вот. Но для начальных исследований советую всегда начинать именно с зерошеллу. Значит тут довольно сложные установки. Попробуйте, может поищите в интернете, может найдёт
195: Получше вариант установок. В общем, я вот такие попробовал, у меня вроде сработало, но тут говорю с установка, я вам честно говоря, не подскажу, поэтому можете такие вопросы даже не спрашивать. Посмотрите в интернете я все использую готовое, то есть это не сам создавал. То есть вот максимум могу проконсуль.
196: Консультировать про ultra Литик, все, что с ним связано, и проконсультировать по вопросам, связанным с вот этой нашей библиотекой. Почта, йола, инфер, да, для визуализации. А вот по всяким другим библиотекам, к сожалению, это вот я сам, скажем так, делал некий ресерч в интернете, че нашёл, получилось вроде работает, значит, что
197: Я делаю, загружаю модель. Модель очень тяжёлая. Опять-таки я уже предупреждал, она прям безумно тяжёлая. Значит ждём, пока она загрузится. Вот у вас, скорее всего, будет первоначальный, прям длительный процесс загрузки. Далее какой будет принцип работы? Мы указываем текстовый запрос. Например, я тут указал
198: Запрос лампа, да, то есть 1 текстовый запрос и дальше указываю путь до изображения и давайте как раз-таки загрузим непосредственно фотографию и отобразим. То есть видите, вот сделаем имедж.
199: И, собственно, отображаем это изображение. Пока до сих пор у нас ещё модель загружается, придётся подождать.
200: Итак, вот он спустя минуту прогрузился, сразу предупреждаю, если что, вообще абсолютно все, что сегодня я показываю в видео туториале, да, то есть все вот эти вот ноутбуки по всем, по всем 3 основным задачам они есть у вас. Вот ссылочка.
201: В описании к видео, так что можете закачать там архив как раз-таки скачайте и посмотрите прям по этим джипи ноутбукам можете полазить, попробовать позапускать, посмотреть, потестировать, ну как минимум за то, что связано с yolo ворлдом я ручаюсь, потому что это прям
202: Использование наших библиотек. Вот, а все остальное, ну, попробуйте, поустанавливай её, вдруг у вас тоже получится, все заработает. То есть тут такой, знаете, нужно некий ресерч провести, чтобы все библиотеки у вас правильно встали. Лучше используйте пустое новое окружение и в пустом окружении закачивайте все библиотеки, тогда все заработает. Значит, вот так.
203: Логика, значит, мы указали запрос текстовый и просто передаём сюда как раз-таки модул предикт. Передаём сюда текстовый пром. Дальше конфиденс на нахождение боксов это как раз-таки по сути, конфиденс на модель граундинг Дина, то есть та, которая как йола ворлд,
204: Работает, да, то есть детектор промтовый. И дальше на сэм, по сути, мы указываем, да, вот у нас 2 трешхол, потому что 2, по сути, нейронные сетки под капотом. Вот мы указали, и вот так выглядит финальный результат. Довольно неплохо. Видите, он, во первых, находит, да, объект. А дальше смотрите, он прям сегментирует, мы видим здесь д,
205: Прям точный сегмент это вот именно сегментация каждого по отдельности объекта. Получается, это инстанс сегментация, то что вот наподобие ола сега, у меня есть тут тоже целый туториал о том, как подобные сетки обучаются. Давайте вот ради текста возьмём какой-нибудь новый запрос, давайте попросим текстовый запрос, хе.
206: Да, волосы посмотрим, справится ли он в поиске волос. Значит, ну, фотку загрузили, нажимаем и ждём, собственно, дальше по итогу обработки outputs. Вот в это вот файл. Result, точка, джипек будет загружен результат. То есть мы
207: Получим ещё вот здесь на компьютере финальную фотографию с результатом, помимо того, что она отобразится ещё у нас вот здесь, в gpt ноутбуке, опять-таки, я говорю, нейронка очень долго для real time. Ну это вообще, конечно, смешно не подойдёт, да, то есть сейчас у меня на видеокарте вот уже вычисления несколько, ну,
208: 5 секунд уже идут, и до сих пор ещё нет ответа, потому что 2 трансформерные сети, тяжёлые под капотом, друг за другом прогоняются.
209: Такс.
210: Итак, спустя минуту, 8 секунд, вот он получил результат. Довольно неплохо. Смотрите, он смог найти у нас как раз-таки все баундинбоксы, а потом в рамках этих баундингбоксов, прогнать их через сэм и найти прям конкретные сегментации. Так что качество
211: Действительно превосходное. Вот моделью можно пользоваться, но скорость, конечно, оставляет желать лучшего, тут ничего не скажешь, притом у меня есть видеокарта и на ней такое довольно медленное качество. Собственно. Вот и все. Мы с вами рассмотрели вообще все.
212: Существующие задачи, которые есть в сфере, связанной с короче, в сфере, связанной с zero шотами, поэтому в компьютерном зрении, думаю, эта тема для нас теперь уже стала максимально ясна и понятна.
213: Всегда вам будет понятно, что делать. Вот у вас какая-то появилась задача на работе или там, не знаю, по научке ресерчу там в рамках университета. Начинайте всегда с дершо, попробуйте на них потом уже, собственно, переходите к чему-то специфическому, вы сможете проверить ваши какие-то
214: Гипотезы. А дальше, если поняли, что да, классно работает, начинайте обучать свою сетку под конкретную задачу. Вот опять-таки мои видео туториал на YouTube. Надеюсь, вам с этим помогут. Спасибо всем за внимание, что если хотите поддержать наш канал, вот я прошу
215: Ничего больше, кроме как поставить лайк, у этого репозитория. Вот. Так что будет очень приятно. Если много людей, скажем так, попользуются этим репозиторием, поиспользуют эту библиотеку повизуализировать, быть, даже и попробуют сделать более умный, патчевый.
216: Вид инференса, увеличивающий количество детекций в десятки раз. Ну а также количество инстанс сегментаций тоже в разы. Вот обычный, например, инференс. А вот наша библиотека позволяет делать вот такой вот более интеллектуальный инференс. Всем удачи.