{"id":31754623,"url":"https://github.com/axonstan/2025-spring-vk-ml","last_synced_at":"2026-05-15T22:03:12.323Z","repository":{"id":275506494,"uuid":"925174529","full_name":"axonstan/2025-spring-vk-ml","owner":"axonstan","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-06T14:44:27.000Z","size":4095,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-21T18:05:13.603Z","etag":null,"topics":["cv","logotypes","vk"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/axonstan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-31T11:26:27.000Z","updated_at":"2025-02-06T14:44:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"66b2b428-85f2-4443-ad2e-5968dbec9cf2","html_url":"https://github.com/axonstan/2025-spring-vk-ml","commit_stats":null,"previous_names":["podyapolskiy/2025-spring-vk-ml","axonstan/2025-spring-vk-ml"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/axonstan/2025-spring-vk-ml","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axonstan%2F2025-spring-vk-ml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axonstan%2F2025-spring-vk-ml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axonstan%2F2025-spring-vk-ml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axonstan%2F2025-spring-vk-ml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/axonstan","download_url":"https://codeload.github.com/axonstan/2025-spring-vk-ml/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axonstan%2F2025-spring-vk-ml/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001943,"owners_count":26083226,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cv","logotypes","vk"],"created_at":"2025-10-09T18:21:51.757Z","updated_at":"2025-10-09T18:21:52.972Z","avatar_url":"https://github.com/axonstan.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ML Developer\n\nПрофильное задание на стажировку в ВК.\n\n**Примечание:**\n\u003e Объяснения и код могут содержать смешанный стиль комментариев как на русском и на английском. Я привык писать всё на английском, но понимаю, что проверящий скорее всего ожидает русский и в компании самой возможно используется русский.\n\n## Моё понимание данного \"ТЗ\"\n\n- Дан корпус данных, где каждой компании соответствует пара образцов логотипов\n- На вход подаётся случайный **кроп фото** и название **искомой компании**\n- Задача - вывести вероятность, что на кропе логотип искомой компании\n\nДалее можно предложить 2 основных подхода:\n\n1. **SIFT (Scale-Invariant Feature Transform)**\n\n    Из названия компании, мы можем извлечь все доступные образцы и сравнить их с кропом\n\n    **Плюсы:**\n\n    - Не зависит от цвета, так как все фичи берутяся из grayscaled\n    - Не нужен большой объём данных, хватит пары образцов\n\n    **Минусы:**\n\n    - Хуже работает в случае большого количества логотипов на одном кропе\n    - O(N * M) - сложность, что довольно тяжело, если применять на каждый кадр видео\n\n2. **YOLO (You Only Look Ones)**\n\n    Дообучить модель семейства yolo для уже задачи детекции логотипа, разделяя датасет на классы, соответсвующие компаниям\n\n    **Плюсы:**\n\n    - O(n * k) - сложность, проходка по обученной нейросети гораздо быстрее, что позволяет использовать её не только на фото, но и на видео\n    - Лучше справляется с генераций множества bounding box для разных логотипов на фото\n    - Так как обучается на задачи детекции, выводит информацию не только о классах, но и их расположении, что может быть полезно для других бизнес задач\n\n    **Минусы:**\n\n    - Нужно много данных, пары образцов не хватит\n    - Становиться всё сложнее при возрастании количества классов\n    - При добавлении новых компаний придётся дообучать и собирать новые данные, а старые классы могут быть неактуальны\n\n\n\n## Данные\n\nДатасетов, имеющих размеченные данные под логотипы Российских компаний, я, увы, не нашёл.\nПоэтому решил остановиться на предложенном в описании LogoDet-3K.\n\nИз-за того, что его использование неудобно через [paperwithcode.com](https://paperswithcode.com/dataset/logodet-3k), я решил потратить время на то, чтобы сделать этот датасет более удобным доступным.\n\nТаким образом, теперь датасет можно удобно использовать через [huggingface.com](https://huggingface.co/datasets/PodYapolsky/LogoDet-3K), где я рассписал минимальные поля и базовое использование.\n\n\n[![Dataset on huggingface](https://huggingface.co/datasets/huggingface/badges/resolve/main/dataset-on-hf-md.svg)](https://huggingface.co/datasets/PodYapolsky/LogoDet-3K)\n\n## Заключение\n\n#### SIFT\n\nПодход показал, что способен нормально различать паттерны с разного рода искажениями и трансформациями над изображениями.\n\n#### YOLO\n\n[ЕСЛИ ЧИТАЕТЕ ЭТО, ЗНАЧИТ ЭКСПЕРИМЕНТ ПОКА НЕ УДАЛОСЬ ПРОВЕСТИ]\n\nПодход должен сработать, точность может быть меньше, зато скорость будет выше и будет возможность детектировать положение логотипа на фото (или видео).\n\n- [Logo Detection with YOLO](https://github.com/tadowney/logo_detection)\n- [Deep Learning for Logo Detection](https://arxiv.org/pdf/2210.04399)\n- [Trinity-Yolo: High-precision logo detection in the real world](https://www.researchgate.net/publication/370096932_Trinity-Yolo_High-precision_logo_detection_in_the_real_world)\n\n\n#### ORB\n\n[ЕСЛИ ЧИТАЕТЕ ЭТО, ЗНАЧИТ ЭКСПЕРИМЕНТ ПОКА НЕ УДАЛОСЬ ПРОВЕСТИ]\n\nБолее совершенный дескриптор точек.\n\n#### Bag of vision words\n\n[ЕСЛИ ЧИТАЕТЕ ЭТО, ЗНАЧИТ ЭКСПЕРИМЕНТ ПОКА НЕ УДАЛОСЬ ПРОВЕСТИ]\n\nМенее точный подход, который может является одним из бейзлайнов\n\nДанные о позиции мы точно потеряем, но это метод прост в реализации.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxonstan%2F2025-spring-vk-ml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faxonstan%2F2025-spring-vk-ml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxonstan%2F2025-spring-vk-ml/lists"}