Как мне удалось уменьшить размер классификатора болезней растений с 16 до 5 МБ с потерей точности менее 1%
Я работал над проектом по обнаружению болезней растений в рамках своих исследований в области периферийного ИИ, над проектом, где модель должна работать на Android-смартфоне фермера в деревне без интернета. Довольно быстро я столкнулся с проблемой, с которой рано или поздно сталкивается каждый специалист по машинному обучению.
Модель точная, но слишком большая и медленная для реального мира.
Обученная мной модель EfficientNetB0 достигла точности 96,33% на наборе данных PlantVillage с 15 классами. Отличный результат. Но модель весила около 16 МБ в формате float32. Для Android-смартфона среднего класса с нестабильным 4G-соединением и ограниченным объемом памяти это не идеально.
В этой статье я расскажу о том, что я сделал дальше. Я пропустил модель через три конвейера квантизации: FP16, INT8 и экспорт ONNX, измерил изменения точности, размера и задержки, а затем развернул лучший формат в Android-приложении, работающем полностью в автономном режиме.
Главный результат: квантизация INT8 уменьшила размер модели с 16 МБ до 5,25 МБ — снижение на 67% при потере всего 0,62% точности. Это тот компромисс, который делает реальное развертывание жизнеспособным.
Статья: https://apptractor.ru/info/articles/kak-mne-udalos-umenshit-razmer-klassifikatora-bolezney-rasteniy-s-16-do-5-mb-s-poterey-tochnosti-menee-1.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Post #4276
385

- 👀 1