Tensorflow 关键点检测的实现
我正在研究关键点检测,特别是识别猫的左眼、右眼和嘴巴 例如,有一张猫的64x64图像 我在猫的左眼、右眼和嘴巴上画了一个圆圈 我为普通图像创建了ImageDataGenerator:Tensorflow 关键点检测的实现,tensorflow,opencv,machine-learning,keras,computer-vision,Tensorflow,Opencv,Machine Learning,Keras,Computer Vision,我正在研究关键点检测,特别是识别猫的左眼、右眼和嘴巴 例如,有一张猫的64x64图像 我在猫的左眼、右眼和嘴巴上画了一个圆圈 我为普通图像创建了ImageDataGenerator: train_datagen = ImageDataGenerator( featurewise_center=False, featurewise_std_normalization=False, width_shift_range=0.1, height_shift_ra
train_datagen = ImageDataGenerator(
featurewise_center=False,
featurewise_std_normalization=False,
width_shift_range=0.1,
height_shift_range=0.1,
zoom_range=0.2)
train_generator = train_datagen.flow_from_directory(
train_path,
target_size=(64, 64),
batch_size=32,
seed=1,
subset='training')
validation_generator = train_datagen.flow_from_directory(
val_path,
target_size=(64, 64),
batch_size=32,
seed=1,
subset='validation')
也适用于具有关键点的图像:
heatmap_train_datagen = ImageDataGenerator(
featurewise_center=False,
featurewise_std_normalization=False,
width_shift_range=0.1,
height_shift_range=0.1,
zoom_range=0.2)
heatmap_train_generator = heatmap_train_datagen.flow_from_directory(
heatmap_train_path,
target_size=(img_height, img_width),
batch_size=32,
seed=1,
subset='training')
heatmap_validation_generator = heatmap_train_datagen.flow_from_directory(
heatmap_val_path,
target_size=(img_height, img_width),
batch_size=32,
seed=1,
subset='validation')
然后把它们拉在一起:
zipped_train_generator = zip(train_generator, heatmap_train_generator)
我有这个模型:
Layer (type) Output Shape Param #
input_1 (InputLayer) [(None, 64, 64, 3)] 0
block1_conv1 (Conv2D) (None, 64, 64, 64) 1792
block1_conv2 (Conv2D) (None, 64, 64, 64) 36928
block1_pool (MaxPooling2D) (None, 32, 32, 64) 0
block2_conv1 (Conv2D) (None, 32, 32, 128) 73856
block2_conv2 (Conv2D) (None, 32, 32, 128) 147584
bottleneck_1 (Conv2D) (None, 32, 32, 160) 5243040
bottleneck_2 (Conv2D) (None, 32, 32, 160) 25760
upsample_1 (Conv2DTranspose) (None, 64, 64, 3) 1920
Total params: 5,530,880
Trainable params: 5,530,880
Non-trainable params: 0
我正在训练模型:
history = model.fit((pair for pair in zipped_train_generator),
epochs=30,
validation_data = (validation_generator,heatmap_validation_generator)
)
它工作了一个多小时,而且似乎从未停止过:
这是检测关键点的正确方法吗?如果没有,我哪里做错了?我应该如何实现它?为什么要将热图图像和cat图像压缩在一起?我也不认为在您想要的零件上画圆圈会有帮助。我建议创建一个数据集,在其中裁剪出左眼、右眼和嘴巴,并对它们进行标记,然后训练模型来识别这些部分。@yudhiesh这是从任务开始的:要以相同的方式增加输入和目标,应创建两个单独的生成器,然后你们可以把它们拉到一起。据我所知,我需要训练一个模型,它应该从普通图像生成热图(带点的图像),但我不知道如何实现它