ভূমিকা
অবজেক্ট ডিটেকশন হল কম্পিউটার ভিশনের একটি বৃহৎ ক্ষেত্র, এবং কম্পিউটার ভিশনের অন্যতম গুরুত্বপূর্ণ অ্যাপ্লিকেশন "বন্যে"।
অবজেক্ট ডিটেকশন ইমেজ শ্রেণীবিভাগের মতো প্রমিত নয়, প্রধানত কারণ বেশিরভাগ নতুন বিকাশ সাধারণত বড় লাইব্রেরি এবং ফ্রেমওয়ার্কের পরিবর্তে পৃথক গবেষক, রক্ষণাবেক্ষণকারী এবং বিকাশকারীদের দ্বারা করা হয়। TensorFlow বা PyTorch-এর মতো একটি কাঠামোতে প্রয়োজনীয় ইউটিলিটি স্ক্রিপ্টগুলি প্যাকেজ করা এবং এপিআই নির্দেশিকাগুলি বজায় রাখা কঠিন যা এখন পর্যন্ত বিকাশকে নির্দেশ করেছে।
এটি বস্তুর শনাক্তকরণকে কিছুটা জটিল করে তোলে, সাধারণত আরও ভার্বস (কিন্তু সবসময় নয়), এবং চিত্রের শ্রেণীবিভাগের তুলনায় কম অ্যাক্সেসযোগ্য।
সৌভাগ্যবশত জনসাধারণের জন্য - Ultralytics তাদের YOLOv5 এর আশেপাশে একটি সহজ, খুব শক্তিশালী এবং সুন্দর অবজেক্ট ডিটেকশন API তৈরি করেছে যা অন্যান্য গবেষণা এবং উন্নয়ন দলগুলি YOLOv7 এর মতো নতুন সংস্করণে প্রসারিত করেছে।
এই সংক্ষিপ্ত নির্দেশিকাতে, আমরা পাইথনে অত্যাধুনিক YOLOv7 সহ অবজেক্ট ডিটেকশন সম্পাদন করব।
YOLO ল্যান্ডস্কেপ এবং YOLOv7
YOLO (আপনি শুধুমাত্র একবার দেখুন) একটি পদ্ধতি, সেইসাথে বস্তু সনাক্তকরণের জন্য নির্মিত মডেলের পরিবার। 2015 সালে সূচনা হওয়ার পর থেকে, YOLOv1, YOLOv2 (YOLO9000) এবং YOLOv3 একই লেখক(রা) দ্বারা প্রস্তাবিত হয়েছে – এবং গভীর শিক্ষার সম্প্রদায় অব্যাহত বছরগুলিতে ওপেন সোর্সড অগ্রগতি অব্যাহত রেখেছে।
Ultralytics' YOLOv5 PyTorch-এ YOLO-এর প্রথম বড় আকারের বাস্তবায়ন, যা এটিকে আগের চেয়ে আরও বেশি অ্যাক্সেসযোগ্য করে তুলেছে, কিন্তু YOLOv5-এর এমন একটি পা রাখার প্রধান কারণ হল এর চারপাশে নির্মিত সুন্দর সহজ এবং শক্তিশালী API। প্রকল্পটি অপ্রয়োজনীয় বিশদগুলিকে বিমূর্ত করে, কাস্টমাইজ করার অনুমতি দেয়, কার্যত সমস্ত ব্যবহারযোগ্য রপ্তানি বিন্যাস, এবং আশ্চর্যজনক অনুশীলনগুলি নিয়োগ করে যা সমগ্র প্রকল্পটিকে দক্ষ এবং যতটা হতে পারে ততটা অনুকূল করে তোলে।
YOLOv5 এখনও অবজেক্ট ডিটেকশন মডেল তৈরি করার প্রধান প্রকল্প, এবং অনেক রিপোজিটরি যা YOLO পদ্ধতিকে অগ্রসর করার লক্ষ্যে YOLOv5 দিয়ে একটি বেসলাইন হিসাবে শুরু করে এবং একটি অনুরূপ API অফার করে (অথবা কেবল প্রকল্পটি কাঁটাচামচ করে এটির উপরে তৈরি করে)। এরকমই ঘটনা YOLOR (আপনি শুধুমাত্র একটি প্রতিনিধিত্ব শিখুন) এবং YOLOv7 যা YOLOR এর উপরে নির্মিত (একই লেখক)। YOLOv7 হল YOLO পদ্ধতির সর্বশেষ অগ্রগতি এবং সবচেয়ে উল্লেখযোগ্যভাবে, YOLOv7 নতুন মডেল হেড প্রদান করে, যা কীপয়েন্ট (কঙ্কাল) আউটপুট করতে পারে এবং শুধুমাত্র বাউন্ডিং বক্স রিগ্রেশন ছাড়াও ইনস্ট্যান্স সেগমেন্টেশন করতে পারে, যা পূর্ববর্তী YOLO মডেলগুলির সাথে মানসম্মত ছিল না।
এটি ইন্সট্যান্স সেগমেন্টেশন এবং কীপয়েন্ট সনাক্তকরণকে আগের চেয়ে দ্রুত করে তোলে!
উপরন্তু, কম পরামিতি গণনা এবং উচ্চ গণনা দক্ষতার কারণে YOLOv7 পূর্ববর্তী মডেলগুলির তুলনায় দ্রুত এবং উচ্চতর নির্ভুলতা সম্পাদন করে:
মডেলটি নিজেই স্থাপত্য পরিবর্তনের মাধ্যমে তৈরি করা হয়েছিল, সেইসাথে প্রশিক্ষণের অপ্টিমাইজিং দিকগুলিকে "ব্যাগ-অফ-ফ্রিবিস" হিসাবে ডাকা হয়েছে, যা অনুমান খরচ না বাড়িয়ে নির্ভুলতা বাড়িয়েছে।
YOLOv7 ইনস্টল করা হচ্ছে
YOLOv7 ইনস্টল করা এবং ব্যবহার করা আপনার স্থানীয় মেশিনে GitHub সংগ্রহস্থল ডাউনলোড করতে এবং এটির সাথে প্যাকেজ করা স্ক্রিপ্টগুলি চালানোর জন্য কাজ করে।
বিঃদ্রঃ: দুর্ভাগ্যবশত, লেখার সময়, YOLOv7 একটি পরিষ্কার প্রোগ্রাম্যাটিক API যেমন YOLOv5 অফার করে না, যা সাধারণত এখান থেকে লোড করা হয় torch.hub()
, GitHub রিপোজিটরি পাস করা হচ্ছে। এটি এমন একটি বৈশিষ্ট্য বলে মনে হচ্ছে যা কাজ করা উচিত কিন্তু বর্তমানে ব্যর্থ হচ্ছে। এটি ঠিক হওয়ার সাথে সাথে, আমি গাইডটি আপডেট করব বা প্রোগ্রাম্যাটিক API-এ একটি নতুন প্রকাশ করব। আপাতত - আমরা সংগ্রহস্থলে দেওয়া অনুমান স্ক্রিপ্টগুলিতে ফোকাস করব।
তবুও, আপনি ভিডিও, ছবি ইত্যাদিতে রিয়েল-টাইমে সনাক্তকরণ করতে পারেন এবং ফলাফলগুলি সহজেই সংরক্ষণ করতে পারেন। প্রকল্পটি YOLOv5 এর মতো একই নিয়ম অনুসরণ করে, যার একটি বিস্তৃত ডকুমেন্টেশন রয়েছে, তাই আপনার যদি কিছু থাকে তবে আপনি YOLOv5 সংগ্রহস্থলে আরও বিশেষ প্রশ্নের উত্তর খুঁজে পেতে পারেন।
আসুন সংগ্রহস্থলটি ডাউনলোড করি এবং কিছু অনুমান সম্পাদন করি:
! git clone https://github.com/WongKinYiu/yolov7.git
এটি তৈরি করে a 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
, যখন পরবর্তী সেল আপনাকে আপনার আসল কার্যকারী ডিরেক্টরিতে ফিরিয়ে দেয়। স্থানীয় জুপিটার নোটবুকগুলিতে, ডিরেক্টরি পরিবর্তন করা হচ্ছে একদা আপনাকে এতে রাখে, তাই একাধিকবার কমান্ডটি পুনরায় জারি করার দরকার নেই।
সার্জারির 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-এর বিরুদ্ধে বেঞ্চমার্ক করেছে:
সেরা-অভ্যাস, শিল্প-স্বীকৃত মান এবং অন্তর্ভুক্ত চিট শীট সহ গিট শেখার জন্য আমাদের হ্যান্ডস-অন, ব্যবহারিক গাইড দেখুন। গুগলিং গিট কমান্ড এবং আসলে বন্ধ করুন শেখা এটা!
মডেল | পরীক্ষার আকার | APপরীক্ষা | AP50 পরীক্ষা | AP75 পরীক্ষা | ব্যাচ 1 fps | ব্যাচ 32 গড় সময় |
---|---|---|---|---|---|---|
YOLOv7 | 640 | 51.4% | 69.7% | 55.9% | 161 FPS | 2.8 এমএস |
YOLOv7-X | 640 | 53.1% | 71.2% | 57.8% | 114 FPS | 4.3 এমএস |
YOLOv7-W6 | 1280 | 54.9% | 72.6% | 60.1% | 84 FPS | 7.6 এমএস |
YOLOv7-E6 | 1280 | 56.0% | 73.5% | 61.2% | 56 FPS | 12.3 এমএস |
YOLOv7-D6 | 1280 | 56.6% | 74.0% | 61.8% | 44 FPS | 15.0 এমএস |
YOLOv7-E6E | 1280 | 56.8% | 74.4% | 62.1% | 36 FPS | 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
এটি আপনার ডেস্কটপে একটি Qt-ভিত্তিক ভিডিও প্রম্পট করবে যেখানে আপনি লাইভ অগ্রগতি এবং অনুমান, ফ্রেম দ্বারা ফ্রেম, সেইসাথে আমাদের স্ট্যান্ডার্ড আউটপুট পাইপে স্থিতি আউটপুট দেখতে পাবেন:
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
উল্লেখ্য যে প্রকল্পটি CPU-ভিত্তিক মেশিনে ধীর গতিতে চলবে (যেমন উপরের আউটপুটে 1000ms প্রতি অনুমান ধাপ, একটি Intel-ভিত্তিক 2017 MacBook Pro-তে চলে), এবং GPU-ভিত্তিক মেশিনে উল্লেখযোগ্যভাবে দ্রুততর হবে (~5ms/ফ্রেমের কাছাকাছি) একটি V100 এ)। এমনকি CPU-ভিত্তিক সিস্টেমে যেমন এটি, yolov7-tiny.pt
এ রান 172ms/frame
, যা রিয়েল-টাইম থেকে অনেক দূরে, CPU-তে এই ক্রিয়াকলাপগুলি পরিচালনা করার জন্য এখনও খুব শালীন।
একবার রান করা হয়ে গেলে, আপনি ফলাফলের নীচে ভিডিওটি খুঁজে পেতে পারেন runs/video_1
(এ নামটি আমরা সরবরাহ করেছি detect.py
কল), একটি হিসাবে সংরক্ষিত .mp4
:
ইমেজ উপর অনুমান
চিত্রগুলির উপর অনুমান একই প্রক্রিয়ায় ফুটে ওঠে - ফাইল সিস্টেমে একটি চিত্রের URL সরবরাহ করা এবং কল করা detect.py
:
! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt
বিঃদ্রঃ: লেখার সময়, আউটপুট লেবেলগুলিকে চিত্রের আকারে স্কেল করে না, এমনকি আপনি সেট করলেও --img SIZE
. এর মানে হল যে বড় ছবিতে সত্যিই পাতলা বাউন্ডিং বক্স লাইন এবং ছোট লেবেল থাকবে।
উপসংহার
এই সংক্ষিপ্ত নির্দেশিকায় - আমরা YOLOv7-এর একটি সংক্ষিপ্ত রূপ দেখেছি, YOLO পরিবারের সর্বশেষ অগ্রগতি, যা YOLOR-এর উপরে তৈরি। আমরা কীভাবে আপনার স্থানীয় মেশিনে সংগ্রহস্থলটি ইনস্টল করতে হয় এবং ভিডিও এবং চিত্রগুলিতে একটি প্রাক-প্রশিক্ষিত নেটওয়ার্ক সহ অবজেক্ট সনাক্তকরণ অনুমান স্ক্রিপ্টগুলি চালাতে হয় তা দেখেছি।
আরও নির্দেশিকাগুলিতে, আমরা কীপয়েন্ট সনাক্তকরণ এবং উদাহরণ বিভাজন কভার করব।
আরও এগিয়ে যাওয়া - কম্পিউটার ভিশনের জন্য ব্যবহারিক গভীর শিক্ষা
আপনার অনুসন্ধিৎসু প্রকৃতি আপনাকে আরও যেতে চায়? আমরা আমাদের চেক আউট সুপারিশ পথ: "পাইথনের সাথে কম্পিউটার ভিশনের জন্য ব্যবহারিক গভীর শিক্ষা".
আরেকটি কম্পিউটার ভিশন কোর্স?
আমরা MNIST সংখ্যা বা MNIST ফ্যাশনের শ্রেণিবিন্যাস করব না। তারা অনেক আগে থেকেই তাদের দায়িত্ব পালন করেছে। উন্নত ব্ল্যাক-বক্স আর্কিটেকচারগুলিকে পারফরম্যান্সের ভার বহন করতে দেওয়ার আগে অনেকগুলি শেখার সংস্থান মৌলিক ডেটাসেট এবং মৌলিক আর্কিটেকচারের উপর ফোকাস করছে।
আমরা ফোকাস করতে চাই demystification, বাস্তবতা, বোধশক্তি, স্বজ্ঞা এবং বাস্তব প্রকল্প. শিখতে চাই কিভাবে আপনি একটি পার্থক্য করতে পারেন? স্তন ক্যান্সারের জন্য আমাদের মস্তিষ্ক যেভাবে ছবিগুলিকে প্রক্রিয়াকরণ করে, তার থেকে শুরু করে স্তন ক্যান্সারের জন্য একটি গবেষণা-গ্রেড ডিপ লার্নিং ক্লাসিফায়ার লেখা পর্যন্ত আমরা আপনাকে "হ্যালুসিনেট" করার নেটওয়ার্কগুলিতে নিয়ে যাব, আপনাকে ব্যবহারিক কাজের মাধ্যমে নীতি ও তত্ত্ব শেখাবো, আপনাকে সজ্জিত করব কম্পিউটারের দৃষ্টিভঙ্গি সমাধানের জন্য গভীর শিক্ষা প্রয়োগে বিশেষজ্ঞ হওয়ার উপায় এবং সরঞ্জাম।
ভিতরে কি?
- দৃষ্টির প্রথম নীতি এবং কীভাবে কম্পিউটারকে "দেখতে" শেখানো যায়
- কম্পিউটার ভিশনের বিভিন্ন কাজ এবং অ্যাপ্লিকেশন
- ট্রেডের টুল যা আপনার কাজকে সহজ করে তুলবে
- কম্পিউটার ভিশনের জন্য ডেটাসেট খোঁজা, তৈরি এবং ব্যবহার করা
- কনভোল্যুশনাল নিউরাল নেটওয়ার্কের তত্ত্ব এবং প্রয়োগ
- ডেটাসেটে ডোমেন শিফট, সহ-ঘটনা এবং অন্যান্য পক্ষপাতগুলি পরিচালনা করা
- আপনার সুবিধার জন্য শেখার স্থানান্তর এবং অন্যদের প্রশিক্ষণের সময় এবং গণনামূলক সংস্থানগুলি ব্যবহার করুন
- একটি অত্যাধুনিক স্তন ক্যান্সারের শ্রেণীবিভাগ তৈরি এবং প্রশিক্ষণ
- কীভাবে মূলধারার ধারণাগুলিতে সংশয়বাদের একটি স্বাস্থ্যকর ডোজ প্রয়োগ করা যায় এবং ব্যাপকভাবে গৃহীত কৌশলগুলির প্রভাব বোঝা যায়
- T-SNE এবং PCA ব্যবহার করে একটি ConvNet-এর "ধারণা স্থান" ভিজ্যুয়ালাইজ করা
- কোম্পানিগুলি কীভাবে ভাল ফলাফল অর্জন করতে কম্পিউটার দৃষ্টি কৌশল ব্যবহার করে তার কেস স্টাডি
- সঠিক মডেল মূল্যায়ন, সুপ্ত স্থান ভিজ্যুয়ালাইজেশন এবং মডেলের মনোযোগ সনাক্তকরণ
- ডোমেন গবেষণা সম্পাদন করা, আপনার নিজস্ব ডেটাসেট প্রক্রিয়াকরণ এবং মডেল পরীক্ষা স্থাপন করা
- অত্যাধুনিক স্থাপত্য, ধারণাগুলির অগ্রগতি, কী সেগুলিকে অনন্য করে তোলে এবং কীভাবে সেগুলি বাস্তবায়ন করা যায়
- KerasCV – একটি আধুনিক পাইপলাইন এবং মডেল তৈরি করার জন্য একটি WIP লাইব্রেরি
- কিভাবে পার্স এবং পেপার পড়ুন এবং সেগুলি নিজেই প্রয়োগ করুন
- আপনার আবেদনের উপর নির্ভর করে মডেল নির্বাচন করুন
- এন্ড-টু-এন্ড মেশিন লার্নিং পাইপলাইন তৈরি করা
- দ্রুত আর-সিএনএন, রেটিনানেট, এসএসডি এবং ইওলোর সাহায্যে অবজেক্ট সনাক্তকরণের উপর ল্যান্ডস্কেপ এবং অন্তর্দৃষ্টি
- উদাহরণ এবং শব্দার্থিক বিভাজন
- YOLOv5 এর সাথে রিয়েল-টাইম অবজেক্ট রিকগনিশন
- YOLOv5 অবজেক্ট ডিটেক্টর প্রশিক্ষণ
- KerasNLP ব্যবহার করে ট্রান্সফরমারের সাথে কাজ করা (শিল্প-শক্তি WIP লাইব্রেরি)
- চিত্রের ক্যাপশন তৈরি করতে ConvNets-এর সাথে ট্রান্সফরমার একীভূত করা
- ডিপড্রিম
- কম্পিউটার ভিশনের জন্য ডিপ লার্নিং মডেল অপ্টিমাইজেশান