На днях у нас прошёл вебинар «Первые шаги в Deep Learning и Computer Vision. Учимся распознавать героев аниме» с Анастасией Белозеровой — нашей преподавательницей и Head of Research Projects в VisionLabs.
Вы задали много интересных и глубоких вопросов. Анастасия подготовила на них ответы, делимся ⬇️
— Правда ли, что в Huawei всё пишут с нуля, без использования фреймов?
Насколько я знаю — да. Большие компании часто не используют open-source, а создают своё. Так делают и в Яндексе, и в Сбере, и в Huawei.
— Какие фреймворки вы используете и какие методы применяете? Пишете сетки с нуля или используете готовые модели YOLO, PyTorch / TensorFlow + Keras?
YOLO не используем. Для задач attribute recognition / metric learning / license plate recognition / tracking пишем свои репозитории на PyTorch. Для детекции используем mmdetection.
— Я работаю в крупной иностранной компании. Являюсь инженером по биомедицинской технике в направлении компьютерной томографии. Занимаюсь обучением врачей работе на томографах. В прошлом году прошёл курс ML engineering (совместный с ИТМО). Хочу дальше развиваться, чтобы попасть в сферу медицинского AI. Сфера довольно узкая. Насколько этот курс поможет мне в этом?
Если хотите делать CV в медицине — нужно начать с базового CV. Сегментация — это уже продвинутая тема, к ней нужно прийти через фундамент. Курс помогает именно с этим — закладывает основу.
— Распознаёте ли квадратные номера?
Да. И отличаем мотоциклетные от тракторных :)
Более того, у Хорватии номера могут быть вертикальными — из трёх строк, и с ними мы тоже справляемся. И даже с номерами США, где можно заказать себе надпись "I ❤️ CV" в качестве номера.
— Каждый нейрон — линейная модель? И как подбирается число слоёв в сетке?
Да, нейрон является линейной моделью. Нелинейность появляется только за счёт функции активации.
А количество слоёв и нейронов в каждом слое подбирается эмпирически, фиксировано только число в последнем слое :)
— Когда лучше использовать sigmoid, а когда tanh?
Sigmoid — одна из первых функций активации, и она очень удобна своей областью значений — [0,1]. Поэтому при решении задачи multi-label-классификации её, как правило, используют в последнем слое сети, чтобы выход каждого нейрона интерпретировать как вероятность.
Но у неё есть большой минус — находясь внутри сети, она провоцирует затухание градиентов и мешает сети эффективно учиться. У Tanh такой проблемы нет. Подробнее рекомендую почитать
хорошую статью на Хабре.
— Почему ресайз именно 64×64?
Ресайз к 64×64 в данном случае ничем специальным не обусловлен. Поскольку инициализации в сети у нас не было, размеры можно варьировать и выбирать те, которые устраивают по скорости и дают хорошее качество.
— Интересно, уходит ли уже математика нейронных сетей на какой-то недосягаемый уровень? Такой, на котором эту математику будут понимать только несколько десятков человек во всём мире.
Если вы попробуете разобраться досконально в обосновании работоспособности лоссов для диффузионных сетей, то и правда может появиться ощущение недосягаемости :)
— Что такое ONNX, TensorRT, OpenVINO и так далее?
Коротко говоря: это фреймворки для эффективного инференса нейронных сетей. В них вы сеть не сможете обучить, но сможете уже при тестовой работе в продукте очень эффективно выполнять все операции внутри сети. Это позволяет работать быстро — чего все пользователи и хотят.
Какие темы хотите разобрать подробнее? Пишите в комментариях!