我是OpenCV和Tensorflow的新手。我使用Tensorflow 2.0创建了一个分类器,以检测26种美国手语字母。
这是CNN代码。
# Designing our CNN
i = Input(shape=(IMAGE_SIZE[0],IMAGE_SIZE[0],3))
x = Conv2D(32, (3, 3), activation='relu', padding='same')(i)
x = BatchNormalization()(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
x = BatchNormalization()(x)
x = MaxPooling2D((2, 2))(x)
# x = Dropout(0.2)(x)
x = Conv2D(64, (3, 3), activation='relu', padding='same')(x)
x = BatchNormalization()(x)
x = Conv2D(64, (3, 3), activation='relu', padding='same')(x)
x = BatchNormalization()(x)
x = MaxPooling2D((2, 2))(x)
# x = Dropout(0.2)(x)
x = Conv2D(128, (3, 3), activation='relu', padding='same')(x)
x = BatchNormalization()(x)
x = Conv2D(128, (3, 3), activation='relu', padding='same')(x)
x = BatchNormalization()(x)
x = MaxPooling2D((2, 2))(x)
# x = Dropout(0.2)(x)
# x = GlobalMaxPooling2D()(x)
x = Flatten()(x)
x = Dropout(0.2)(x)
x = Dense(1024, activation='relu')(x)
x = Dropout(0.2)(x)
x = Dense(1024, activation='relu')(x)
x = Dropout(0.2)(x)
x = Dense(K, activation='softmax')(x)
model = Model(i, x)
这里是完整代码的链接。https://colab.research.google.com/drive/1_9MVqaRpk5UnZxc8l4OC78JaHlXkAwrL
这是图像的预览分类。
我能够保存h5文件,该文件能够对仅包括手的100 x 100图像进行分类。
稍后我可以使用OpenCV从网络摄像头获取提要,但是我不确定如何使用我的模型来检测手并在其上创建一个边界框以提取手并将其提供给ASL CNN分类器。我确实尝试使用一些Haar级联来检测手,但是似乎检测得不太好。
我曾考虑过使用YOLO,但是我不确定如何训练它来定制手部图像或将h5文件输入到YOLO分类器中,并使用它在网络摄像头的实时视频源上跨手创建边框。
欢迎任何指向资源的链接。先感谢您。