PyTorch اور torchvision PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ RetinaNet آبجیکٹ کا پتہ لگانا۔ عمودی تلاش۔ عی

PyTorch اور torchvision کے ساتھ RetinaNet آبجیکٹ کا پتہ لگانا

تعارف

آبجیکٹ کا پتہ لگانا کمپیوٹر ویژن کا ایک بڑا میدان ہے، اور کمپیوٹر ویژن کی "جنگلی میں" ایک اہم ترین ایپلی کیشن ہے۔ ایک طرف، اسے خود مختار نظام بنانے کے لیے استعمال کیا جا سکتا ہے جو ایجنٹوں کو ماحول کے ذریعے نیویگیٹ کرتے ہیں - چاہے وہ روبوٹ کام انجام دے رہے ہوں یا خود چلانے والی کاریں، لیکن اس کے لیے دوسرے شعبوں کے ساتھ تقاطع کی ضرورت ہے۔ تاہم، بے ضابطگی کا پتہ لگانا (جیسے لائن پر خراب مصنوعات)، تصاویر کے اندر اشیاء کا پتہ لگانا، چہرے کا پتہ لگانا اور آبجیکٹ کی کھوج کی مختلف دیگر ایپلی کیشنز کو دوسرے شعبوں کو ایک دوسرے کو کاٹتے ہوئے بغیر کیا جا سکتا ہے۔

آبجیکٹ کا پتہ لگانا تصویر کی درجہ بندی کی طرح معیاری نہیں ہے، بنیادی طور پر اس لیے کہ زیادہ تر نئی پیشرفتیں بڑی لائبریریوں اور فریم ورک کے بجائے انفرادی محققین، دیکھ بھال کرنے والوں اور ڈویلپرز کے ذریعے کی جاتی ہیں۔ TensorFlow یا PyTorch جیسے فریم ورک میں ضروری یوٹیلیٹی اسکرپٹس کو پیک کرنا اور API کے رہنما خطوط کو برقرار رکھنا مشکل ہے جو اب تک ترقی کی رہنمائی کرتے ہیں۔

یہ آبجیکٹ کا پتہ لگانے کو کچھ زیادہ پیچیدہ بناتا ہے، عام طور پر زیادہ لفظی (لیکن ہمیشہ نہیں)، اور تصویر کی درجہ بندی سے کم قابل رسائی۔ ماحولیاتی نظام میں رہنے کا ایک بڑا فائدہ یہ ہے کہ یہ آپ کو اچھے طریقوں، اوزاروں اور استعمال کے طریقوں پر مفید معلومات کی تلاش نہ کرنے کا ایک طریقہ فراہم کرتا ہے۔ آبجیکٹ کا پتہ لگانے کے ساتھ - زیادہ تر کو اچھی گرفت حاصل کرنے کے لیے فیلڈ کے لینڈ سکیپ پر مزید تحقیق کرنی پڑتی ہے۔

PyTorch/TorchVision کے RetinaNet کے ساتھ آبجیکٹ کا پتہ لگانا

torchvision PyTorch کا کمپیوٹر وژن پروجیکٹ ہے، اور اس کا مقصد PyTorch پر مبنی CV ماڈلز کی ترقی کو آسان بنانا ہے، تبدیلی اور اضافے کے اسکرپٹس، ایک ماڈل چڑیا گھر جس میں پہلے سے تربیت یافتہ وزن، ڈیٹا سیٹس اور افادیتیں ہیں جو ایک پریکٹیشنر کے لیے کارآمد ہو سکتی ہیں۔

بیٹا میں اور بہت زیادہ تجرباتی رہتے ہوئے - torchvision منتخب کرنے کے لیے چند ماڈلز کے ساتھ نسبتاً آسان آبجیکٹ ڈیٹیکشن API پیش کرتا ہے:

  • تیز تر R-CNN
  • ریٹینا نیٹ
  • FCOS (مکمل طور پر convolutional RetinaNet)
  • SSD (VGG16 ریڑھ کی ہڈی… ہاں)
  • SSDLite (MobileNetV3 بیک بون)

اگرچہ API کچھ دوسرے فریق ثالث APIs کی طرح پالش یا سادہ نہیں ہے، لیکن یہ ان لوگوں کے لیے ایک بہت ہی مہذب نقطہ آغاز ہے جو اب بھی ایک ماحولیاتی نظام میں رہنے کی حفاظت کو ترجیح دیتے ہیں جس سے وہ واقف ہیں۔ آگے بڑھنے سے پہلے، یقینی بنائیں کہ آپ نے PyTorch اور Torchvision انسٹال کر لیا ہے:

$ pip install torch torchvision

آئیے کچھ افادیت کے افعال میں لوڈ کرتے ہیں، جیسے read_image(), draw_bounding_boxes() اور to_pil_image() تصاویر کو پڑھنے، کھینچنے اور آؤٹ پٹ کرنے میں آسانی پیدا کرنے کے لیے، اس کے بعد RetinaNet اور اس کے پہلے سے تربیت یافتہ وزن (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 argument اس حد کی وضاحت کرتا ہے جس پر کسی شے کو کلاس کی آبجیکٹ کے طور پر پایا جاتا ہے۔ بدیہی طور پر، یہ اعتماد کی حد ہے، اور ہم کسی شے کو کلاس سے تعلق رکھنے کے لیے درجہ بندی نہیں کریں گے اگر ماڈل کو 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 نے اصل میں گاڑی کے پیچھے جھانکنے والے شخص کی درجہ بندی کی! یہ ایک بہت مشکل درجہ بندی ہے۔

بہترین طرز عمل، صنعت کے لیے منظور شدہ معیارات، اور چیٹ شیٹ کے ساتھ Git سیکھنے کے لیے ہمارے ہینڈ آن، عملی گائیڈ کو دیکھیں۔ گوگلنگ گٹ کمانڈز کو روکیں اور اصل میں سیکھ یہ!

آپ RetinaNet کو تبدیل کرکے FCOS (مکمل طور پر convolutional RetinaNet) میں تبدیل کر سکتے ہیں 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()

مزید جانا - کمپیوٹر وژن کے لیے عملی گہری تعلیم

آپ کی جستجو کرنے والی فطرت آپ کو مزید آگے بڑھنا چاہتی ہے؟ ہم اپنے کو چیک کرنے کی تجویز کرتے ہیں۔ کورس: "Python کے ساتھ کمپیوٹر وژن کے لیے عملی گہری تعلیم".

PyTorch اور torchvision PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ RetinaNet آبجیکٹ کا پتہ لگانا۔ عمودی تلاش۔ عی

ایک اور کمپیوٹر وژن کورس؟

ہم MNIST ہندسوں یا MNIST فیشن کی درجہ بندی نہیں کریں گے۔ انہوں نے بہت پہلے اپنے حصے کی خدمت کی۔ بہت سارے سیکھنے کے وسائل بنیادی ڈیٹاسیٹس اور بنیادی فن تعمیرات پر توجہ مرکوز کر رہے ہیں اس سے پہلے کہ جدید بلیک باکس فن تعمیر کو کارکردگی کا بوجھ اٹھانے دیا جائے۔

ہم توجہ مرکوز کرنا چاہتے ہیں۔ demystification, عملیی, افہام و تفہیم, انترجشتھان اور حقیقی منصوبوں. سیکھنا چاہتے ہیں۔ کس طرح کیا آپ فرق کر سکتے ہیں؟ ہم آپ کو ایک سفر پر لے جائیں گے جس طرح سے ہمارے دماغ چھاتی کے کینسر کے لیے ایک ریسرچ گریڈ ڈیپ لرننگ کلاسیفائر لکھنے سے لے کر گہرے سیکھنے کے نیٹ ورکس تک لے جائیں گے جو کہ "فریب" کرتے ہیں، عملی کام کے ذریعے آپ کو اصول اور تھیوری سکھاتے ہیں، کمپیوٹر وژن کو حل کرنے کے لیے گہری سیکھنے کا اطلاق کرنے میں ماہر بننے کا طریقہ اور اوزار۔

اندر کیاہے؟

  • بصارت کے پہلے اصول اور کمپیوٹر کو "دیکھنا" کیسے سکھایا جا سکتا ہے۔
  • کمپیوٹر وژن کے مختلف کام اور ایپلی کیشنز
  • تجارت کے اوزار جو آپ کے کام کو آسان بنائیں گے۔
  • کمپیوٹر وژن کے لیے ڈیٹاسیٹس کی تلاش، تخلیق اور استعمال
  • Convolutional Neural Networks کا نظریہ اور اطلاق
  • ڈیٹا سیٹس میں ڈومین شفٹ، شریک ہونے اور دیگر تعصبات کو ہینڈل کرنا
  • سیکھنے کو منتقل کریں اور دوسروں کے تربیتی وقت اور کمپیوٹیشنل وسائل کو اپنے فائدے کے لیے استعمال کریں۔
  • ایک جدید ترین چھاتی کے کینسر کی درجہ بندی کرنے والے کی تعمیر اور تربیت
  • مرکزی دھارے کے خیالات پر شکوک و شبہات کی صحت مند خوراک کو کیسے لاگو کیا جائے اور وسیع پیمانے پر اختیار کی جانے والی تکنیکوں کے مضمرات کو کیسے سمجھا جائے
  • T-SNE اور PCA کا استعمال کرتے ہوئے ConvNet کی "تصور کی جگہ" کا تصور کرنا
  • کیس اسٹڈیز کہ کمپنیاں بہتر نتائج حاصل کرنے کے لیے کمپیوٹر ویژن تکنیک کا استعمال کیسے کرتی ہیں۔
  • ماڈل کی مناسب تشخیص، اویکت جگہ کا تصور اور ماڈل کی توجہ کی نشاندہی کرنا
  • ڈومین ریسرچ کرنا، آپ کے اپنے ڈیٹا سیٹس پر کارروائی کرنا اور ماڈل ٹیسٹ قائم کرنا
  • جدید فن تعمیر، خیالات کی ترقی، انہیں کیا منفرد بناتا ہے اور انہیں کیسے نافذ کیا جائے
  • KerasCV – جدید ترین پائپ لائنز اور ماڈل بنانے کے لیے ایک WIP لائبریری
  • پیپرز کو کیسے پارس کریں اور پڑھیں اور خود ان پر عمل کریں۔
  • آپ کی درخواست پر منحصر ماڈلز کا انتخاب
  • آخر سے آخر تک مشین لرننگ پائپ لائن بنانا
  • تیز تر R-CNNs، RetinaNets، SSDs اور YOLO کے ساتھ آبجیکٹ کا پتہ لگانے پر زمین کی تزئین اور بصیرت
  • مثال اور سیمنٹک سیگمنٹیشن
  • YOLOv5 کے ساتھ ریئل ٹائم آبجیکٹ کی شناخت
  • YOLOv5 آبجیکٹ ڈیٹیکٹر کی تربیت
  • KerasNLP (صنعت کی طاقت WIP لائبریری) کا استعمال کرتے ہوئے ٹرانسفارمرز کے ساتھ کام کرنا
  • تصاویر کے کیپشن بنانے کے لیے ConvNets کے ساتھ ٹرانسفارمرز کو مربوط کرنا
  • DeepDream

نتیجہ

آبجیکٹ کا پتہ لگانا کمپیوٹر وژن کا ایک اہم شعبہ ہے، اور ایک ایسا شعبہ جو بدقسمتی سے اس سے کم قابل رسائی ہے۔

اس مختصر گائیڈ میں، ہم نے اس پر ایک نظر ڈالی ہے کہ کیسے torchvisionPyTorch کا کمپیوٹر وژن پیکیج، RetinaNet کا استعمال کرتے ہوئے تصاویر پر آبجیکٹ کا پتہ لگانا آسان بناتا ہے۔

ٹائم اسٹیمپ:

سے زیادہ Stackabuse