在图像分类中为单个图像预测类别标签

时间:2020-01-24 15:04:27

标签: image-processing deep-learning neural-network object-detection gesture-recognition

我正在使用深度学习神经网络设计静态手势识别。 我从kaggle的此实现开始-https://www.kaggle.com/ranjeetjain3/deep-learning-using-sign-langugage/notebook#Sign-Language. 这种方法的准确性看起来很高,但是当我尝试对自定义图像进行预测时,却得到了错误的结果。作为一个新手,我怀疑我的解释,因此需要帮助。

下面是我的预测代码:

import matplotlib.image as mpimg 
import matplotlib.pyplot as plt 

# Read Images 
infer_image = mpimg.imread('D:\\Mayuresh\\DL using SL MNIST\\input\\infer\\7.png') 
plt.imshow(infer_image) 

# Resizing before the prediction
infer_image = np.resize(infer_image, (28,28,1))
infer_image_arr = np.array(infer_image)
infer_image_arr = infer_image_arr.reshape(1,28,28,1)

# Prediction
y_pred = model.predict_classes(infer_image_arr)
print(y_pred)

# Dictionary for translation
my_dict2 = {
    0: 'a',
    1: 'b',
    2: 'c',
    3: 'd',
    4: 'e',
    5: 'f',
    6: 'g',
    7: 'h',
    8: 'i',
    9: 'k',
    10: 'l',
    11: 'm',
    12: 'n',
    13: 'o',
    14: 'p',
    15: 'q',
    16: 'r',
    17: 's',
    18: 't',
    19: 'u',
    20: 'v',
    21: 'w',
    22: 'x',
    23: 'y'
}

my_dict2[int(y_pred)]

有人可以建议需要的更改或摘要来预测一张图像的手势吗?

2 个答案:

答案 0 :(得分:0)

我认为您没有为项目训练任何东西,而是使用Kaggle网站中提供的神经网络权重。

这种方法的准确性看起来很高,但是当我尝试对自定义图像进行预测时,却得到了错误的结果。

似乎您正在使用的网络过度适合MNIST数据集。因此,当您提供不同的图像时,会产生不好的结果。

您应该做的是创建一个手势数据集,其中包括很多情况,尤其是您要检测的情况。然后,您应该使用当前权重作为训练的初始权重,使用这个新创建的数据集来训练网络。您的网络应该学习不同的手势情况。提高项目准确性的关键是使用类似于推理输入的不同手势图像来训练网络。

答案 1 :(得分:0)

我相信您需要一个代码库,您可以在该代码库上对所生成的数据集进行模型训练。根据您的背景,光线设置等因素,这比使用预先训练的模型更好,该模型是根据来自不同分布的数据进行训练的

我建议使用this,您可以在其中开始视频输入,并且将针对手势自动拍摄训练图像。您还可以选择所需的班级数量。这样可以改善您的表现。否则,您可以使用原始代码Emojinator来检测13个手势