У меня есть open‑source проект, который я поддерживаю долгое время, и всё это время несколько вещей мне не давали покоя. Во‑первых, мой проект был таким монолитом, с больше чем 50 нейронными сетями суммарно по всем задачам, и нужно продумывать много вещей помимо того, как сделать так, чтобы нейронные сети выгружались и загружались, при этом без краша домашнего ноутбука, а во‑вторых, каждая новая нейронка начинает использовать свои библиотеки и версии, что стало конфликтом и стопором интеграции и развития проекта. Новая модель липсинка требовала такой torch, от которого ломалась замена лица. Вывод из этого: не стоит держать все яйца в одной корзине.
И да, это была причина, из‑за которой я на долгое время проект забросил. И ещё я обнаружил, что очень много людей с macOS, которые бы хотели запустить проект, но не могли это сделать, так как он был рассчитан на Windows и Linux.
В начале августа этого года я вернулся к работе над проектом, решив реализовать новое архитектурное решение. Меня вдохновила идея плагинов, которые так давно есть в видеоредакторах, и из Flask‑приложения на Python и JavaScript я занялся полноценным видеоредактором на Qt и Python. И это мне позволило архитектурно сделать решение, при котором конфликты библиотек исключаются, пользователь ставит только то, что интересно, а также появляется свободный вход для всех, кто хотел бы в проект интегрировать свою нейронную сеть или даже сервис с API.
В этой статье будет инструкция, как создавать плагины для проекта…