अब आप अपने कस्टम प्रशिक्षित Roboflow मॉडल को चलाने के लिए roboflowoak पैकेज का उपयोग कर सकते हैं।
इन्फरेंस चलाना: तैनाती
यदि आप ऐसे OAK डिवाइस पर तैनाती कर रहे हैं जिसमें Depth क्षमताएँ नहीं हैं, तो सेट करें depth=False जब आप (बनाते समय) को इंस्टैंसिएट कर रहे हों rf ऑब्जेक्ट। Depth वाले OAK मॉडल नाम के साथ "D" संलग्न करते हैं, जैसे OAK-D और OAK-D-Lite।
साथ ही, इन पर टिप्पणी करें max_depth = np.amax(depth) और cv2.imshow("depth", depth/max_depth)
नीचे का कोड दर्ज करें (प्लेसहोल्डर टेक्स्ट को अपने Python स्क्रिप्ट के पाथ से बदलने के बाद)
Apple Macbook Air (M1) को होस्ट डिवाइस के रूप में उपयोग करने पर इन्फरेंस स्पीड (मिलीसेकंड में) औसतन लगभग 15 ms, या 66 FPS रही। नोट: OAK के साथ उपयोग किया गया होस्ट डिवाइस FPS पर भारी प्रभाव डालेगा। अपने सिस्टम बनाते समय इसे ध्यान में रखें।
ट्रबलशूटिंग
यदि आप अपना OAK डिवाइस सेटअप करते समय समस्याओं का सामना कर रहे हैं, तो Luxonis की इंस्टॉलेशन निर्देशावलियों पर जाएँ और सुनिश्चित करें कि आप RGB उदाहरण को सफलतापूर्वक चला सकते हैं Luxonis इंस्टॉलेशन। आप मदद के लिए Roboflow Forum.
from roboflowoak import RoboflowOak
import cv2
import time
import numpy as np
if __name__ == '__main__':
# RoboflowOak मॉड्यूल के साथ एक ऑब्जेक्ट (rf) का इंस्टैंसिएशन
rf = RoboflowOak(model="YOUR-MODEL-ID", confidence=0.05, overlap=0.5,
version="YOUR-MODEL-VERSION-#", api_key="YOUR-PRIVATE_API_KEY", rgb=True,
depth=True, device=None, blocking=True)
# हमारा मॉडल चलाना और डिटेक्शन्स के साथ वीडियो आउटपुट दिखाना
while True:
t0 = time.time()
# rf.detect() फ़ंक्शन मॉडल इन्फरेंस चलाता है
result, frame, raw_frame, depth = rf.detect()
predictions = result["predictions"]
#{
# predictions:
# [ {
# x: (मध्य),
# y:(मध्य),
# width:
# height:
# depth: ###->
# confidence:
# class:
# mask: {
# ]
#}
#frame - प्रिप्रोसेसिंग के बाद का फ्रेम, predictions के साथ
#raw_frame - आपका OAK से मूल फ्रेम
#depth - raw_frame के लिए डेप्थ मैप, केंद्र-कैमरा के लिए केंद्र-संशोधित
# timing: बेंचमार्किंग उद्देश्यों के लिए
t = time.time()-t0
print("FPS ", 1/t)
print("PREDICTIONS ", [p.json() for p in predictions])
# डेप्थ कैलकुलेशन के लिए पैरामीटर सेट करना
# यदि आप बिना Depth वाले OAK का उपयोग कर रहे हैं तो निम्न 2 लाइनों पर टिप्पणी करें
max_depth = np.amax(depth)
cv2.imshow("depth", depth/max_depth)
# वीडियो फ़ीड को लगातार फ्रेम के रूप में दिखाना
cv2.imshow("frame", frame)
# OAK इन्फरेंस विंडो को बंद करने / इन्फरेंस रोकने का तरीका: CTRL+q या CTRL+c
if cv2.waitKey(1) == ord('q'):
break
# विंडो बंद करने के लिए (इंटरप्ट या इन्फरेंस समाप्त करने के लिए), अपने कीबोर्ड पर CTRL+c दबाएँ
python3 /path/to/[YOUR-PYTHON-FILE].py