Skip to content

sabeninvv/Curd2DNet

Repository files navigation

Пример работы на GoogleColab

Curd2DNet

Network for the classification of curds by foto

Краткое описание

На вход сеть принимает:

  • Тензор размерности (150,150,2).

Обработка тензора:

  • 2 ветки Conv2D. В 1 ветке в Conv2D ядро, геометрии типа квадрат. Во 2 ветке - прямоугольник.
  • После слияния concatenate, сжимается пространство и усредняется с помощью GlobalAveragePooling2D
  • На слоях Conv2D используется функция активации 'relu'. На Dense - 'softmax'
  • Для увеличения скорости обработки тензора и поиска зависимостей, применены слои MaxPooling2D(2). 4 раза в каждой ветке (150->9)
  • Для увеличения скорости обработки тензора, применены слои BatchNormalization
  • Для сокращения переобучения сети - Dropout

На выходе: Softmax на 5 классов

Архитектура сети

Image alt

Предобработка данных

Изображение в тензор:

  • Загрузка цветного изображения
  • Кадрирование изображения. Сравнивается высота и ширина, проигравший размер "вытягивается" без изменения размера изображения, "новая площадь" заполняется чёрным.
  • Изменение размера до 150х150
  • Конвертирование изображение в градации серого
  • Перевод изображение в тензор (150,150,2)
  • Запись всех тензоров в Pandas DataFrame

Балансировка данных:

  • "Перемешивание" данных в каждом классе, используя np.random.shuffle
  • Сравнение количества тензоров в каждом классе.
  • Вычисление класса с минимальным количеством тензоров.
  • "Усечение" количества тензоров во всех классах до минимального.
  • Нормализация данных в тензорах, делением на 255.

Параметры обучения

  • Для всех этапов: batch_size=64, loss='sparse_categorical_crossentropy', metrics=['accuracy'], фильтр по val_accuracy.
  • 1 этап: epochs=100, optimizer=Adam(1e-3)
  • 2 этап: epochs=50, optimizer=Adam(1e-4)
  • 3 этап: epochs=50, optimizer=Adam(1e-5)

Результаты:

  • val_acc: 0.9240
  • acc: 0.9985
  • val_loss: 0.4762
  • loss: 0.0060
  • Confusion Matrix: All по горизонтали - количество данных, остальные ячейки - % predict. Те. сколько изображений этого класса были отнесены сетью к данному классу по отношению к общему кол-ву изображений класса.
Пример: 
В тестовой выборке 5 классов, по 100 изображений в каждом классе.

Pred 	0 	 1 	   2 	   3 	   4 	   All
True 						
0 	92.0 	1.0 	3.0 	1.0 	3.0 	100 %
1 	0.0 	97.0 	0.0 	3.0 	0.0 	100 %
2 	3.0 	1.0 	95.0 	0.0 	1.0 	100 %
3 	1.0 	5.0 	1.0 	90.0 	3.0 	100 %
4 	5.0 	2.0 	3.0 	2.0 	88.0 	100 %
All    101 	106 	102 	 96 	 95 	 500
Пример: 
В тестовой выборке 5 классов, по 871, 1042, 796, 958, 978 изображений соответственно в каждом классе.

Pred 	0 	1 	2 	3 	4 	All
True
0 	98.509 	0.229 	0.688 	0.115 	0.459 	100 %
1 	0.000 	99.122 	0.293 	0.585 	0.000 	100 %
2 	0.000 	0.000 	100.0 	0.000 	0.000 	100 %
3 	0.103 	1.643 	0.616 	96.920 	0.719 	100 %
4 	1.103 	0.802 	0.401 	0.702 	96.991 	100 %
All 	871 	1042 	796 	958 	978 	4645

About

Network for the classification of curds by foto

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors