Навыки:
- Библиотека keras/TensorFlow
- Сверточные нейронные сети
- Работа с изображениями разного размера
- Нелинейная топология сети: применение связей residual connections для повышения точности
- Автоматический подбор парметров архитектуры сети (число слоев, количество фильтров в каждом слое, размер ядра свертки) с помощью байесовского алгоритма и алгоритма HyperBand.
Цель проекта – обучить нейронную сеть различать зараженные и не зараженные клетки.
Источник данных
Все изображения имеют разный размер, поэтому на полносвязные слои их сразу подавать нельзя. Поскольку фон везде черный можно было бы добавить пиксели по краям, но это привело бы к увеличению объема данных без добавления полезной информации, поэтому в использованной архитектре сначал идут сверточные слои, затем слой с глобальным объединением (global average pooling) и после него полносвязные слои.
Для подбора параметров архитектуры (число слоев, количество фильтров в каждом слое, размер ядра свертки) использовал поиск с помощью keras_tuner. Пробовал два алгоритма: байесовский поиск и HyperBand. Результаты похожие. Оказалось, что при числе слоев более шести Google Colab падает, поэтому часть поиска делал вручную.
Далее повысил точность классификации с помощью более сложной топологии: связи residual connections. Параметры также оптимизировал с помощью байесовского поиска.
Пытался добавить нормализацию (batch normaization) в каждый сверточный слой, но точность снизилась.
|
|