这个项目的代码可以在我的Github上找到
https://github.com/HOD101s/RockPaperScissor-AI-
简介
这个项目的基础是深度学习和图像分类,目的是创建一个简单而有趣的石头剪刀布游戏。首先,这个项目是我在5月份的COVID19隔离期中无聊的产物,希望当你读到这个时,一切都恢复正常了。我的目的是通过这篇文章用简单的术语向初学者解释这个项目的基本原理。让我们开始吧!
在构建任何类型的深度学习应用程序时,有三个主要步骤:
收集和处理数据
建立一个合适的人工智能模型
部署使用
整个项目都引用了我的Github repo,并与之携手并进,所以请做好参考准备。
项目地址:https://github.com/HOD101s/RockPaperScissor-AI-
收集我们的数据
任何深度学习模型的基础都是数据,任何一位机器学习工程师都会同意这一点,在ML中,数据远比算法本身重要。我们需要收集石头,布和剪刀的符号图像,我没有下载别人的数据并在上面进行训练,而是制作了自己的数据集,鼓励你也建立自己的数据集。之后尝试更改数据并重新训练模型,以查看数据对深度学习模型究竟有怎样的影响。
PATH = os.getcwd()+'\\'
cap = cv2.VideoCapture(0)
label = sys.argv[1]
SAVE_PATH = os.path.join(PATH, label)
try:
os.mkdir(SAVE_PATH)
except FileExistsError:
pass
ct = int(sys.argv[2])
maxCt = int(sys.argv[3])+1
print("Hit Space to Capture Image")
while True:
ret, frame = cap.read()
cv2.imshow('Get Data : '+label,frame[50:350,100:450])
if cv2.waitKey(1) & 0xFF == ord(' '):
cv2.imwrite(SAVE_PATH+'\\'+label+'{}.jpg'.format(ct),frame[50:350,100:450])
print(SAVE_PATH+'\\'+label+'{}.jpg Captured'.format(ct))
ct+=1
if ct >= maxCt:
break
cap.release()
cv2.destroyAllWindows()
我使用了Python的OpenCV库进行所有与相机相关的操作,所以这里的label指的是图像属于哪个类,根据标签,图像保存在适当的目录中。ct和maxCt是用来保存图像的起始索引和最终索引,剩下的是标准的Ope