Python 基于OpenCV的人手检测与跟踪

Python 基于OpenCV的人手检测与跟踪,python,opencv,tensorflow,yolo,haar-classifier,Python,Opencv,Tensorflow,Yolo,Haar Classifier,我是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,

我是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)
这是完整代码的链接。

这是图像分类的预览

它能够以相当高的精度检测所有26个字母。 这是混淆矩阵。

我能够保存h5文件,该文件能够对仅包括手的100 x 100图像进行分类

后来,我能够使用OpenCV从网络摄像头获取反馈,但我不确定如何使用我的模型检测手,并在其上创建一个边界框,以提取手并将其提供给ASL CNN分类器。我曾尝试使用一些哈尔级联来检测手部,但它似乎检测不太好

如何从视频源中检测手部,如图中所示?

我正在考虑使用YOLO,但我不知道如何训练它来定制手部图像,或者如何将我的h5文件提供给YOLO分类器,并使用它在网络摄像头的实时视频馈送上创建手部的边界框


欢迎链接到资源。先谢谢你

对于yolov3或yolov4的检测,您可以尝试以下方法:

至于数据集:

通常有两种类型的数据集:

  • 从以自我为中心的观点来看,如Egohand:
  • 从第三人称的角度来看,如牛津之手:

您可以通过检查来检查如何培训他们或您自己的数据,我建议您避免在问题中发布链接,同时显示您迄今为止尝试过的内容以及问题所在,在发布问题时尝试显示您的努力好的。我会修改它。