কম্পিউটার ভিশনের অবজেক্ট ডিটেকশন প্রযুক্তি অসংখ্য অ্যাপ্লিকেশনের জন্য অপরিহার্য। আমরা এটি রোবোটিক্স, নজরদারি সরঞ্জাম, স্ব-চালিত অটোমোবাইল এবং আরও অনেক ক্ষেত্রে ব্যবহার করি। সুতরাং, আমরা একটি ছবি বা ভিডিওতে কিছু জিনিস খুঁজে পেতে এবং চিনতে পারি।
সর্বাধিক পরিচিত of অবজেক্ট আইডেন্টিফিকেশন অ্যালগরিদম হল YOLO (You Only Look One) মডেলের সেট। এই মডেলগুলি দ্বারা তৈরি করা হয় আল্ট্রালাইটিক্স এলএলসি।
এই সিরিজের সবচেয়ে সাম্প্রতিক সংস্করণ হল YOLOv5। এবং, এটি বাজারে দ্রুততম এবং সবচেয়ে সুনির্দিষ্ট বস্তু শনাক্তকরণ মডেল। নতুন ডেটাতে সাধারণীকরণের মডেলের ক্ষমতা ব্যাপকভাবে উন্নত করা হয়েছে। এছাড়াও, এটিতে অনেকগুলি বৈশিষ্ট্য রয়েছে যা এটিকে আগের পুনরাবৃত্তির চেয়ে ভাল কার্য সম্পাদন করে।
YOLOv5 রিয়েল-টাইম অ্যাপ্লিকেশনগুলির জন্য দুর্দান্ত কারণ এটি একটি একক GPU-তে প্রতি সেকেন্ডে 1000 ফ্রেম পর্যন্ত হারে ছবিগুলি প্রক্রিয়া করতে পারে৷
এই নিবন্ধে, আমরা YOLOv5 প্রবর্তন করব এবং এর প্রয়োগের ক্ষেত্রগুলির বিশদ বিবরণে যাব।
YOLO এর যাত্রা: YOLO থেকে YOLOv5 পর্যন্ত
জোসেফ রেডমন এট আল। মূলত YOLO, অবজেক্ট আইডেন্টিফিকেশন মডেলের একটি সেট, 2016 সালে প্রবর্তন করেছিল। প্রাথমিক YOLO মডেলটি রিয়েল টাইমে বস্তু শনাক্ত করতে পারে। যাইহোক, সেই সময়ে অন্যান্য মডেলের তুলনায় এর নির্ভুলতা কম ছিল।
YOLO-এর বেশ কয়েকটি আপগ্রেড সংস্করণ সারা বছর জুড়ে প্রকাশিত হয়েছিল। এবং অবশেষে, Ultralytics LLC YOLO সিরিজের নতুন সংস্করণ, YOLOv5 তৈরি করেছে।
YOLOv5 হল সবচেয়ে নির্ভুল এবং দ্রুততম বস্তু সনাক্তকরণ মডেল বর্তমানে উপলব্ধ।
গুরুত্বপূর্ণ বৈশিষ্ট্য
অ্যাঙ্কর বক্স
YOLOv5 অ্যাঙ্কর বক্স ব্যবহার করে একটি ছবিতে বস্তুর জন্য বাউন্ডিং বাক্সের পূর্বাভাস দেয়। মডেলটি ভবিষ্যদ্বাণী করে যে অনেকগুলি পূর্ব-নির্ধারিত বাক্সের মধ্যে কোনটি অ্যাঙ্কর বক্স ব্যবহার করে ছবির আইটেমের সাথে বিভিন্ন আকৃতির অনুপাতের সাথে সবচেয়ে ভাল মেলে৷ এগুলি পূর্বনির্ধারিত বাক্স।
এবং, তারা YOLOv5কে নির্ভুলতার সাথে একটি ছবিতে আইটেম সনাক্ত করতে এবং খুঁজে পেতে সক্ষম করে।
মোজাইক ডেটা পরিবর্ধন
প্রশিক্ষণের সময়, YOLOv5 মোজাইক নামে পরিচিত একটি পদ্ধতি ব্যবহার করে ডেটা বর্ধন. নতুন প্রশিক্ষণের ছবি বিকাশ করতে, আমাদের মডেল এলোমেলোভাবে বেশ কয়েকটি ছবির প্যাচগুলিকে একত্রিত করে। ফলস্বরূপ, মডেল আরও স্থিতিস্থাপক এবং নির্ভরযোগ্য হয়ে ওঠে। সুতরাং, এটি নতুন ডেটাতে সাধারণীকরণ করে এবং ওভারফিটিং হ্রাস করে।
একটি অনন্য প্রশিক্ষণ পাইপলাইন
একটি অনন্য প্রশিক্ষণ পাইপলাইন যা তত্ত্বাবধানে এবং মিশ্রিত করে অকার্যকর শেখা ব্যবহৃত হয়.
এইভাবে, মডেলটি একটি ছোট নমুনা থেকে শেখে এবং লেবেলবিহীন ইনপুট কার্যকরভাবে ব্যবহার করে। এটি মডেলের কর্মক্ষমতা বাড়ায় এবং নতুন ইনপুটগুলিতে সাধারণীকরণ করার ক্ষমতা বাড়ায়।
যে স্তরগুলি অবশিষ্ট এবং অ-অবশিষ্ট
YOLOv5 এর আর্কিটেকচারে স্তরগুলিকে একত্রিত করা হয়েছে যা অবশিষ্ট এবং অ-অবশিষ্ট। স্তরগুলি জুড়ে গ্রেডিয়েন্টগুলি প্রবাহিত হওয়ার অনুমতি দিয়ে, অবশিষ্ট স্তরগুলি কঠিন বৈশিষ্ট্যগুলি শিখতে মডেলটিকে সহায়তা করে। এছাড়াও, অ-অবশিষ্ট স্তরগুলি মডেলটিকে ইনপুট ছবির আরও ব্যাপক উপলব্ধি প্রদান করে। ফলস্বরূপ, YOLOv5 আরও সুনির্দিষ্টভাবে এবং কার্যকরভাবে কাজ করতে পারে।
কিভাবে YOLOv5 ব্যবহার করবেন
স্থাপন
YOLOv5 ইনস্টলেশন পিপ ব্যবহার করে দ্রুত সম্পন্ন করা যেতে পারে। পিপ একটি পাইথন প্যাকেজ ম্যানেজার। YOLOv5 ইনস্টল করার জন্য সাধারণ পদ্ধতিগুলি নিম্নরূপ:
1- PyTorch ইনস্টল করুন: YOLOv5 যেহেতু PyTorch কাঠামোর উপর ভিত্তি করে, আপনাকে প্রথমে PyTorch ইনস্টল করতে হবে।
pip install torch torchvision
2. CUDA ইনস্টল করুন: আপনি যদি একটি GPU-তে YOLOv5 চালাতে চান তাহলে আপনাকে অবশ্যই CUDA ইনস্টল করতে হবে।
3. YOLOv5 ইনস্টল করুন: PyTorch এবং CUDA সেট আপ করার পরে, YOLOv5 ডাউনলোড করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন৷
pip install yolov5
4-YOLOv5 ইনস্টল করার পরে, আপনাকে অবশ্যই পূর্ব-প্রশিক্ষিত ওজন ডাউনলোড করতে হবে। প্রাক-প্রশিক্ষিত ওজনগুলি Ultralytics GitHub রেপোতে পাওয়া যায়।
নিচে স্ক্রোল করে ওয়েবসাইটের "ওজন" অংশে যান। আপনি এখানে পাওয়া তালিকা থেকে প্রাক-প্রশিক্ষিত ওজন ডাউনলোড করতে পারেন।
5. ইতিমধ্যে প্রশিক্ষিত এবং আপনার ব্যবহারের ক্ষেত্রে সবচেয়ে উপযুক্ত ওজন নির্বাচন করুন। ডেটাসেট বা নির্দিষ্ট YOLOv5 সংস্করণ যা ওজন শিখেছে তা তালিকাকে সংকীর্ণ করতে ব্যবহার করা যেতে পারে।
6- সঠিক ওজন বাছাই করার পর, এর পাশের "ডাউনলোড" বোতামে ক্লিক করে ওজন বাছুন। ওজন হিসাবে ডাউনলোডের জন্য উপলব্ধ হবে. pt ফাইল।
7- ডাউনলোড করা ওজন ডিরেক্টরিতে স্থানান্তর করুন। এখানেই আপনার সনাক্তকরণ স্ক্রিপ্টটি কাজ করবে।
8- এই মুহুর্তে, আপনি আপনার সনাক্তকরণ স্ক্রিপ্টে প্রাক-প্রশিক্ষিত ওজন ব্যবহার করে আপনার ফটো বা ভিডিওগুলিতে অবজেক্ট সনাক্তকরণ চালাতে পারেন।
ডেটা প্রস্তুত করুন
YOLOv5 এর সাথে ব্যবহারের জন্য ডেটা প্রস্তুত করতে আপনাকে অবশ্যই নিম্নলিখিত পদক্ষেপগুলি গ্রহণ করতে হবে:
1. ডেটা সংগ্রহ করুন: প্রথম ধাপ হল ছবি বা ভিডিও ডেটা সংগ্রহ করা যা আপনার প্রয়োজন হবে৷ অবজেক্ট সনাক্তকরণ. আপনি যে জিনিসগুলি সনাক্ত করতে চান তা ফটো বা ভিডিওগুলিতে উপস্থিত থাকা উচিত৷
2- ডেটা ফর্ম্যাট করুন: আপনি যদি সেগুলি ব্যবহার করেন তবে আপনি কেবল আপনার স্ক্রিপ্টে ফটোগুলি আমদানি করতে পারেন৷ আপনি যদি একটি ব্যবহার করার পরিকল্পনা করেন তবে আপনাকে অবশ্যই একটি ভিডিওকে ফটোগুলির একটি সিরিজে পরিণত করতে হবে৷ আপনি OpenCV এর মত একটি লাইব্রেরি ব্যবহার করে একটি মুভি থেকে ফ্রেমগুলি বের করতে পারেন।
import cv2
img = cv2.imread('path/to/image')
OpenCV লাইব্রেরির সাথে, আপনি একটি ভিডিওকে একটি সিরিজের চিত্রে পরিণত করতে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:
import cv2
cap = cv2.VideoCapture('path/to/video')
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3. ডেটা লেবেল করুন: আপনি যদি আপনার ডেটাসেট ব্যবহার করেন তবে আপনাকে অবশ্যই ডেটা লেবেল করতে হবে। একটি ছবির প্রতিটি ফ্রেমে আপনি যে আইটেমগুলি সনাক্ত করতে চান তার চারপাশে বাউন্ডিং বাক্স আঁকুন। এটি ডেটা লেবেল করার প্রক্রিয়া। আপনি LabelImg এবং RectLabel সহ এই অপারেশনে আপনাকে সহায়তা করার জন্য বেশ কয়েকটি সরঞ্জাম ব্যবহার করতে পারেন।
4- ট্যাগ করার পরে আপনাকে অবশ্যই প্রশিক্ষণ এবং পরীক্ষার সেটগুলিতে ডেটা ভাগ করতে হবে। আপনার মডেল কতটা ভাল পারফর্ম করে তা মূল্যায়ন করার জন্য এটি অত্যন্ত গুরুত্বপূর্ণ।
5. অবশেষে, আপনাকে প্রশিক্ষণ বা পরীক্ষার আগে ডেটা প্রিপ্রসেস করতে হতে পারে। এতে ছবি বা ভিডিও স্কেল করা, পিক্সেলের মান মানক করা, বা ডেটা বৃদ্ধির পদ্ধতি ব্যবহার করা যেতে পারে।
এই পদক্ষেপগুলি সম্পূর্ণ করার পরে, আপনার ডেটা প্রস্তুত।
সনাক্তকরণ স্ক্রিপ্ট চালান
এখানে একটি সনাক্তকরণ স্ক্রিপ্টের একটি চিত্র রয়েছে যা একটি ছবি বিশ্লেষণ করে এবং বস্তুগুলি খুঁজে পায়।
import yolov5
import cv2
# Pre-trained weights should be loaded.
weights = 'path/to/weights.pt'
# Set the detection confidence level
conf_thres = 0.5
# Set the Non-Maxima Suppression (NMS) threshold
nms_thres = 0.5
# Create the detector object
detector = yolov5.YOLOv5(weights, conf_thres, nms_thres)
# Load the image
img = cv2.imread('path/to/image')
# Perform object detection
detections = detector.detect(img)
# Print the detections
for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections:
print("Object:", classes[int(cls_pred)])
print("Confidence:", conf)
print("Bounding box:", (x1, y1, x2, y2))
পোস্ট প্রসেসিং
অ-সর্বোচ্চ দমন অবজেক্ট ডিটেকশন (NMS) এ ব্যবহৃত সবচেয়ে ঘন ঘন পোস্ট-প্রসেসিং কৌশলগুলির মধ্যে একটি। আমরা একই বস্তুর জন্য ওভারল্যাপিং বাউন্ডিং বাক্সগুলি দূর করতে NMS ব্যবহার করি। সনাক্তকরণে NMS কার্যকর করতে, আমরা OpenCV লাইব্রেরির cv2.dnn.NMSBoxes() পদ্ধতি ব্যবহার করতে পারি।
NMS ব্যবহার করে কীভাবে পোস্ট-প্রসেস সনাক্তকরণ করা যায় তার একটি উদাহরণ এখানে।
import cv2
# Perform Non-Maxima Suppression (NMS)
সূচক = cv2.dnn.NMSBoxes(সনাক্তকরণ, আত্মবিশ্বাস, conf_thres, nms_thres)
কল্পনা
ভিজ্যুয়ালাইজেশনের ক্ষেত্রে, আমরা আবার ওপেনসিভির মতো একটি লাইব্রেরি ব্যবহার করতে পারি। আমরা উৎসের ছবি বা ভিডিওতে আবিষ্কৃত বস্তুর চারপাশে বাউন্ডিং বাক্স প্রদর্শন করতে পারি। চিত্রের বাউন্ডিং বাক্সগুলি আঁকতে, cv2.rectangle() পদ্ধতি ব্যবহার করুন। আসল ছবিতে সনাক্তকরণগুলি কীভাবে দেখতে হয় তা এখানে:
সিভি 2 আমদানি করুন
# Draw the bounding boxes on the image
সূচকে আমার জন্য:
i = i[0]
x1, y1, x2, y2 = detections[i][0], detections[i][1], detections[i][2], detections[i][3]
cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)
cv2.putText(img, classes[class_ids[i]], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# Show the image
cv2.imshow("Object Detection", img)
cv2
অ্যাপ্লিকেশন
YOLOv5 একটি শক্তিশালী বস্তু সনাক্তকরণ মডেল। অতএব, আমরা অনেক বাস্তব-বিশ্বের পরিস্থিতিতে এটি ব্যবহার করতে পারি। স্ব-চালিত গাড়িগুলির মধ্যে সবচেয়ে বিশিষ্ট ব্যবহারগুলির মধ্যে একটি। YOLOv5 রিয়েল-টাইমে আইটেম সনাক্ত করতে পারে যেমন অটোমোবাইল এবং ট্রাফিক লাইট।
নজরদারি ব্যবস্থায়, আমরা YOLOv5 ব্যবহার করতে পারি লাইভ ভিডিও স্ট্রীমে বস্তু চিনতে এবং ট্র্যাক করতে। অধিকন্তু, YOLOv5 রোবোটিক্সে একটি দুর্দান্ত সম্পদ হতে পারে। এটি রোবটকে তাদের পারিপার্শ্বিক অবস্থা সনাক্ত করতে এবং বুঝতে সাহায্য করতে পারে। নেভিগেশন এবং ম্যানিপুলেশনের মতো ক্রিয়াকলাপের জন্য এটি অত্যন্ত গুরুত্বপূর্ণ।
YOLOv5 যেকোন শিল্পে ব্যবহার করা যেতে পারে যার জন্য বস্তু সনাক্তকরণ প্রয়োজন, যেমন খুচরা, খেলাধুলা, চিকিৎসা এবং নিরাপত্তা।
উপসংহার
অবশেষে, YOLOv5 হল YOLO পরিবারের সবচেয়ে সাম্প্রতিক এবং পরিশীলিত সংস্করণ অবজেক্ট সনাক্তকরণ মডেল
. এছাড়াও, এটা বলা ন্যায্য যে এটি উপলব্ধ সবচেয়ে সঠিক বস্তু সনাক্তকরণ মডেল। এর উচ্চ নির্ভুলতা এবং গতির জন্য ধন্যবাদ, আপনি নিরাপদে আপনার বস্তু সনাক্তকরণ প্রকল্পের জন্য এটি চয়ন করতে পারেন।
Resky Agus
আমি yolov5 দিয়ে সনাক্তকরণ বাহন সম্পর্কে একটি প্রথম জার্নাল তৈরি করি এবং এই ওয়েবটি আমাকে সেই সম্পর্কে তথ্য অনুসন্ধান করতে সাহায্য করে।
আমি এআই সম্পর্কে খুব আগ্রহী।
আপনি যদি পারেন আমার এআই সম্পর্কে অনেক প্রশ্ন আছে হয়তো আপনি আমাকে সাহায্য করতে পারেন
ধন্যবাদ