Вы можете попробовать это, я использовал предварительно обученную сеть Xception, чтобы функционировать в качестве экстрактора функций. Вы можете поэкспериментировать с другими моделями Imagenet, такими как inception, resnet50 и т. Д. Использование предварительно обученной сети может помочь вам получить хорошие результаты даже при небольшом объеме данных. подробнее о трансферном обучении
from tensorflow.python.keras.layers import GlobalAveragePooling2D, Dense, Input
from tensorflow.python.keras.applications.xception import Xception
inp = Input(shape=(299, 299, 3))
base_model = Xception(include_top=False, input_tensor=inp, weights='imagenet')
y = base_model.layers[-1].output
y = GlobalAveragePooling2D()(y)
y = Dense(4, activation='sigmoid')(y)
model = Model(inputs=inp, outputs=y)
форма вывода [Нет, 4], что означает, что каждая метка состоит из 4 чисел
- x - x координата центра ограничительной рамки
- y - y координата центра ограничительной рамки
- w - ширина ограничительной рамки
- ч - высота ограничительной рамки
Метки масштабируются до значений от 0 до 1. (масштабируются по размерам изображения)
образец ограничительной рамки для изображения
[0.48, 0.4 , 0.58, 0.37]