2021-10-30 22:12:02 [显示全部楼层]
15284浏览
查看: 15284|回复: 5

[教程] 【机器学习】判断闭眼(一)

[复制链接]
本帖最后由 云天 于 2021-11-6 09:06 编辑

使用“在线机器学习”https://machinelearningforkids.co.uk/,训练模式,通过Mind+Python模式,判断人是否闭眼。

第一步:人脸检测
检测图片中所有出现的人脸,并返回人脸的矩形坐标(矩形左上、右下顶点坐标)。使用上面提到的xml文件(haar特征),haarcascades目录下有好几个是关于人脸检测的文件,这里选择haarcascade_frontalface_default.xml,当然也可以使用其他的。另外需要注意的是,必须以灰度图作为haar分类器的输入。
  1. import cv2
  2. import numpy as np
  3. cap = cv2.VideoCapture(0)
  4. color = (0, 255, 0)
  5. while True:
  6.     ret , img = cap.read()
  7.     face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
  8.     grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  9.     faceRects = face_cascade.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))
  10.     for (x,y,w,h) in faceRects:
  11.         cv2.rectangle(img, (x , y - 10), (x + w + 10, y + h + 10), color, 3)  # 5控制绿色框的粗细
  12.     cv2.imshow("face",img)
  13.     if(cv2.waitKey(47)&0xff == 27):
  14.         break
  15. cap.release()
  16. cv2.destroyAllWindows()
复制代码
【机器学习】判断闭眼(一)图1
第二步:训练
https://machinelearningforkids.co.uk/收集您希望计算机识别的示例

【机器学习】判断闭眼(一)图8

第三步:测试下面的机器学习模型
尝试测试下面的机器学习模型。在下面输入一个示例图片,您没有在用于训练它的示例中包含这些图片。它会告诉您它识别它的内容,以及它对这个图片识别的信心。

1、睁眼测试
【机器学习】判断闭眼(一)图3
【机器学习】判断闭眼(一)图4
2、闭眼测试
【机器学习】判断闭眼(一)图5

【机器学习】判断闭眼(一)图6

第四步:安装必要库

Keras-Preprocessing==1.1.2numpy==1.19.5
Pillow==8.3.2
scipy==1.6.0
tensorflow==2.5.1
tensorflow-hub==0.11.0

第五步:下载mlforkids.py
Download mlforkids.py to the folder where you will run your Python code

第六步:在Python中使用机器学习


【机器学习】判断闭眼(一)图2

  1. from mlforkids import MLforKidsImageProject
  2. # treat this key like a password and keep it secret!
  3. key = "f49a7bf0-3973-11ec-aa92-33dbc70ecfa535483aeb-e649-4199-9323-b2f30be8ad8a"
  4. # this will train your model and might take a little while
  5. myproject = MLforKidsImageProject(key)
  6. myproject.train_model()
  7. # CHANGE THIS to the image file you want to recognize
  8. demo = myproject.prediction("my-test-image.jpg")
  9. label = demo["class_name"]
  10. confidence = demo["confidence"]
  11. # CHANGE THIS to do something different with the result
  12. print ("result: '%s' with %d%% confidence" % (label, confidence))
复制代码




第一次运行:
MLFORKIDS: Downloading information about your machine learning project
MLFORKIDS: Getting your training images to use to train your machine learning model
Downloading data from https://machinelearningforkids.c ... s/session-users/stu
dents/ed6d6493-16fc-4f6c-8c0c-a26ab0074353/projects/c29173d0-3972-11ec-8780-b7d1743a5f4d/images/23bd5e63-9f18-40d0-a8f8-6c4b84840c03
   8192/Unknown - 0s 0us/step……

第二次运行:
MLFORKIDS: Downloading information about your machine learning project
MLFORKIDS: Getting your training images to use to train your machine learning model
Found 34 images belonging to 2 classes.
MLFORKIDS: Defining the layers to include in your neural network

多次运行:
出现如下错误
【机器学习】判断闭眼(一)图7


原因可能是运行过程中需要访问这个网站: hub.KerasLayer("https://tfhub.dev/google/imagenet/mobilenet_v2_140_224/classification/4")
我的网络访问不了。

大家可以方式我的代码:
  1. import cv2
  2. import numpy as np
  3. from mlforkids import MLforKidsImageProject
  4. key = "f49a7bf0-3973-11ec-aa92-33dbc70ecfa535483aeb-e649-4199-9323-b2f30be8ad8a"
  5. #myproject = MLforKidsImageProject(key)
  6. #myproject.train_model()
  7. cap = cv2.VideoCapture(0)
  8. color = (0, 255, 0)
  9. while True:
  10.     ret , img = cap.read()
  11.     face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
  12.     grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  13.     faceRects = face_cascade.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))
  14.     if len(faceRects)>0:
  15.      for (x,y,w,h) in faceRects:
  16.         cv2.rectangle(img, (x , y - 10), (x + w + 10, y + h + 10), color, 3)  # 5控制绿色框的粗细
  17.         cv2.imwrite('face.jpg',img)
  18.         #demo = myproject.prediction('face.jpg')
  19.         #label = demo["class_name"]
  20.         #confidence = demo["confidence"]
  21.         #print ("result: '%s' with %d%% confidence" % (label, confidence))
  22.     cv2.imshow("face",img)
  23.     if(cv2.waitKey(47)&0xff == 27):
  24.         break
  25. cap.release()
  26. cv2.destroyAllWindows()
复制代码






云天  初级技神
 楼主|

发表于 2021-10-31 18:01:17

回复

使用道具 举报

MOLLY  学徒

发表于 2022-1-23 21:20:23

本帖最后由 MOLLY 于 2022-1-23 21:36 编辑

尊敬的楼主,您好!我使用“在线机器学习”也遇到了不能访问网站的问题,hub.KerasLayer("https://tfhub.dev/google/imagenet/mobilenet_v2_140_224/classification/4"),  我建立模型不是象您这样用摄像头建立,而是在网站上拖动的一些花草照片,您有什么方法可以解决么?我也把您提供的代码复制了,可是不能用。我在MLK网站上自动生成的代码如下:

from mlforkids import MLforKidsImageProject

# treat this key like a password and keep it secret!
key = "bb7ff080-72d4-11ec-97ab-2778c95f205236c156de-a3fb-4262-87b7-4d59e6ddedcf"

# this will train your model and might take a little while
myproject = MLforKidsImageProject(key)
myproject.train_model()

# CHANGE THIS to the image file you want to recognize
demo = myproject.prediction("my-test-image.jpg")

label = demo["class_name"]
confidence = demo["confidence"]

# CHANGE THIS to do something different with the result
print ("result: '%s' with %d%% confidence" % (label, confidence))
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-1-25 13:36:41

666666 大神厉害!
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-1-25 13:37:07

作品做得不错!
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-1-27 14:38:58

加油加油!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail