Python PlatoBlockchain ডেটা ইন্টেলিজেন্সে YOLOv7 এর সাথে পোজ অনুমান/কীপয়েন্ট সনাক্তকরণ। উল্লম্ব অনুসন্ধান. আ.

Python এ YOLOv7 এর সাথে ভঙ্গি অনুমান/কীপয়েন্ট সনাক্তকরণ

ভূমিকা

অবজেক্ট ডিটেকশন হল কম্পিউটার ভিশনের একটি বৃহৎ ক্ষেত্র, এবং কম্পিউটার ভিশনের অন্যতম গুরুত্বপূর্ণ অ্যাপ্লিকেশন "বন্যে"।

অবজেক্ট ডিটেকশন ইমেজ শ্রেণীবিভাগের মতো প্রমিত নয়, প্রধানত কারণ বেশিরভাগ নতুন বিকাশ সাধারণত বড় লাইব্রেরি এবং ফ্রেমওয়ার্কের পরিবর্তে পৃথক গবেষক, রক্ষণাবেক্ষণকারী এবং বিকাশকারীদের দ্বারা করা হয়। TensorFlow বা PyTorch-এর মতো একটি কাঠামোতে প্রয়োজনীয় ইউটিলিটি স্ক্রিপ্টগুলি প্যাকেজ করা এবং এপিআই নির্দেশিকাগুলি বজায় রাখা কঠিন যা এখন পর্যন্ত বিকাশকে নির্দেশ করেছে।

এটি বস্তুর শনাক্তকরণকে কিছুটা জটিল করে তোলে, সাধারণত আরও ভার্বস (কিন্তু সবসময় নয়), এবং চিত্রের শ্রেণীবিভাগের তুলনায় কম অ্যাক্সেসযোগ্য।

সৌভাগ্যবশত জনসাধারণের জন্য - Ultralytics তাদের YOLOv5 এর আশেপাশে একটি সহজ, খুব শক্তিশালী এবং সুন্দর অবজেক্ট ডিটেকশন API তৈরি করেছে যা অন্যান্য গবেষণা এবং উন্নয়ন দলগুলি YOLOv7 এর মতো নতুন সংস্করণে প্রসারিত করেছে।

এই সংক্ষিপ্ত নির্দেশিকাতে, আমরা Python-এ অত্যাধুনিক YOLOv7 সহ পোজ এস্টিমেশন (কীপয়েন্ট ডিটেকশন) সম্পাদন করব।

কীপয়েন্টগুলি বিভিন্ন পয়েন্ট হতে পারে - মুখের অংশ, শরীরের অঙ্গপ্রত্যঙ্গ ইত্যাদি। পোজ অনুমান হল কীপয়েন্ট সনাক্তকরণের একটি বিশেষ কেস - যেখানে পয়েন্টগুলি একটি মানব দেহের অংশ, এবং ব্যয়বহুল অবস্থান ট্র্যাকিং হার্ডওয়্যার প্রতিস্থাপন করতে ব্যবহার করা যেতে পারে, ওভার-দ্য-এয়ার রোবোটিক্স নিয়ন্ত্রণ সক্ষম করুন এবং AR এবং VR-এর মাধ্যমে মানুষের আত্মপ্রকাশের একটি নতুন যুগকে শক্তিশালী করুন।

YOLO এবং পোজ অনুমান

YOLO (আপনি শুধুমাত্র একবার দেখুন) একটি পদ্ধতি, সেইসাথে বস্তু সনাক্তকরণের জন্য নির্মিত মডেলের পরিবার। 2015 সালে সূচনা হওয়ার পর থেকে, YOLOv1, YOLOv2 (YOLO9000) এবং YOLOv3 একই লেখক(রা) দ্বারা প্রস্তাবিত হয়েছে – এবং গভীর শিক্ষার সম্প্রদায় অব্যাহত বছরগুলিতে ওপেন সোর্সড অগ্রগতি অব্যাহত রেখেছে।

Ultralytics' YOLOv5 PyTorch-এ YOLO-এর প্রথম বড় আকারের বাস্তবায়ন, যা এটিকে আগের চেয়ে আরও বেশি অ্যাক্সেসযোগ্য করে তুলেছে, কিন্তু YOLOv5-এর এমন একটি পা রাখার প্রধান কারণ হল এর চারপাশে নির্মিত সুন্দর সহজ এবং শক্তিশালী API। প্রকল্পটি অপ্রয়োজনীয় বিশদগুলিকে বিমূর্ত করে, কাস্টমাইজ করার অনুমতি দেয়, কার্যত সমস্ত ব্যবহারযোগ্য রপ্তানি বিন্যাস, এবং আশ্চর্যজনক অনুশীলনগুলি নিয়োগ করে যা সমগ্র প্রকল্পটিকে দক্ষ এবং যতটা হতে পারে ততটা অনুকূল করে তোলে।

YOLOv5 এখনও অবজেক্ট ডিটেকশন মডেল তৈরি করার প্রধান প্রকল্প, এবং অনেক রিপোজিটরি যা YOLO পদ্ধতিকে অগ্রসর করার লক্ষ্যে YOLOv5 দিয়ে একটি বেসলাইন হিসাবে শুরু করে এবং একটি অনুরূপ API অফার করে (অথবা কেবল প্রকল্পটি কাঁটাচামচ করে এটির উপরে তৈরি করে)। এরকমই ঘটনা YOLOR (আপনি শুধুমাত্র একটি প্রতিনিধিত্ব শিখুন) এবং YOLOv7 যা YOLOR (একই লেখক) এর উপরে নির্মিত যা YOLO পদ্ধতির সর্বশেষ অগ্রগতি।

YOLOv7 শুধুমাত্র একটি অবজেক্ট ডিটেকশন আর্কিটেকচার নয় - নতুন মডেল হেড প্রদান করে, যা কিপয়েন্ট (কঙ্কাল) আউটপুট করতে পারে এবং শুধুমাত্র বাউন্ডিং বক্স রিগ্রেশন ছাড়াও ইনস্ট্যান্স সেগমেন্টেশন করতে পারে, যা পূর্ববর্তী YOLO মডেলের সাথে মানসম্মত ছিল না। এটা আশ্চর্যজনক কিছু নয়, যেহেতু অনেক অবজেক্ট ডিটেকশন আর্কিটেকচার আগেও উদাহরণ সেগমেন্টেশন এবং কীপয়েন্ট ডিটেকশন টাস্কের জন্য পুনরুজ্জীবিত করা হয়েছিল, শেয়ার করা সাধারণ আর্কিটেকচারের কারণে, টাস্কের উপর নির্ভর করে বিভিন্ন আউটপুট সহ। যদিও এটি আশ্চর্যজনক নয় - সমর্থনকারী উদাহরণ বিভাজন এবং কীপয়েন্ট সনাক্তকরণ সম্ভবত YOLO-ভিত্তিক মডেলগুলির জন্য নতুন স্ট্যান্ডার্ড হয়ে উঠবে, যা কয়েক বছর আগে কার্যত অন্য সমস্ত দ্বি-পর্যায়ের ডিটেক্টরকে ছাড়িয়ে যেতে শুরু করেছে।

এটি ইন্সট্যান্স সেগমেন্টেশন এবং কীপয়েন্ট সনাক্তকরণকে আগের চেয়ে দ্রুততর করে তোলে, দ্বি-পর্যায়ের ডিটেক্টরের চেয়ে সহজ আর্কিটেকচারের সাথে।

মডেলটি নিজেই স্থাপত্য পরিবর্তনের মাধ্যমে তৈরি করা হয়েছিল, সেইসাথে প্রশিক্ষণের অপ্টিমাইজিং দিকগুলিকে "ব্যাগ-অফ-ফ্রিবিস" হিসাবে ডাকা হয়েছে, যা অনুমান খরচ না বাড়িয়ে নির্ভুলতা বাড়িয়েছে।

YOLOv7 ইনস্টল করা হচ্ছে

আসুন এগিয়ে যান এবং গিটহাব থেকে প্রকল্পটি ইনস্টল করি:

! 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

বিঃদ্রঃ: Google Colab Notebooks কল করার পরেও পরবর্তী সেলের প্রধান কার্যকারী ডিরেক্টরিতে রিসেট করে %cd dirname, তাই আপনাকে প্রতিটি কক্ষে এটিকে কল করতে হবে যেখানে আপনি একটি অপারেশন করতে চান৷ স্থানীয় জুপিটার নোটবুকগুলি পরিবর্তনটি মনে রাখে, তাই কমান্ডটি কল করা চালিয়ে যাওয়ার দরকার নেই৷

যখনই আপনি একটি নির্দিষ্ট ওজনের সেট সহ কোড চালান - সেগুলি এই ডিরেক্টরিতে ডাউনলোড এবং সংরক্ষণ করা হবে। ভঙ্গি অনুমান সঞ্চালন করতে, আমরা সেই কাজের জন্য প্রাক-প্রশিক্ষিত YOLOv7 মডেলের ওজন ডাউনলোড করতে চাই, যা নীচে পাওয়া যাবে /releases/download/ GitHub এ ট্যাব:

! curl -L https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-w6-pose.pt -o yolov7-w6-pose.pt
%cd ..

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  153M  100  153M    0     0  3742k      0  0:00:42  0:00:42 --:--:-- 4573k

/Users/macbookpro/jup

চমৎকার, আমরা ডাউনলোড করেছি yolov7-w6-pose.pt ওজন ফাইল, যা পোজ অনুমানের জন্য একটি প্রশিক্ষিত মডেল লোড এবং পুনর্গঠন করতে ব্যবহার করা যেতে পারে।

YOLOv7 পোজ অনুমান মডেল লোড করা হচ্ছে

আসুন লাইব্রেরিগুলি আমদানি করি যা আমাদের পোজ অনুমান সম্পাদন করতে হবে:

import torch
from torchvision import transforms

from utils.datasets import letterbox
from utils.general import non_max_suppression_kpt
from utils.plots import output_to_keypoint, plot_skeleton_kpts

import matplotlib.pyplot as plt
import cv2
import numpy as np

torch এবং torchvision যথেষ্ট সহজবোধ্য - YOLOv7 PyTorch এর সাথে প্রয়োগ করা হয়েছে। দ্য utils.datasets, utils.general এবং utils.plots মডিউলগুলি YOLOv7 প্রকল্প থেকে আসে এবং আমাদেরকে এমন পদ্ধতিগুলি সরবরাহ করে যা অনুমান চালানোর জন্য মডেলের জন্য প্রিপ্রসেসিং এবং ইনপুট প্রস্তুত করতে সহায়তা করে। এর মধ্যে রয়েছে letterbox() ছবি প্যাড করতে, non_max_supression_keypoint() মডেলের প্রাথমিক আউটপুটে নন-ম্যাক্স সাপ্রেশন অ্যালগরিদম চালানোর জন্য এবং আমাদের ব্যাখ্যার জন্য একটি পরিষ্কার আউটপুট তৈরি করতে, সেইসাথে output_to_keypoint() এবং plot_skeleton_kpts() একটি প্রদত্ত ছবিতে কীপয়েন্ট যোগ করার পদ্ধতি, একবার সেগুলি পূর্বাভাস দেওয়া হয়।

আমরা ওজন ফাইল থেকে মডেল লোড করতে পারেন সঙ্গে torch.load(). একটি জিপিইউ উপলব্ধ আছে কিনা তা পরীক্ষা করার জন্য একটি ফাংশন তৈরি করুন, মডেলটি লোড করুন, এটিকে ইনফারেন্স মোডে রাখুন এবং যদি উপলব্ধ থাকে তবে এটিকে জিপিইউতে স্থানান্তর করুন:

def load_model():
    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    model = torch.load('yolov7/yolov7-w6-pose.pt', map_location=device)['model']
    
    model.float().eval()

    if torch.cuda.is_available():
        
        
        model.half().to(device)
    return model

model = load_model()

সেরা-অভ্যাস, শিল্প-স্বীকৃত মান এবং অন্তর্ভুক্ত চিট শীট সহ গিট শেখার জন্য আমাদের হ্যান্ডস-অন, ব্যবহারিক গাইড দেখুন। গুগলিং গিট কমান্ড এবং আসলে বন্ধ করুন শেখা এটা!

মডেল লোড দিয়ে, এর একটি তৈরি করা যাক run_inference() পদ্ধতি যা আমাদের সিস্টেমে একটি ফাইল নির্দেশ করে একটি স্ট্রিং গ্রহণ করে। পদ্ধতিটি OpenCV ব্যবহার করে চিত্রটি পড়বে (cv2), এটি দিয়ে প্যাড করুন letterbox(), এটিতে রূপান্তরগুলি প্রয়োগ করুন এবং এটিকে একটি ব্যাচে পরিণত করুন (মডেলটি প্রশিক্ষিত এবং ব্যাচ আশা করে, যথারীতি):

def run_inference(url):
    image = cv2.imread(url) 
    
    image = letterbox(image, 960, stride=64, auto=True)[0] 
    
    image = transforms.ToTensor()(image) 
    
    image = image.unsqueeze(0) 
    output, _ = model(image) 
    return output, image

এখানে, আমরা রূপান্তরিত চিত্রটি ফিরিয়ে দিয়েছি (কারণ আমরা আসলটি বের করতে চাই এবং এটিতে প্লট করতে চাই) এবং মডেলের আউটপুট। এই আউটপুটগুলিতে 45900টি কীপয়েন্ট পূর্বাভাস রয়েছে, যার বেশিরভাগই ওভারল্যাপ করে। আমরা এই কাঁচা ভবিষ্যদ্বাণীগুলিতে নন-ম্যাক্স সাপ্রেশন প্রয়োগ করতে চাই, ঠিক যেমন অবজেক্ট ডিটেকশন ভবিষ্যদ্বাণীগুলির সাথে (যেখানে অনেকগুলি বাউন্ডিং বাক্সের পূর্বাভাস দেওয়া হয় এবং তারপরে কিছু আত্মবিশ্বাস এবং IoU থ্রেশহোল্ড দেওয়া হলে সেগুলি "পতন" হয়)। দমন করার পরে, আমরা মূল চিত্রটিতে প্রতিটি কীপয়েন্ট প্লট করতে পারি এবং এটি প্রদর্শন করতে পারি:

def visualize_output(output, image):
    output = non_max_suppression_kpt(output, 
                                     0.25, 
                                     0.65, 
                                     nc=model.yaml['nc'], 
                                     nkpt=model.yaml['nkpt'], 
                                     kpt_label=True)
    with torch.no_grad():
        output = output_to_keypoint(output)
    nimg = image[0].permute(1, 2, 0) * 255
    nimg = nimg.cpu().numpy().astype(np.uint8)
    nimg = cv2.cvtColor(nimg, cv2.COLOR_RGB2BGR)
    for idx in range(output.shape[0]):
        plot_skeleton_kpts(nimg, output[idx, 7:].T, 3)
    plt.figure(figsize=(12, 12))
    plt.axis('off')
    plt.imshow(nimg)
    plt.show()

এখন, কিছু ইনপুট ছবির জন্য, যেমন karate.jpg প্রধান কার্যকারী ডিরেক্টরিতে, আমরা অনুমান চালাতে পারি, নন-ম্যাক্স সাপ্রেশন করতে পারি এবং এর সাথে ফলাফল প্লট করতে পারি:

output, image = run_inference('./karate.jpg')
visualize_output(output, image)

এর ফলে:

এটি অনুমান করা একটি মোটামুটি কঠিন চিত্র! ডানদিকে অনুশীলনকারীর ডান হাতের বেশিরভাগ অংশ লুকানো আছে, এবং আমরা দেখতে পাচ্ছি যে মডেলটি অনুমান করেছে যে এটি লুকানো এবং শরীরের ডানদিকে, অনুপস্থিত যে কনুই বাঁকানো আছে এবং বাহুর একটি অংশ সামনে রয়েছে . বাম দিকের অনুশীলনকারী, যা অনেক বেশি স্পষ্টভাবে দেখা যায়, এমনকি একটি লুকানো পা দিয়েও সঠিকভাবে অনুমান করা হয়।

প্রকৃতপক্ষে - পিছনে বসা একজন ব্যক্তি, ক্যামেরার কাছে প্রায় সম্পূর্ণ অদৃশ্য বসার সময় নিতম্বের অবস্থানের উপর ভিত্তি করে তাদের ভঙ্গি আপাতদৃষ্টিতে সঠিকভাবে অনুমান করা হয়েছে। নেটওয়ার্কের পক্ষে দুর্দান্ত কাজ!

উপসংহার

এই নির্দেশিকায় - আমরা YOLOv7-এ সংক্ষিপ্তভাবে দেখেছি, YOLO পরিবারের সর্বশেষ অগ্রগতি, যা YOLOR-এর উপরে তৈরি করে এবং আরও বেশির ভাগ YOLO-ভিত্তিক মডেলের মানক বস্তু সনাক্তকরণ ক্ষমতার বাইরে ইন্সট্যান্স সেগমেন্টেশন এবং কীপয়েন্ট সনাক্তকরণ ক্ষমতা প্রদান করে। .

তারপরে আমরা দেখেছি কিভাবে আমরা প্রকাশ করা ওজনের ফাইলগুলি ডাউনলোড করতে পারি, একটি মডেল তৈরি করতে সেগুলি লোড করতে পারি এবং মানুষের জন্য পোজ অনুমান অনুমান সম্পাদন করতে পারি, যা চিত্তাকর্ষক ফলাফল দেয়।

আরও এগিয়ে যাওয়া - কম্পিউটার ভিশনের জন্য ব্যবহারিক গভীর শিক্ষা

আপনার অনুসন্ধিৎসু প্রকৃতি আপনাকে আরও যেতে চায়? আমরা আমাদের চেক আউট সুপারিশ পথ: "পাইথনের সাথে কম্পিউটার ভিশনের জন্য ব্যবহারিক গভীর শিক্ষা".

Python PlatoBlockchain ডেটা ইন্টেলিজেন্সে YOLOv7 এর সাথে পোজ অনুমান/কীপয়েন্ট সনাক্তকরণ। উল্লম্ব অনুসন্ধান. আ.

আরেকটি কম্পিউটার ভিশন কোর্স?

আমরা MNIST সংখ্যা বা MNIST ফ্যাশনের শ্রেণিবিন্যাস করব না। তারা অনেক আগে থেকেই তাদের দায়িত্ব পালন করেছে। উন্নত ব্ল্যাক-বক্স আর্কিটেকচারগুলিকে পারফরম্যান্সের ভার বহন করতে দেওয়ার আগে অনেকগুলি শেখার সংস্থান মৌলিক ডেটাসেট এবং মৌলিক আর্কিটেকচারের উপর ফোকাস করছে।

আমরা ফোকাস করতে চাই demystification, বাস্তবতা, বোধশক্তি, স্বজ্ঞা এবং বাস্তব প্রকল্প. শিখতে চাই কিভাবে আপনি একটি পার্থক্য করতে পারেন? স্তন ক্যান্সারের জন্য আমাদের মস্তিষ্ক যেভাবে ছবিগুলিকে প্রক্রিয়াকরণ করে, তার থেকে শুরু করে স্তন ক্যান্সারের জন্য একটি গবেষণা-গ্রেড ডিপ লার্নিং ক্লাসিফায়ার লেখা পর্যন্ত আমরা আপনাকে "হ্যালুসিনেট" করার নেটওয়ার্কগুলিতে নিয়ে যাব, আপনাকে ব্যবহারিক কাজের মাধ্যমে নীতি ও তত্ত্ব শেখাবো, আপনাকে সজ্জিত করব কম্পিউটারের দৃষ্টিভঙ্গি সমাধানের জন্য গভীর শিক্ষা প্রয়োগে বিশেষজ্ঞ হওয়ার উপায় এবং সরঞ্জাম।

ভিতরে কি?

  • দৃষ্টির প্রথম নীতি এবং কীভাবে কম্পিউটারকে "দেখতে" শেখানো যায়
  • কম্পিউটার ভিশনের বিভিন্ন কাজ এবং অ্যাপ্লিকেশন
  • ট্রেডের টুল যা আপনার কাজকে সহজ করে তুলবে
  • কম্পিউটার ভিশনের জন্য ডেটাসেট খোঁজা, তৈরি এবং ব্যবহার করা
  • কনভোল্যুশনাল নিউরাল নেটওয়ার্কের তত্ত্ব এবং প্রয়োগ
  • ডেটাসেটে ডোমেন শিফট, সহ-ঘটনা এবং অন্যান্য পক্ষপাতগুলি পরিচালনা করা
  • আপনার সুবিধার জন্য শেখার স্থানান্তর এবং অন্যদের প্রশিক্ষণের সময় এবং গণনামূলক সংস্থানগুলি ব্যবহার করুন
  • একটি অত্যাধুনিক স্তন ক্যান্সারের শ্রেণীবিভাগ তৈরি এবং প্রশিক্ষণ
  • কীভাবে মূলধারার ধারণাগুলিতে সংশয়বাদের একটি স্বাস্থ্যকর ডোজ প্রয়োগ করা যায় এবং ব্যাপকভাবে গৃহীত কৌশলগুলির প্রভাব বোঝা যায়
  • T-SNE এবং PCA ব্যবহার করে একটি ConvNet-এর "ধারণা স্থান" ভিজ্যুয়ালাইজ করা
  • কোম্পানিগুলি কীভাবে ভাল ফলাফল অর্জন করতে কম্পিউটার দৃষ্টি কৌশল ব্যবহার করে তার কেস স্টাডি
  • সঠিক মডেল মূল্যায়ন, সুপ্ত স্থান ভিজ্যুয়ালাইজেশন এবং মডেলের মনোযোগ সনাক্তকরণ
  • ডোমেন গবেষণা সম্পাদন করা, আপনার নিজস্ব ডেটাসেট প্রক্রিয়াকরণ এবং মডেল পরীক্ষা স্থাপন করা
  • অত্যাধুনিক স্থাপত্য, ধারণাগুলির অগ্রগতি, কী সেগুলিকে অনন্য করে তোলে এবং কীভাবে সেগুলি বাস্তবায়ন করা যায়
  • KerasCV – একটি আধুনিক পাইপলাইন এবং মডেল তৈরি করার জন্য একটি WIP লাইব্রেরি
  • কিভাবে পার্স এবং পেপার পড়ুন এবং সেগুলি নিজেই প্রয়োগ করুন
  • আপনার আবেদনের উপর নির্ভর করে মডেল নির্বাচন করুন
  • এন্ড-টু-এন্ড মেশিন লার্নিং পাইপলাইন তৈরি করা
  • দ্রুত আর-সিএনএন, রেটিনানেট, এসএসডি এবং ইওলোর সাহায্যে অবজেক্ট সনাক্তকরণের উপর ল্যান্ডস্কেপ এবং অন্তর্দৃষ্টি
  • উদাহরণ এবং শব্দার্থিক বিভাজন
  • YOLOv5 এর সাথে রিয়েল-টাইম অবজেক্ট রিকগনিশন
  • YOLOv5 অবজেক্ট ডিটেক্টর প্রশিক্ষণ
  • KerasNLP ব্যবহার করে ট্রান্সফরমারের সাথে কাজ করা (শিল্প-শক্তি WIP লাইব্রেরি)
  • চিত্রের ক্যাপশন তৈরি করতে ConvNets-এর সাথে ট্রান্সফরমার একীভূত করা
  • ডিপড্রিম
  • কম্পিউটার ভিশনের জন্য ডিপ লার্নিং মডেল অপ্টিমাইজেশান

সময় স্ট্যাম্প:

থেকে আরো Stackabuse