基于MindSpore的实时人脸识别系统
在实时监测的代码中,需要将网络模型的创建和加载加入到代码中。可以在代码开头加载模型,如下所示:
network = ResNet(ResidualBlock, [2, 2, 2, 2])
param_dict = load_checkpoint('resnet.ckpt')
load_param_into_net(network, param_dict)
其中,'resnet.ckpt'是已经训练好的模型参数文件,需要将其放在代码同级目录下。
另外,需要将输入数据进行处理,使其符合网络模型的输入要求。在代码中,需要将读取的图像转换为灰度图像,并对其进行缩放,然后转换为MindSpore的Tensor格式。具体修改如下:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
face = cv2.resize(gray, (100, 100))
face = Tensor(face.transpose().astype(np.float32) / 255.)
最后,将处理后的数据输入到网络模型中进行预测,得到预测结果。具体修改如下:
output = network(face)
predicted_class = np.argmax(output.asnumpy(), axis=1)
cv2.putText(img1, str(predicted_class[0]), (x, y), cv2.FONT_HERSHEY_COMPLEX, 1, (128, 128, 0), 2)
完整的实时监测代码如下:
cap = cv2.VideoCapture(0)
network = ResNet(ResidualBlock, [2, 2, 2, 2])
param_dict = load_checkpoint('resnet.ckpt')
load_param_into_net(network, param_dict)
stop = False
while not stop:
success, img = cap.read()
subjects = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17',
'18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33']
# 生成图像的副本,这样就能保留原始图像
img1 = img.copy()
# 检测人脸
# 将测试图像转换为灰度图像,因为opencv人脸检测器需要灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测多尺度图像,返回值是一张脸部区域信息的列表(x,y,宽,高)
rect = face_cascade.detectMultiScale(img, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30),
flags=cv2.CASCADE_SCALE_IMAGE)
# 如果未检测到面部
if len(rect) == 0:
txt = 'no face!'
cv2.putText(img1, txt, (10, 20), cv2.FONT_HERSHEY_COMPLEX, 1, (128, 128, 0), 2)
if not rect is None:
for (x, y, w, h) in rect:
face = cv2.resize(gray[y:y + w, x:x + h], (100, 100))
face = Tensor(face.transpose().astype(np.float32) / 255.)
cv2.rectangle(img1, (x, y), (x + w, y + h), (0, 255, 0), 2) # 画出矩形框
output = network(face)
predicted_class = np.argmax(output.asnumpy(), axis=1)
cv2.putText(img1, str(predicted_class[0]), (x, y), cv2.FONT_HERSHEY_COMPLEX, 1, (128, 128, 0), 2)
cv2.imshow('img', img1)
if (cv2.waitKey(1) & 0xFF == ord('q')): # 按下q程序结束
stop = True
cv2.destroyAllWindows() # 释放窗口
在运行代码之前,请确保已经安装了OpenCV和MindSpore库。如果代码运行时出现错误,请检查代码中的路径是否正确,以及模型参数文件是否已经加载成功。
原文地址: https://www.cveoy.top/t/topic/jqxZ 著作权归作者所有。请勿转载和采集!