рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдЗрдВрдЯреЗрд▓ рдУрдкрдирд╡рд┐рдиреЛ: 2018 рдлрд╕рд▓


рдЖрдк рди рдХреЗрд╡рд▓ рдЧрджреНрдп рдореЗрдВ, рдмрд▓реНрдХрд┐ рдХрд╡рд┐рддрд╛ рдореЗрдВ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрдХреНрд╕рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдХрд╣рддреЗ рд╣реИрдВ, рдЗрдВрдЯреЗрд▓ рдмреНрд▓реЙрдЧ рдкрд░, рдпрд╣ рдкрд╣рд▓реЗ рдХрднреА рдирд╣реАрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдХрдо рд╣реБрдЖред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдЬ рдПрдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ рдЦреБрдж рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛; рдпрд╣ рдХреИрд╕реЗ рд╣реБрдЖ рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдЗрд╕рд▓рд┐рдП ...


рд╡рд░реНрд╖ рдХреА рдЕрдВрддрд┐рдо рддрд┐рдорд╛рд╣реА рдореЗрдВ,
рдФрд░ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ,
рдЗрдВрдЯреЗрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдПрдХ рдирдИ рд╢реБрд░реБрдЖрдд рдХреА
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░ OpenVINO рдЯреВрд▓рдХрд┐рдЯ рд░рд┐рд▓реАрдЬрд╝ред


рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ - рдЪреИрдВрдЬ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ
рдореБрдЭреЗ рд╕рдЯреАрдХ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛
рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдереЛрдбрд╝рд╛ рд╣реА рдмрддрд╛рдКрдВрдЧрд╛:
рджреГрд╖реНрдЯрд┐, рдЗрдВрдЯреЗрд▓ рдФрд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╡рд╛рдЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред


***


OpenVINO рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ,
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рд╕рдорд╛рдзрд╛рди рдЙрджрд╛рд╣рд░рдг
рдЗрдВрдЯреЗрд▓ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рд╡рд┐рд╢реЗрд╖ рддреНрд╡рд░рдг рдХреЗ рд╕рд╛рде
рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдХреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдХрд╛рд░реНрдпред


рдХрдВрдкреНрдпреВрдЯрд░ рджреГрд╖реНрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕рдиреЗ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ -
рдпрд╣ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдХрд╛ рдПрдХ рдХреНрд╖реЗрддреНрд░ рд╣реИ,
рдЖрдкрдХреЛ рдХрд╛рд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ
рдПрдХ рдЖрджрдореА рдХреА рддрд░рд╣, рджреБрдирд┐рдпрд╛ рдЪрд╛рд░реЛрдВ рдУрд░ рд╣реИред


рд╕реВрдЪрдирд╛ рдХрд╛ рд╕реНрд░реЛрдд, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░,
рдФрд░ рд╕рдорд╕реНрдпрд╛ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ
рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП
рдФрд░ рдЙрди рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗ рд░рд╣реЗ рд╣реИрдВред


***


рд╣рдорд╛рд░реА рдорд┐рдиреА-рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рд╣реИ OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА,
рдЬрд┐рд╕реЗ рдЕрдХреНрд╕рд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
рдорд╢реАрди рджреГрд╖реНрдЯрд┐ рдФрд░ рд╕реАрдЦрдиреЗ,
рдХреИрдорд░реЗ рд╕реЗ рдкрдврд╝рдирд╛ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдбреНрд░рд╛рдЗрдВрдЧ рдХрд░рдирд╛,
рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ рдЬреАрдереБрдм рд░рд╣рдиреЗ рдкрд░
рд▓реЗрдЦрди рдХреЗ рд╕рдордп 30502 рд╕рд┐рддрд╛рд░реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдПред


рд░рд╛рд╕реНрдкрдмреЗрд░реА рдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рд╣рдо рднреА рдкрд╛рдПрдВрдЧреЗ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ OpenCV, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде
рдиреАрдпрди рдЕрдиреБрдХреВрд▓рди, рдкрд╛рдпрдерди рдореЗрдВ рд░реИрдкрд░,
рдХреИрдорд░реЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ GTK рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП GStreamerред



***


рдЕрдм рд╕рд╛рдд рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП
рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдЧрд╣рд░реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд▓рд╛рдЧреВ рдХрд░реЗрдВ,
рдПрдХ рд╢рд┐рдХреНрд╖рдХ рдХреЗ рд╕рд╛рде рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдХреИрдл, PyTorch - рдпрд╣ рд╕рдм рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ,
рдХрднреА-рдХрднреА рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рд▓реЗрддреЗ рд╣реИрдВред
OpenVINO рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ:
рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдЧреНрд░рд┐рдб рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред


рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ,
рдкреНрд░рд╕рд┐рджреНрдз рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ, рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП,
рдУрдкрдирд╡рд┐рдиреЛ рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдореЗрдВ - рдПрдХ рдЕрд▓рдЧ рдЗрдВрдЬрди,
рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рдеред


***


рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╣реИрдВ
рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рд░рд╛рд╕реНрдкрд┐рдпрди 9 рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ,
рдкреНрд▓рдЧ Movidius рдЫрдбрд╝реА, рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐,
рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╕реАрдкреАрдпреВ рд╕рдВрд╕реНрдХрд░рдг рдХрдо рд╕реЗ рдХрдо рд╕рд╛рдд рд╣реИред


рд╕рдВрдмрдВрдзрд┐рдд рдЧрд╛рдЗрдб рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ,
рдФрд░ рдПрдХ рдбреЗрдореЛ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдХреЛрдб рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ,
рдХреИрдорд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдФрд░ рдмрдВрдж рдХрд░рдирд╛
рджреЗрдЦрдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ, рдПрд▓рдИрдбреАред


рджреЛ рдиреЗрдЯрд╡рд░реНрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ: рдЦреЛрдЬрдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП
рдФрд░ рд╕рд┐рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА,
USB рдХреИрдорд░рд╛ рдФрд░ рдиреЛрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдХреЛрдб рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд┐рди рдирдВрдмрд░ 2 рдХреНрдпрд╛ рд╣реИ?


***


рдЙрди рд╕рднреА рдХреЛ рд╕рдорд░реНрдкрд┐рдд рдЬреЛ рднрд╛рд╡реБрдХ рд╣реИрдВ
рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреВрд░реЗ рд╕рд╛рд▓ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред
рд╕рдм рдХреБрдЫ рдЖрдиреЗ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП,
рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд░ OpenVINO - рд╡рд╣реА IoT!


import cv2 as cv from gpiozero import LED from math import cos, sin, pi winName = 'OpenVINO on Raspberry Pi' cv.namedWindow(winName, cv.WINDOW_NORMAL) faceDetectionNet = cv.dnn.readNet('face-detection-retail-0004.xml', 'face-detection-retail-0004.bin') headPoseNet = cv.dnn.readNet('head-pose-estimation-adas-0001.xml', 'head-pose-estimation-adas-0001.bin') faceDetectionNet.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD) headPoseNet.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD) cap = cv.VideoCapture(0) led = LED(2) led.on() while cv.waitKey(1) != 27: hasFrame, frame = cap.read() if not hasFrame: break frameHeight, frameWidth = frame.shape[0], frame.shape[1] # Detect faces on the image. blob = cv.dnn.blobFromImage(frame, size=(300, 300), ddepth=cv.CV_8U) faceDetectionNet.setInput(blob) detections = faceDetectionNet.forward() for detection in detections.reshape(-1, 7): confidence = float(detection[2]) if confidence > 0.5: xmin = int(detection[3] * frameWidth) ymin = int(detection[4] * frameHeight) xmax = int(detection[5] * frameWidth) ymax = int(detection[6] * frameHeight) xmax = max(1, min(xmax, frameWidth - 1)) ymax = max(1, min(ymax, frameHeight - 1)) xmin = max(0, min(xmin, xmax - 1)) ymin = max(0, min(ymin, ymax - 1)) # Run head pose estimation network. face = frame[ymin:ymax+1, xmin:xmax+1] blob = cv.dnn.blobFromImage(face, size=(60, 60), ddepth=cv.CV_8U) headPoseNet.setInput(blob) headPose = headPoseNet.forward(['angle_p_fc', 'angle_r_fc', 'angle_y_fc']) p, r, y = headPose[0][0], headPose[1][0], headPose[2][0] cos_r = cos(r * pi / 180) sin_r = sin(r * pi / 180) sin_y = sin(y * pi / 180) cos_y = cos(y * pi / 180) sin_p = sin(p * pi / 180) cos_p = cos(p * pi / 180) x = int((xmin + xmax) / 2) y = int((ymin + ymax) / 2) # center to right cv.line(frame, (x,y), (x+int(50*(cos_r*cos_y+sin_y*sin_p*sin_r)), y+int(50*cos_p*sin_r)), (0, 0, 255), thickness=3) # center to top cv.line(frame, (x, y), (x+int(50*(cos_r*sin_y*sin_p+cos_y*sin_r)), y-int(50*cos_p*cos_r)), (0, 255, 0), thickness=3) # center to forward cv.line(frame, (x, y), (x + int(50*sin_y*cos_p), y + int(50*sin_p)), (255, 0, 0), thickness=3) cv.rectangle(frame, (xmin, ymin), (xmax, ymax), (0, 255, 255)) if abs(cos_y * cos_p) > 0.9: cv.putText(frame, 'FORWARD', (0, 30), cv.FONT_HERSHEY_SIMPLEX, 1.0, (0, 255, 0), thickness=2) led.off() else: led.on() cv.imshow(winName, frame) 


Source: https://habr.com/ru/post/hi434238/


All Articles