Здравствуйте, Nuzhny, Вы писали:
N>Я работаю около, фактически являюсь пользователем: беру готовый фреймворк, готовую архитектуру, а там дальше уже дообучить под себя, интегрировать фреймворк к себе в систему, сделать максимально параллельный пайплайн, оптимизировать всё вокруг. Там пока что достаточно и чисто алгоритмических задач, которые нейросети не могут оптимально (пока не могут?) взять на себя: банальный NMS, трекинг, многокамерность, 3D компьютерное зрение и т.д.
Подожди еще 3-4 года, пока LSTM сети добавят к сверточным и сделают тебе американцы треккинг — юудешь юзать, каки положено местному машин леннингу.
Здравствуйте, Je suis Mamut, Вы писали:
JSM>ну под "там" я имел ввиду внутри, конечно, а не вокруг JSM>если меня, например, возьмут какую-то вебню прикручивать к DL — пойду с удовольствием
На уровне прикручивать там всё просто. Ставишь pytocrh или tensorflow (pip install ... обычно достатояно). Затем подсовываешь обыченную модель (их уже много в инете валяется). Всё, дальше тупо юзаешь одну фукнцию на питоне. Вот ты и машин лемминг.
В общем море туториалов на в инете, как всё это сделать в 3-10 строк кода.
Здравствуйте, Vzhyk2, Вы писали:
N>>Тогда скажи, что именно тебя в этом удивляет. Какая часть сети по распознаванию, например, или сегментации является загадкой. Свёртки? Полносвязные слои? Что? V>>То бишь, что там внутри не знает только ну совсем ленивый и тупой, а вот почему такая простая хрень работает — вот это удивительно.
Странно: теория, почему это всё работает известна давно. Много делается инструментов для визуализации и интерпретируемости моделей. Начни, например, с сети Ле Куна 1998 года для распознавания символов. Она простая и разобрана до винтиков.
Здравствуйте, Vzhyk2, Вы писали:
V>Подожди еще 3-4 года, пока LSTM сети добавят к сверточным и сделают тебе американцы треккинг — юудешь юзать, каки положено местному машин леннингу.
Оно уже сделано и по качеству превосходит классические подходы: CenterTrack, FairMOT. Всё это хорошо, работает, но пока не практично.
Здравствуйте, Vzhyk2, Вы писали:
V>На уровне прикручивать там всё просто. Ставишь pytocrh или tensorflow (pip install ... обычно достатояно). Затем подсовываешь обыченную модель (их уже много в инете валяется). Всё, дальше тупо юзаешь одну фукнцию на питоне. Вот ты и машин лемминг. V>В общем море туториалов на в инете, как всё это сделать в 3-10 строк кода.
А отом выяснится, что работает медленно и начнёшь разбираться с TensorRT, OpenVINO, ffmpeg и всё на C++. Или же в другую сторону: квантование моделей, prunning, следить, чтобы при этом качество не упало и т.д.
Здравствуйте, Nuzhny, Вы писали:
N>Странно: теория, почему это всё работает известна давно. Много делается инструментов для визуализации и интерпретируемости моделей. Начни, например, с сети Ле Куна 1998 года для распознавания символов. Она простая и разобрана до винтиков.
Вот даже интересно, почему ты отвечаешь всё время на вопрос "Как?", который тебе никто не задавал и не можешь понять что вопрос "Почему?".
Здравствуйте, Nuzhny, Вы писали:
N>Оно уже сделано и по качеству превосходит классические подходы: CenterTrack, FairMOT. Всё это хорошо, работает, но пока не практично.
Если превосходит, то почему не практично? А что практично?
Здравствуйте, Nuzhny, Вы писали:
N>А отом выяснится, что работает медленно и начнёшь разбираться с TensorRT, OpenVINO, ffmpeg и всё на C++. Или же в другую сторону: квантование моделей, prunning, следить, чтобы при этом качество не упало и т.д.
Мда, твой ответ в точности поддтверждает то, что я думаю о постсовковом машин лемминге. Отличаются только некоторые группы в РФ в лучшую сторону — они таки занимаются машинным обучением и придумывают свои подходы или улучшают чужие.
Здравствуйте, Vzhyk2, Вы писали:
N>>Странно: теория, почему это всё работает известна давно. Много делается инструментов для визуализации и интерпретируемости моделей. Начни, например, с сети Ле Куна 1998 года для распознавания символов. Она простая и разобрана до винтиков. V>Вот даже интересно, почему ты отвечаешь всё время на вопрос "Как?", который тебе никто не задавал и не можешь понять что вопрос "Почему?".
Я не отвечаю ни на вопрос "как?", ни на вопрос "почему?". Я тебе ничего не объясняю и не пытаюсь, а лишь показываю путь. Ещё раз повторю, что на вопрос "почему?" ответ давно известен и границы применимости нейросетей показаны: что какие-то нейросетки Тьюринг полны, что другие есть апроксиматоры гладких функций и т.д. Вопрос "почему?" обсасывается с самого начала нейросетей, когда показывают какой сетки достаточно для моделирования XOR и дальше по усложнению.
Я так понял, что это у тебя какая-то проблема, что не можешь понять почему они работают и пытаюсь помочь.
Здравствуйте, Vzhyk2, Вы писали:
N>>Оно уже сделано и по качеству превосходит классические подходы: CenterTrack, FairMOT. Всё это хорошо, работает, но пока не практично. V>Если превосходит, то почему не практично? А что практично?
Здравствуйте, Vzhyk2, Вы писали:
N>>А отом выяснится, что работает медленно и начнёшь разбираться с TensorRT, OpenVINO, ffmpeg и всё на C++. Или же в другую сторону: квантование моделей, prunning, следить, чтобы при этом качество не упало и т.д. V>Мда, твой ответ в точности поддтверждает то, что я думаю о постсовковом машин лемминге. Отличаются только некоторые группы в РФ в лучшую сторону — они таки занимаются машинным обучением и придумывают свои подходы или улучшают чужие.
Просто ты не можешь отличить исследователя от инженера и пытаешься последних назвать обезьянками. Бывает.
Здравствуйте, Tai, Вы писали:
Tai>Как думаете, почему взлетел Deep Learning (распознавание картинок, логические игры, беспилотные машины), хотя что там конкретно внутри — никто не знает.
За 2008-2012 при переходе на GPU цена одной операции с числом типа float, при характерных типах действий, упала примерно в 1000 раз — всё за счёт GPGPU.
Дальше типовая инерция IT: 5 лет — на хайп, 10 лет — на широкое освоение.
Дальше такого резкого падения нет и хайп останавливается. Ждём следующего успеха железа.
Здравствуйте, Nuzhny, Вы писали:
NN>Медленно и узкоспециализированно.
Быстрых и хоть чуть качественных я не видел. Быстрые — это тупые на базе IOU простейшего и безумно некачественные. Если хочешь чуть покачественнее, то тут нейронки лучше уже работают.
Узкоспециализирована — переобучи на большей базе на разные объекты, в чем проблема?
Здравствуйте, Vzhyk2, Вы писали:
V>Быстрых и хоть чуть качественных я не видел. Быстрые — это тупые на базе IOU простейшего и безумно некачественные. Если хочешь чуть покачественнее, то тут нейронки лучше уже работают. V>Узкоспециализирована — переобучи на большей базе на разные объекты, в чем проблема?
Ха! Переобучи. Молодой человек шутить изволит. И всё равно будет медленно.
Методов для multiple object tracking'а придумано много, это проблема комплексная, не исчерпывающаяся одним твоим IoU. В 2020 году продолжают выходить статьи по тому, как с помощью графов быстро и робастно решать проблему ассоциации с перекрытием, пропажей и оявлением объектов. Пока эта проблема больше из computer science, чем из machiene learning области.
Посмотрим, что будет дальше
Здравствуйте, Nuzhny, Вы писали:
N>Ха! Переобучи. Молодой человек шутить изволит. И всё равно будет медленно.
В чем проблема у тебя переобучить модель. Подходы с приличным качеством не на нейронках еще медленнее. К сведению инженеру.
N>Методов для multiple object tracking'а придумано много, это проблема комплексная, не исчерпывающаяся одним твоим IoU. В 2020 году продолжают выходить статьи по тому, как с помощью графов быстро и робастно решать проблему ассоциации с перекрытием, пропажей и оявлением объектов. Пока эта проблема больше из computer science, чем из machiene learning области. N>Посмотрим, что будет дальше
Ладно, надоело. Решал я эту проблему не нейронками с MOTA около 70. Но с такими извращениями из стандартных подходов, что таки полез в нейронки. Твои ссылки глянул — так себе решения.
Для решения этой задачки нужна полноценая LSTM сетка на фичах из CNN — аналогично сеткам для распоpнавания речи. C другой стороны HMM сработают, но они сильно геморнее в реализации, чем нейронные сетки.
И тебе к сведению нейронка — это и есть грав, причем направленный.
Здравствуйте, Nuzhny, Вы писали:
N>Я работаю около, фактически являюсь пользователем: беру готовый фреймворк, готовую архитектуру, а там дальше уже дообучить под себя, интегрировать фреймворк к себе в систему, сделать максимально параллельный пайплайн, оптимизировать всё вокруг. Там пока что достаточно и чисто алгоритмических задач, которые нейросети не могут оптимально (пока не могут?) взять на себя: банальный NMS, трекинг, многокамерность, 3D компьютерное зрение и т.д.
Все никак руки не дойдут спросить на одс, спрошу тут: что значит "дообучить" сеть?
Т.е. есть уже готовая сетка ( с соотв. весами), я добавляю какие-то свои скрытые слои
и обучаю уже только свои слои, так? Пример, мне надо распознавать кота в сапогах -- я беру
готовую сеть, уже обученную на котах, добавляю туда слой для распознавания шляп и готово.
Это так работает или нет? Т.е. как кусочки Лего, достраиваю\уточняю слой за слоем.
Максимально общий слой -- коты, далее какой-то специфичный слой для распознавания сапог и т.д.
Дообучение так работает?
Здравствуйте, Sharov, Вы писали:
S>Все никак руки не дойдут спросить на одс, спрошу тут: что значит "дообучить" сеть?
Всё тупо и просто. Берешь обученную сетку на некоем датасете. И тупо вызываешь train на своем датасете. Она стартует не со случайных весов, а уже с некоторой точки в их пространстве. все верят, что если сначала обучили на некоем большом, а потом дообучили на своем, то она распознавать в твоих условиях будет лучше. Верят, потому что доказательтсва не существует.
В общем аналогично тому, как GMM построения стартуют с результатов векторного квантования.
Ну и проблема в том, что обучить большую и рабочую сетку с нуля на игровой карточке можно, но за очень очень долго, поэтому берут предобученные гуглами и мордокнигами на своих мощных серверах на imаgenet.
S>Т.е. есть уже готовая сетка ( с соотв. весами), я добавляю какие-то свои скрытые слои S>и обучаю уже только свои слои, так?
Нет, обучаешь все, но свои стартуешь с чего хочешь, а остальные с предобученных. Но можешь и только свои, остальные заморозить (запретить модификации их параметров и весов).
S>Пример, мне надо распознавать кота в сапогах -- я беру S>готовую сеть, уже обученную на котах, добавляю туда слой для распознавания шляп и готово. S>Это так работает или нет? Т.е. как кусочки Лего, достраиваю\уточняю слой за слоем. S>Максимально общий слой -- коты, далее какой-то специфичный слой для распознавания сапог и т.д.
Не нужно никаких слоев. Или добавляешь класс сапоги, чуть модифицируешь для этого сетку (для некоторых слоев количество классов важно) или тупо дообучаешь на свой датасет котов с сапогами.
З.Ы. И да для всего, что я напсиал лтебе по-русски придумано новая терминология, которая дублируют ту, что юзали ранее в задачах оптимизации. По сути, если решал ранее задачи оптимизации, обработки сигналов и видео, то всё твое обучение — это изучение этой новоявленой терминологии и сопоставление ее с классической.
Здравствуйте, Vzhyk2, Вы писали:
V>Здравствуйте, Sharov, Вы писали:
Что такое нейронная сетка. Это направленный граф из функций со своими параметрами. Обучение сетки — это подбор параметров этих функций, что бы ошибка была минимальной. Все.
Сверточные потому, что основной набор функциё — это свертки с матрицей весов и вектор смещений и еще некоторые.
Основная фишка работающих нейронок, что для них есть простые функции вычисления градиента (обратный ход по графу) для градиентного спуска.
Здравствуйте, Sharov, Вы писали:
S>Все никак руки не дойдут спросить на одс, спрошу тут: что значит "дообучить" сеть? S>Т.е. есть уже готовая сетка ( с соотв. весами), я добавляю какие-то свои скрытые слои S>и обучаю уже только свои слои, так? Пример, мне надо распознавать кота в сапогах -- я беру S>готовую сеть, уже обученную на котах, добавляю туда слой для распознавания шляп и готово. S>Это так работает или нет? Т.е. как кусочки Лего, достраиваю\уточняю слой за слоем. S>Максимально общий слой -- коты, далее какой-то специфичный слой для распознавания сапог и т.д. S>Дообучение так работает?
Не обязательно (часто и не желательно) добавлять слои в сетку. Вполне возможно, что и старая сеть справится с твоей задачей.
Ей просто никогда не показывали сапоги на котах, поэтому ее веса определяют только котов (без сапог).
Достаточно взять готовую сетку, загрузить туда веса, и продолжить обучение — подсовывать ей котов, но уже с сапогами.
Через некоторое время веса в сетке поменяются — она научится определять эти сапоги на котах.
Здравствуйте, Буравчик, Вы писали:
Б>Не обязательно (часто и не желательно) добавлять слои в сетку.
Кстати, а вот чего хотелось бы почитать. Это принципы построения сеток для разных задач, доказательства того сколько и каких слоев нужно и как их связывать в графе и почему и для каких задач.
Пока же то, что я видел — это шаманство. Вот я тут игрался долго и придумал вот такую сетку и она работает.