Skip to content

PodYapolskiy/2025-spring-vk-ml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ML Developer

Профильное задание на стажировку в ВК.

Примечание:

Объяснения и код могут содержать смешанный стиль комментариев как на русском и на английском. Я привык писать всё на английском, но понимаю, что проверящий скорее всего ожидает русский и в компании самой возможно используется русский.

Моё понимание данного "ТЗ"

  • Дан корпус данных, где каждой компании соответствует пара образцов логотипов
  • На вход подаётся случайный кроп фото и название искомой компании
  • Задача - вывести вероятность, что на кропе логотип искомой компании

Далее можно предложить 2 основных подхода:

  1. SIFT (Scale-Invariant Feature Transform)

    Из названия компании, мы можем извлечь все доступные образцы и сравнить их с кропом

    Плюсы:

    • Не зависит от цвета, так как все фичи берутяся из grayscaled
    • Не нужен большой объём данных, хватит пары образцов

    Минусы:

    • Хуже работает в случае большого количества логотипов на одном кропе
    • O(N * M) - сложность, что довольно тяжело, если применять на каждый кадр видео
  2. YOLO (You Only Look Ones)

    Дообучить модель семейства yolo для уже задачи детекции логотипа, разделяя датасет на классы, соответсвующие компаниям

    Плюсы:

    • O(n * k) - сложность, проходка по обученной нейросети гораздо быстрее, что позволяет использовать её не только на фото, но и на видео
    • Лучше справляется с генераций множества bounding box для разных логотипов на фото
    • Так как обучается на задачи детекции, выводит информацию не только о классах, но и их расположении, что может быть полезно для других бизнес задач

    Минусы:

    • Нужно много данных, пары образцов не хватит
    • Становиться всё сложнее при возрастании количества классов
    • При добавлении новых компаний придётся дообучать и собирать новые данные, а старые классы могут быть неактуальны

Данные

Датасетов, имеющих размеченные данные под логотипы Российских компаний, я, увы, не нашёл. Поэтому решил остановиться на предложенном в описании LogoDet-3K.

Из-за того, что его использование неудобно через paperwithcode.com, я решил потратить время на то, чтобы сделать этот датасет более удобным доступным.

Таким образом, теперь датасет можно удобно использовать через huggingface.com, где я рассписал минимальные поля и базовое использование.

Dataset on huggingface

Заключение

SIFT

Подход показал, что способен нормально различать паттерны с разного рода искажениями и трансформациями над изображениями.

YOLO

[ЕСЛИ ЧИТАЕТЕ ЭТО, ЗНАЧИТ ЭКСПЕРИМЕНТ ПОКА НЕ УДАЛОСЬ ПРОВЕСТИ]

Подход должен сработать, точность может быть меньше, зато скорость будет выше и будет возможность детектировать положение логотипа на фото (или видео).

ORB

[ЕСЛИ ЧИТАЕТЕ ЭТО, ЗНАЧИТ ЭКСПЕРИМЕНТ ПОКА НЕ УДАЛОСЬ ПРОВЕСТИ]

Более совершенный дескриптор точек.

Bag of vision words

[ЕСЛИ ЧИТАЕТЕ ЭТО, ЗНАЧИТ ЭКСПЕРИМЕНТ ПОКА НЕ УДАЛОСЬ ПРОВЕСТИ]

Менее точный подход, который может является одним из бейзлайнов

Данные о позиции мы точно потеряем, но это метод прост в реализации.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks