YOLOv7 प्लेटोब्लॉकचैन डेटा इंटेलिजेंस के साथ पायथन में रीयल-टाइम ऑब्जेक्ट डिटेक्शन इंट्रेंस। लंबवत खोज। ऐ.

YOLOv7 . के साथ पायथन में रीयल-टाइम ऑब्जेक्ट डिटेक्शन इंट्रेंस

परिचय

कंप्यूटर विज़न में ऑब्जेक्ट डिटेक्शन एक बड़ा क्षेत्र है, और "जंगली में" कंप्यूटर विज़न के अधिक महत्वपूर्ण अनुप्रयोगों में से एक है।

ऑब्जेक्ट डिटेक्शन छवि वर्गीकरण के रूप में मानकीकृत नहीं है, मुख्यतः क्योंकि अधिकांश नए विकास आम तौर पर बड़े पुस्तकालयों और ढांचे के बजाय व्यक्तिगत शोधकर्ताओं, अनुरक्षकों और डेवलपर्स द्वारा किए जाते हैं। TensorFlow या PyTorch जैसे ढांचे में आवश्यक उपयोगिता स्क्रिप्ट को पैकेज करना और अब तक के विकास को निर्देशित करने वाले API दिशानिर्देशों को बनाए रखना मुश्किल है।

यह ऑब्जेक्ट डिटेक्शन को कुछ अधिक जटिल बनाता है, आमतौर पर अधिक वर्बोज़ (लेकिन हमेशा नहीं), और छवि वर्गीकरण की तुलना में कम पहुंच योग्य।

सौभाग्य से जनता के लिए - Ultralytics ने अपने YOLOv5 के आसपास एक सरल, बहुत शक्तिशाली और सुंदर ऑब्जेक्ट डिटेक्शन एपीआई विकसित की है जिसे अन्य अनुसंधान और विकास टीमों द्वारा नए संस्करणों में विस्तारित किया गया है, जैसे कि YOLOv7।

इस संक्षिप्त मार्गदर्शिका में, हम अत्याधुनिक YOLOv7 के साथ पायथन में ऑब्जेक्ट डिटेक्शन का प्रदर्शन करेंगे।

YOLO लैंडस्केप और YOLOv7

योलो (आप केवल एक बार देखें) एक कार्यप्रणाली है, साथ ही ऑब्जेक्ट डिटेक्शन के लिए बनाए गए मॉडलों का परिवार है। 2015 में स्थापना के बाद से, YOLOv1, YOLOv2 (YOLO9000) और YOLOv3 को एक ही लेखक (लेखकों) द्वारा प्रस्तावित किया गया है - और गहन शिक्षण समुदाय निरंतर वर्षों में ओपन-सोर्स प्रगति के साथ जारी रहा।

Ultralytics 'YOLOv5 PyTorch में YOLO का पहला बड़े पैमाने पर कार्यान्वयन है, जिसने इसे पहले से कहीं अधिक सुलभ बना दिया है, लेकिन YOLOv5 ने इस तरह के पैर जमाने का मुख्य कारण इसके चारों ओर बनाया गया सुंदर सरल और शक्तिशाली एपीआई भी है। अनुकूलनशीलता, व्यावहारिक रूप से सभी प्रयोग करने योग्य निर्यात प्रारूपों की अनुमति देते हुए, परियोजना अनावश्यक विवरणों को दूर करती है, और अद्भुत प्रथाओं को नियोजित करती है जो पूरी परियोजना को कुशल और इष्टतम दोनों बनाती हैं।

YOLOv5 अभी भी ऑब्जेक्ट डिटेक्शन मॉडल बनाने के लिए मुख्य परियोजना है, और कई रिपॉजिटरी जो YOLO विधि को आगे बढ़ाने का लक्ष्य रखते हैं, YOLOv5 को आधार रेखा के रूप में शुरू करते हैं और एक समान API प्रदान करते हैं (या बस प्रोजेक्ट को फोर्क करें और इसके ऊपर निर्माण करें)। ऐसा है का मामला YOLOR (आप केवल एक प्रतिनिधित्व सीखते हैं) और YOLOv7 जो YOLOR (एक ही लेखक) के ऊपर बनाया गया है। YOLOv7 YOLO कार्यप्रणाली में नवीनतम प्रगति है और सबसे विशेष रूप से, YOLOv7 नए मॉडल हेड्स प्रदान करता है, जो कि कीपॉइंट्स (कंकाल) को आउटपुट कर सकता है और केवल बाउंडिंग बॉक्स रिग्रेशन के अलावा इंस्टेंस सेगमेंटेशन कर सकता है, जो पिछले YOLO मॉडल के साथ मानक नहीं था।

यह इंस्टेंस सेगमेंटेशन और कीपॉइंट डिटेक्शन को पहले से कहीं ज्यादा तेज बनाता है!

इसके अलावा, YOLOv7 कम पैरामीटर गणना और उच्च कम्प्यूटेशनल दक्षता के कारण पिछले मॉडल की तुलना में तेजी से और उच्च स्तर की सटीकता का प्रदर्शन करता है:

YOLOv7 प्लेटोब्लॉकचैन डेटा इंटेलिजेंस के साथ पायथन में रीयल-टाइम ऑब्जेक्ट डिटेक्शन इंट्रेंस। लंबवत खोज। ऐ.

मॉडल स्वयं वास्तुशिल्प परिवर्तनों के साथ-साथ प्रशिक्षण के अनुकूलन पहलुओं के माध्यम से बनाया गया था, जिसे "बैग-ऑफ-फ्रीबीज" कहा जाता है, जिसने अनुमान लागत को बढ़ाए बिना सटीकता में वृद्धि की।

YOLOv7 . स्थापित करना

YOLOv7 को स्थापित करना और उसका उपयोग करना आपके स्थानीय मशीन पर GitHub रिपॉजिटरी को डाउनलोड करने और इसके साथ पैक की गई स्क्रिप्ट को चलाने के लिए उबलता है।

नोट: दुर्भाग्य से, लेखन के रूप में, YOLOv7 YOLOv5 जैसे स्वच्छ प्रोग्रामेटिक एपीआई की पेशकश नहीं करता है, जो आमतौर पर से लोड होता है torch.hub(), GitHub रिपॉजिटरी को पास कर रहा है। यह एक ऐसी सुविधा प्रतीत होती है जो काम करनी चाहिए लेकिन वर्तमान में विफल हो रही है। जैसे ही यह ठीक हो जाता है, मैं गाइड को अपडेट कर दूंगा या प्रोग्रामेटिक एपीआई पर एक नया प्रकाशित करूंगा। अभी के लिए - हम रिपोजिटरी में प्रदान की गई अनुमान लिपियों पर ध्यान केंद्रित करेंगे।

फिर भी, आप वीडियो, इमेज आदि पर रीयल-टाइम में डिटेक्शन कर सकते हैं और परिणामों को आसानी से सहेज सकते हैं। परियोजना YOLOv5 के समान सम्मेलनों का पालन करती है, जिसमें एक व्यापक दस्तावेज है, इसलिए यदि आपके पास कुछ है तो आपको YOLOv5 रिपॉजिटरी में अधिक विशिष्ट प्रश्नों के उत्तर मिलने की संभावना है।

आइए रिपॉजिटरी डाउनलोड करें और कुछ निष्कर्ष निकालें:

! git clone https://github.com/WongKinYiu/yolov7.git

यह एक बनाता है yolov7 आपकी वर्तमान कार्यशील निर्देशिका में निर्देशिका, जिसमें परियोजना है। आइए उस निर्देशिका में चलते हैं और फाइलों पर एक नज़र डालते हैं:

%cd yolov7
!ls
/Users/macbookpro/jup/yolov7
LICENSE.md       detect.py        models           tools
README.md        export.py        paper            train.py
cfg              figure           requirements.txt train_aux.py
data             hubconf.py       scripts          utils
deploy           inference        test.py          runs

नोट: Google Colab नोटबुक पर, आपको जादू चलाना होगा %cd प्रत्येक सेल में कमांड जिसे आप अपनी निर्देशिका में बदलना चाहते हैं yolov7, जबकि अगला सेल आपको वापस आपकी मूल कार्य निर्देशिका में लौटाता है। स्थानीय जुपिटर नोटबुक पर, निर्देशिका बदल रहा है एक बार आपको इसमें रखता है, इसलिए कमांड को कई बार फिर से जारी करने की कोई आवश्यकता नहीं है।

RSI detect.py अनुमान स्क्रिप्ट है जो डिटेक्शन चलाती है और परिणामों को सहेजती है runs/detect/video_name, जहां आप निर्दिष्ट कर सकते हैं video_name कॉल करते समय detect.py लिपियों. export.py मॉडल को विभिन्न स्वरूपों, जैसे ONNX, TFLite, आदि में निर्यात करता है। train.py एक कस्टम YOLOv7 डिटेक्टर (एक अन्य गाइड का विषय) को प्रशिक्षित करने के लिए इस्तेमाल किया जा सकता है, और test.py एक डिटेक्टर का परीक्षण करने के लिए इस्तेमाल किया जा सकता है (एक भार फ़ाइल से लोड)।

कई अतिरिक्त निर्देशिकाएं कॉन्फ़िगरेशन रखती हैं (cfg), उदाहरण डेटा (inference), मॉडल और COCO विन्यास के निर्माण पर डेटा (data), आदि

YOLOv7 आकार

YOLO- आधारित मॉडल अच्छी तरह से स्केल करते हैं, और आमतौर पर छोटे, कम-सटीक मॉडल और बड़े, अधिक-सटीक मॉडल के रूप में निर्यात किए जाते हैं। फिर इन्हें क्रमशः कमजोर या मजबूत उपकरणों पर तैनात किया जाता है।

YOLOv7 कई आकार प्रदान करता है, और उन्हें MS COCO के विरुद्ध बेंचमार्क किया गया है:

सर्वोत्तम प्रथाओं, उद्योग-स्वीकृत मानकों और शामिल चीट शीट के साथ, Git सीखने के लिए व्यावहारिक मार्गदर्शिका देखें। Googling Git कमांड को रोकें और वास्तव में सीखना यह!

आदर्श परीक्षण का आकार APपरीक्षण AP50test AP75test बैच 1 एफपीएस बैच 32 औसत समय
योलोव7 640 51.4% तक 69.7% तक 55.9% तक 161 एफपीएस 2.8 एमएस
YOLOv7-X 640 53.1% तक 71.2% तक 57.8% तक 114 एफपीएस 4.3 एमएस
YOLOv7-W6 1280 54.9% तक 72.6% तक 60.1% तक 84 एफपीएस 7.6 एमएस
YOLOv7-E6 1280 56.0% तक 73.5% तक 61.2% तक 56 एफपीएस 12.3 एमएस
YOLOv7-D6 1280 56.6% तक 74.0% तक 61.8% तक 44 एफपीएस 15.0 एमएस
YOLOv7-E6E 1280 56.8% तक 74.4% तक 62.1% तक 36 एफपीएस 18.7 एमएस

अंतर्निहित हार्डवेयर के आधार पर आप मॉडल के चलने की उम्मीद कर रहे हैं, और आवश्यक सटीकता - आप उनके बीच चयन कर सकते हैं। सबसे छोटा मॉडल V160 पर 640 आकार की छवियों पर 100FPS से अधिक हिट करता है! आप अधिक सामान्य उपभोक्ता GPU पर भी संतोषजनक रीयल-टाइम प्रदर्शन की उम्मीद कर सकते हैं।

YOLOv7 . के साथ वीडियो अनुमान

एक बनाएं inference-data उन छवियों और/या वीडियो को संग्रहीत करने के लिए फ़ोल्डर जिनसे आप पता लगाना चाहते हैं। यह मानते हुए कि यह एक ही निर्देशिका में है, हम इसके साथ एक डिटेक्शन स्क्रिप्ट चला सकते हैं:

! python3 detect.py --source inference-data/busy_street.mp4 --weights yolov7.pt --name video_1 --view-img

यह आपके डेस्कटॉप पर एक क्यूटी-आधारित वीडियो का संकेत देगा जिसमें आप लाइव प्रगति और अनुमान, फ्रेम दर फ्रेम देख सकते हैं, साथ ही हमारे मानक आउटपुट पाइप की स्थिति को आउटपुट कर सकते हैं:

Namespace(weights=['yolov7.pt'], source='inference-data/busy_street.mp4', img_size=640, conf_thres=0.25, iou_thres=0.45, device='', view_img=True, save_txt=False, save_conf=False, nosave=False, classes=None, agnostic_nms=False, augment=False, update=False, project='runs/detect', name='video_1', exist_ok=False, no_trace=False)
YOLOR 🚀 v0.1-112-g55b90e1 torch 1.12.1 CPU

Downloading https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt to yolov7.pt...
100%|██████████████████████████████████████| 72.1M/72.1M [00:18<00:00, 4.02MB/s]

Fusing layers... 
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
 Convert model to Traced-model... 
 traced_script_module saved! 
 model is traced! 
 
video 1/1 (1/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1071.6ms) Inference, (2.4ms) NMS
video 1/1 (2/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1070.8ms) Inference, (1.3ms) NMS

ध्यान दें कि परियोजना सीपीयू-आधारित मशीनों पर धीमी गति से चलेगी (जैसे कि ऊपर के आउटपुट में 1000ms प्रति अनुमान कदम, इंटेल-आधारित 2017 मैकबुक प्रो पर चलता है), और GPU- आधारित मशीनों पर काफी तेज (~ 5ms/फ्रेम के करीब) V100 पर)। यहां तक ​​कि इस तरह के सीपीयू-आधारित सिस्टम पर भी, yolov7-tiny.pt पर चलाता है 172ms/frame, जो वास्तविक समय से बहुत दूर है, सीपीयू पर इन कार्यों को संभालने के लिए अभी भी बहुत अच्छा है।

एक बार रन हो जाने के बाद, आप परिणामी वीडियो को नीचे पा सकते हैं runs/video_1 (जिस नाम में हमने आपूर्ति की थी detect.py कॉल), an . के रूप में सहेजा गया .mp4:

YOLOv7 प्लेटोब्लॉकचैन डेटा इंटेलिजेंस के साथ पायथन में रीयल-टाइम ऑब्जेक्ट डिटेक्शन इंट्रेंस। लंबवत खोज। ऐ.

छवियों पर अनुमान

छवियों पर अनुमान एक ही प्रक्रिया के लिए उबलता है - फाइल सिस्टम में एक छवि के लिए URL की आपूर्ति करना, और कॉल करना detect.py:

! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt

नोट: लेखन के रूप में, आउटपुट लेबल को छवि आकार में स्केल नहीं करता है, भले ही आप सेट करें --img SIZE. इसका मतलब है कि बड़ी छवियों में वास्तव में पतली बाउंडिंग बॉक्स लाइनें और छोटे लेबल होंगे।

YOLOv7 प्लेटोब्लॉकचैन डेटा इंटेलिजेंस के साथ पायथन में रीयल-टाइम ऑब्जेक्ट डिटेक्शन इंट्रेंस। लंबवत खोज। ऐ.

निष्कर्ष

इस संक्षिप्त मार्गदर्शिका में - हमने YOLOv7 पर एक संक्षिप्त नज़र डाली है, जो YOLO परिवार में नवीनतम उन्नति है, जो YOLOR के शीर्ष पर निर्मित होती है। हमने आपके स्थानीय मशीन पर रिपॉजिटरी को स्थापित करने और वीडियो और छवियों पर पूर्व-प्रशिक्षित नेटवर्क के साथ ऑब्जेक्ट डिटेक्शन इंट्रेंस स्क्रिप्ट चलाने के तरीके पर एक नज़र डाली है।

आगे की गाइडों में, हम कीपॉइंट डिटेक्शन और इंस्टेंस सेगमेंटेशन को कवर करेंगे।

आगे जाना - कंप्यूटर विजन के लिए व्यावहारिक गहन शिक्षण

आपका जिज्ञासु स्वभाव आपको और आगे जाना चाहता है? हम अनुशंसा करते हैं कि हमारी जाँच करें कोर्स: "पायथन के साथ कंप्यूटर विजन के लिए प्रैक्टिकल डीप लर्निंग".

YOLOv7 प्लेटोब्लॉकचैन डेटा इंटेलिजेंस के साथ पायथन में रीयल-टाइम ऑब्जेक्ट डिटेक्शन इंट्रेंस। लंबवत खोज। ऐ.

एक और कंप्यूटर विजन कोर्स?

हम MNIST अंकों या MNIST फैशन का वर्गीकरण नहीं करेंगे। उन्होंने बहुत समय पहले अपनी भूमिका निभाई थी। उन्नत ब्लैक-बॉक्स आर्किटेक्चर को प्रदर्शन का बोझ उठाने देने से पहले बहुत से सीखने के संसाधन बुनियादी डेटासेट और बुनियादी आर्किटेक्चर पर ध्यान केंद्रित कर रहे हैं।

हम पर ध्यान केंद्रित करना चाहते हैं रहस्योद्घाटन, व्यावहारिकता, समझ, अंतर्ज्ञान और वास्तविक परियोजनाएं. सीखना चाहते है कैसे आप कुछ कर सकते है? हम आपको हमारे दिमाग की छवियों को संसाधित करने से लेकर स्तन कैंसर के लिए एक शोध-ग्रेड डीप लर्निंग क्लासिफायर लिखने से लेकर गहन शिक्षण नेटवर्क तक ले जाएंगे जो "मतिभ्रम" करते हैं, आपको व्यावहारिक कार्य के माध्यम से सिद्धांत और सिद्धांत सिखाते हैं, आपको इससे लैस करते हैं कंप्यूटर विज़न को हल करने के लिए गहन शिक्षण को लागू करने में विशेषज्ञ बनने के लिए जानकारी और उपकरण।

अंदर क़या है?

  • दृष्टि के पहले सिद्धांत और कंप्यूटर को "देखना" कैसे सिखाया जा सकता है
  • कंप्यूटर विज़न के विभिन्न कार्य और अनुप्रयोग
  • व्यापार के उपकरण जो आपके काम को आसान बना देंगे
  • कंप्यूटर विज़न के लिए डेटासेट खोजना, बनाना और उपयोग करना
  • दृढ़ तंत्रिका नेटवर्क का सिद्धांत और अनुप्रयोग
  • डेटासेट में डोमेन शिफ्ट, सह-घटना और अन्य पूर्वाग्रहों को संभालना
  • अपने लाभ के लिए सीखने और दूसरों के प्रशिक्षण समय और कम्प्यूटेशनल संसाधनों का उपयोग करना स्थानांतरित करें
  • एक अत्याधुनिक स्तन कैंसर क्लासिफायर का निर्माण और प्रशिक्षण
  • मुख्यधारा के विचारों पर संदेह की एक स्वस्थ खुराक कैसे लागू करें और व्यापक रूप से अपनाई गई तकनीकों के निहितार्थ को समझें
  • t-SNE और PCA का उपयोग करके ConvNet के "अवधारणा स्थान" की कल्पना करना
  • बेहतर परिणाम प्राप्त करने के लिए कंपनियां कंप्यूटर विज़न तकनीकों का उपयोग कैसे करती हैं, इसका केस अध्ययन
  • उचित मॉडल मूल्यांकन, गुप्त स्थान विज़ुअलाइज़ेशन और मॉडल के ध्यान की पहचान करना
  • डोमेन अनुसंधान करना, अपने स्वयं के डेटासेट को संसाधित करना और मॉडल परीक्षण स्थापित करना
  • अत्याधुनिक वास्तुकला, विचारों की प्रगति, उन्हें क्या विशिष्ट बनाता है और उन्हें कैसे लागू किया जाए
  • KerasCV - अत्याधुनिक पाइपलाइन और मॉडल बनाने के लिए WIP लाइब्रेरी
  • पेपर कैसे पार्स करें और पढ़ें और उन्हें स्वयं कैसे लागू करें
  • अपने आवेदन के आधार पर मॉडल का चयन
  • एंड-टू-एंड मशीन लर्निंग पाइपलाइन बनाना
  • तेजी से आर-सीएनएन, रेटिनानेट्स, एसएसडी और योलो के साथ ऑब्जेक्ट डिटेक्शन पर लैंडस्केप और अंतर्ज्ञान
  • इंस्टेंस और सिमेंटिक सेगमेंटेशन
  • YOLOv5 . के साथ रीयल-टाइम ऑब्जेक्ट रिकग्निशन
  • YOLOv5 ऑब्जेक्ट डिटेक्टरों का प्रशिक्षण
  • KerasNLP (उद्योग-शक्ति WIP पुस्तकालय) का उपयोग कर ट्रांसफॉर्मर के साथ कार्य करना
  • छवियों के कैप्शन उत्पन्न करने के लिए ट्रांसफॉर्मर को कन्वनेट के साथ एकीकृत करना
  • DeepDream
  • कंप्यूटर विज़न के लिए डीप लर्निंग मॉडल ऑप्टिमाइज़ेशन

समय टिकट:

से अधिक स्टैकब्यूज