Вопрос или проблема
Я археолог, работающий над алгоритмом распознавания изображений для классификации изображений зерен крахмала по их исходным растительным видам. Моя модель сейчас имеет 10 классов (растительных видов). Каждый класс обучается на 600 изображениях, затем проверяется на других 400 изображениях (1000 изображений/класс, всего 10k изображений). Я использую Matlab с предварительно обученной моделью resnet-18.
В целом, модель работает хорошо. Большинство растительных видов показывают точность валидации выше 95% с небольшими путаницами между близкородственными видами. Однако две неродственные группы создают мне очень серьезные проблемы. Луизианская немера имеет почти идеальный отзыв, но ее точность очень низка. Это в основном связано с неправильной классификацией лилии Филадельфии. Изображения для валидации лилии Филадельфии примерно в 75% случаев классифицируются как луизианская немера.
Я пытался удвоить размеры выборки (ранее я запускал resnet-18 с 300 обучающими и 200 валидационными изображениями на вид), но это не сильно изменило ситуацию. ВА лилии Филадельфии только улучшилась до 20%, а не до 15%.
(Аналогично, мирт ребристый неправильно классифицируется как лилия Филадельфии, но это гораздо менее критично (~30%). Я надеюсь, что все, что я сделаю для решения проблемы с луизианской немерой и лилией Филадельфии, можно будет применить для устранения путаницы между миртом ребристым и лилией Филадельфии.)
Есть ли какие-нибудь советы? Спасибо!
Ответ или решение
Для улучшения точности и полноты (precision/recall) многоклассового классификатора в рамках вашей задачи по классификации изображений крахмальных гранул для определения вида растения, можно рассмотреть несколько стратегий, которые помогут разрешить проблемы с неправильно классифицируемыми видами, такими как Louisiana broomrape и Philadelphia lily.
1. Анализ данных и предварительная обработка
- Балансировка классов: Поскольку одной из проблем является низкая точность Louisiana broomrape, стоит рассмотреть балансировку классов. Усиление изображений Philadelphia lily может помочь модели лучше различать данные виды.
- Аугментация данных: Используйте зеркалирование, повороты, изменение яркости и контраста, чтобы искусственно увеличить объем данных для Philadelphia lily, что поможет улучшить модели при обучении.
2. Улучшение модели
- Финетюнинг сети: Поскольку вы используете ResNet-18, настройте веса модели на ваших данных. Для этого пропустите несколько начальных слоев, чтобы сохранить обобщающие свойства, и измените последние слои на свои классы.
- Изменение структуры сети: Рассмотрите возможность добавления дополнительных слоев между предобученной моделью и выходными слоями для улучшения обучения на специфических для вашего задания данных.
3. Оптимизация гиперпараметров
- Изменение гиперпараметров: Попробуйте различные значения скорости обучения, а также измените параметры регуляризации (например, dropout) для уменьшения переобучения.
- Использование различных методов оптимизации: Попробуйте использовать Adam или RMSprop, которые могут лучше справляться с проблемами локальных минимумов.
4. Изменения в подходе к классификации
- Многоклассовые подходы: Вместо простого подхода "один против всех" рассмотрите возможность внедрения методов, таких как Softmax или использование SVM для отдельных пар видов, чтобы улучшить классификацию между схожими видами.
- Кросс-валидация: Используйте кросс-валидацию для получения более точных оценок производительности модели и оптимизации модели на основе результатов.
5. Анализ ошибок и дополнение данных
- Ошибка анализа: Проведите анализ ошибок, чтобы понять, почему ваши модели ошибаются и в каких случаях они неправильно классируют области. Если возможно, обозначьте и аннотируйте изображения, чтобы понять специфику данных.
- Изображения-образцы: Используйте примеры неправильно классифицированных изображений для обучения, чтобы явно указать модели, что именно нужно избегать.
6. Постобработка результатов
- Пороговое значение для классификации: Проверьте различные пороговые значения для определения того, как результат классификации может изменить расстановку вероятностей.
- Использование классового веса: Установите больший вес для классов, которые вы хотите улучшить.
Заключение
Применение этих стратегий в рамках существующей архитектуры и процесса обучения может помочь вам улучшить precision/recall вашего классификатора. Важно, чтобы работа над проблемой была постоянной, основанной на мониторинге производительности и тестировании различных подходов. Убедитесь, что каждая итерация вашего процесса обучения максимально информативна и позволяет вам извлекать ценные данные для дальнейшего улучшения вашей модели.