Intel OpenVINO on Raspberry Pi: حصاد 2018


يمكنك الكتابة عن البرمجة ليس فقط في النثر ، ولكن أيضًا في الشعر. هذا الأخير ، بالطبع ، لا يحدث في كثير من الأحيان - على سبيل المثال ، على مدونة Intel ، حدث هذا أقل قليلاً من ذي قبل. ومع ذلك ، كتجربة اليوم ، قررنا السماح لأنفسنا ؛ كيف حدث ذلك متروك لك. لذلك ...


في الربع الأخير من العام ،
ولكي نكون دقيقين ، الأسبوع الماضي ،
قدم مطورو Intel الجديد
إصدار مجموعة أدوات OpenVINO على البرنامج .


ما هو الجديد يتم - الاتصال changelogs
لن أحصل على التفاصيل الدقيقة
في هذا المنشور سأقول فقط القليل:
عن الأفق ، وإنتل والنبيذ التوت.


***


OpenVINO هو في الأساس مجموعة من الأدوات ،
المكتبات والأمثلة الحل
مع تسارع خاص على أجهزة إنتل
المهام الشعبية لرؤية الكمبيوتر.


الذي لم يسمع عن رؤية الكمبيوتر -
هذا مجال علوم الحاسوب
يجعلك تفهم السيارة
مثل رجل ، العالم موجود.


مصدر المعلومات وخاصة الصور
والمشكلة هي إنشاء خوارزمية
لاستخراج ميزات مفيدة
واتخاذ القرارات بشأنها.


***


الأول في استعراضنا المصغر هو مكتبة OpenCV ،
ما يسمى في كثير من الأحيان التقليدية
رؤية الآلة والتعلم ،
القراءة من الكاميرا والرسم على الشاشة ،
عبر منصة وعلى جيثب المعيشة
بعد أن سجل 30502 نجوم في وقت كتابة هذا التقرير.


في الحزمة لـ Raspberry ، سنجد أيضًا
OpenCV العامة ، ومعها
تحسينات NEON ، مغلفة في بيثون ،
GStreamer للكاميرات ونوافذ GTK.



***


لمدة سبع سنوات حتى الآن
لحل مشاكلنا
تطبيق الشبكات العصبية العميقة ،
يحتاج هؤلاء المعلمون إلى التدريب.


كافيه ، PyTorch - كل شيء عن التدريب ،
في بعض الأحيان يستغرق بضعة أسابيع.
OpenVINO يحل المشكلة الثانية:
إطلاق شبكات المدربين في أسرع وقت ممكن.


من أفضل الحلول للعديد من المنصات ،
لسيناريوهات معروفة والاحتياجات والموارد ،
في OpenVINO التعلم العميق - محرك منفصل ،
مع واجهة واحدة على أجهزة مختلفة.


***


لديك الأدوات اللازمة للعمل
تثبيت Raspbian 9 على Raspberry Pi ،
المكونات Movidius عصا ، وإمدادات الطاقة ،
تحقق من أن إصدار وحدة المعالجة المركزية هو سبعة على الأقل.


اقرأ المزيد في الدليل المقابل ،
وكما تجريبي ، أقترح رمز ،
العمل مع الكاميرا وإيقاف
في اتجاه الرؤية ، الصمام.


قم بتنزيل شبكتين: للأشخاص الذين يجدون
وتوقعات موقف الرأس ،
استخدام كاميرا USB والملاحظة
ما هو الرقم السري الافتراضي 2 في الكود؟


***


مخصصة لجميع أولئك الذين هم بحماس
كان يعمل في مشروعنا طوال العام.
دع كل شيء يتسارع في المستقبل ،
OpenVINO على توت العليق - نفس إنترنت الأشياء!


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/ar434238/


All Articles