PyTorch এবং torchvision PlatoBlockchain ডেটা ইন্টেলিজেন্স সহ রেটিনানেট অবজেক্ট ডিটেকশন। উল্লম্ব অনুসন্ধান. আ.

পাইটর্চ এবং টর্চভিশন সহ রেটিনানেট অবজেক্ট সনাক্তকরণ

ভূমিকা

অবজেক্ট ডিটেকশন হল কম্পিউটার ভিশনের একটি বৃহৎ ক্ষেত্র, এবং কম্পিউটার ভিশনের অন্যতম গুরুত্বপূর্ণ অ্যাপ্লিকেশন "বন্যে"। এক প্রান্তে, এটি স্বায়ত্তশাসিত সিস্টেম তৈরি করতে ব্যবহার করা যেতে পারে যা পরিবেশের মাধ্যমে এজেন্টদের নেভিগেট করতে পারে - তা রোবটগুলি কার্য সম্পাদন করে বা স্ব-ড্রাইভিং গাড়িই হোক, তবে এর জন্য অন্যান্য ক্ষেত্রের সাথে ছেদ প্রয়োজন। যাইহোক, অসঙ্গতি সনাক্তকরণ (যেমন একটি লাইনে ত্রুটিপূর্ণ পণ্য), চিত্রের মধ্যে বস্তুর অবস্থান, মুখের সনাক্তকরণ এবং বস্তু সনাক্তকরণের অন্যান্য বিভিন্ন অ্যাপ্লিকেশন অন্যান্য ক্ষেত্রগুলিকে ছেদ না করেই করা যেতে পারে।

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

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

PyTorch/TorchVision এর রেটিনানেট দিয়ে অবজেক্ট ডিটেকশন

torchvision PyTorch-এর কম্পিউটার ভিশন প্রকল্প, এবং এর লক্ষ্য হল PyTorch-ভিত্তিক সিভি মডেলগুলির উন্নয়ন সহজতর করা, রূপান্তর এবং পরিবর্ধন স্ক্রিপ্ট প্রদান করে, একটি মডেল চিড়িয়াখানা যেখানে প্রাক-প্রশিক্ষিত ওজন, ডেটাসেট এবং ইউটিলিটিগুলি একজন অনুশীলনকারীর জন্য উপযোগী হতে পারে।

বিটাতে থাকা অবস্থায় এবং অনেক পরীক্ষামূলক - torchvision বেছে নেওয়ার জন্য কয়েকটি মডেল সহ একটি অপেক্ষাকৃত সহজ অবজেক্ট ডিটেকশন API অফার করে:

  • দ্রুত আর-সিএনএন
  • রেটিনানেট
  • FCOS (সম্পূর্ণ কনভোল্যুশনাল রেটিনানেট)
  • এসএসডি (ভিজিজি১৬ ব্যাকবোন… ইয়েকস)
  • SSDLite (MobileNetV3 ব্যাকবোন)

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

$ pip install torch torchvision

এর কিছু ইউটিলিটি ফাংশন লোড করা যাক, যেমন read_image(), draw_bounding_boxes() এবং to_pil_image() রেটিনানেট এবং এর প্রাক-প্রশিক্ষিত ওজন (MS COCO) ইম্পোর্ট করার পরে ছবি পড়া, আঁকা এবং আউটপুট করা সহজ করতে:

from torchvision.io.image import read_image
from torchvision.utils import draw_bounding_boxes
from torchvision.transforms.functional import to_pil_image
from torchvision.models.detection import retinanet_resnet50_fpn_v2, RetinaNet_ResNet50_FPN_V2_Weights

import matplotlib.pyplot as plt

RetinaNet এর উপরে একটি ResNet50 ব্যাকবোন এবং একটি ফিচার পিরামিড নেটওয়ার্ক (FPN) ব্যবহার করে। যদিও ক্লাসের নাম ভার্বস, এটি আর্কিটেকচারের নির্দেশক। এর ব্যবহার করে একটি চিত্র আনা যাক requests লাইব্রেরি এবং আমাদের স্থানীয় ড্রাইভে একটি ফাইল হিসাবে সংরক্ষণ করুন:

import requests
response = requests.get('https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg')
open("obj_det.jpeg", "wb").write(response.content)

img = read_image("obj_det.jpeg")

জায়গায় একটি ইমেজ সহ - আমরা আমাদের মডেল এবং ওজনগুলিকে তাত্ক্ষণিক করতে পারি:

weights = RetinaNet_ResNet50_FPN_V2_Weights.DEFAULT
model = retinanet_resnet50_fpn_v2(weights=weights, score_thresh=0.35)

model.eval()

preprocess = weights.transforms()

সার্জারির score_thresh আর্গুমেন্ট থ্রেশহোল্ডকে সংজ্ঞায়িত করে যেখানে একটি বস্তুকে একটি শ্রেণীর বস্তু হিসাবে সনাক্ত করা হয়। স্বজ্ঞাতভাবে, এটি আত্মবিশ্বাসের থ্রেশহোল্ড, এবং মডেলটি যদি 35% এর কম আত্মবিশ্বাসী হয় যে এটি একটি শ্রেণীর অন্তর্গত তাহলে আমরা একটি বস্তুকে একটি শ্রেণীর অন্তর্ভুক্ত করার জন্য শ্রেণীবদ্ধ করব না।

আসুন আমাদের ওজন থেকে রূপান্তরগুলি ব্যবহার করে চিত্রটি প্রিপ্রসেস করি, একটি ব্যাচ তৈরি করি এবং অনুমান চালাই:

batch = [preprocess(img)]
prediction = model(batch)[0]

এটা, আমাদের prediction অভিধানে অনুমানকৃত বস্তুর শ্রেণী এবং অবস্থান রয়েছে! এখন, ফলাফলগুলি এই ফর্মে আমাদের জন্য খুব একটা উপযোগী নয় – আমরা ওজন থেকে মেটাডেটা নিয়ে লেবেলগুলি বের করতে চাই এবং বাউন্ডিং বাক্সগুলি আঁকতে চাই, যা এর মাধ্যমে করা যেতে পারে draw_bounding_boxes():

labels = [weights.meta["categories"][i] for i in prediction["labels"]]

box = draw_bounding_boxes(img, boxes=prediction["boxes"],
                          labels=labels,
                          colors="cyan",
                          width=2, 
                          font_size=30,
                          font='Arial')

im = to_pil_image(box.detach())

fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(im)
plt.show()

এর ফলে:

রেটিনানেট আসলে গাড়ির পেছনে উঁকি মারতে থাকা ব্যক্তিকে শ্রেণিবদ্ধ করেছে! এটি একটি বেশ কঠিন শ্রেণীবিভাগ।

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

আপনি প্রতিস্থাপনের মাধ্যমে রেটিনানেটকে একটি এফসিওএস (সম্পূর্ণ কনভোলিউশনাল রেটিনানেট) এ স্যুইচ করতে পারেন retinanet_resnet50_fpn_v2 সঙ্গে fcos_resnet50_fpn, এবং ব্যবহার করুন FCOS_ResNet50_FPN_Weights ওজন:

from torchvision.io.image import read_image
from torchvision.utils import draw_bounding_boxes
from torchvision.transforms.functional import to_pil_image
from torchvision.models.detection import fcos_resnet50_fpn, FCOS_ResNet50_FPN_Weights

import matplotlib.pyplot as plt
import requests
response = requests.get('https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg')
open("obj_det.jpeg", "wb").write(response.content)

img = read_image("obj_det.jpeg")
weights = FCOS_ResNet50_FPN_Weights.DEFAULT
model = fcos_resnet50_fpn(weights=weights, score_thresh=0.35)
model.eval()

preprocess = weights.transforms()
batch = [preprocess(img)]
prediction = model(batch)[0]

labels = [weights.meta["categories"][i] for i in prediction["labels"]]

box = draw_bounding_boxes(img, boxes=prediction["boxes"],
                          labels=labels,
                          colors="cyan",
                          width=2, 
                          font_size=30,
                          font='Arial')

im = to_pil_image(box.detach())

fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(im)
plt.show()

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

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

PyTorch এবং torchvision PlatoBlockchain ডেটা ইন্টেলিজেন্স সহ রেটিনানেট অবজেক্ট ডিটেকশন। উল্লম্ব অনুসন্ধান. আ.

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

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

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

ভিতরে কি?

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

উপসংহার

অবজেক্ট ডিটেকশন হল কম্পিউটার ভিশনের একটি গুরুত্বপূর্ণ ক্ষেত্র, এবং দুর্ভাগ্যবশত এটি হওয়া উচিত তার চেয়ে কম অ্যাক্সেসযোগ্য।

এই সংক্ষিপ্ত গাইডে, আমরা কীভাবে তা দেখেছি torchvision, PyTorch এর কম্পিউটার ভিশন প্যাকেজ, রেটিনানেট ব্যবহার করে ইমেজে অবজেক্ট ডিটেকশন করা সহজ করে তোলে।

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

থেকে আরো Stackabuse