اكتشاف الكائنات في RetinaNet باستخدام ذكاء بيانات PlatoBlockchain و PyTorch و torchvision. البحث العمودي. عاي.

اكتشاف كائن RetinaNet باستخدام PyTorch و torchvision

المُقدّمة

يعد اكتشاف الأشياء مجالًا كبيرًا في رؤية الكمبيوتر ، وأحد أهم تطبيقات رؤية الكمبيوتر "في البرية". من ناحية ، يمكن استخدامه لبناء أنظمة مستقلة تنقل الوكلاء عبر البيئات - سواء كانت روبوتات تؤدي مهامًا أو سيارات ذاتية القيادة ، لكن هذا يتطلب تقاطعًا مع مجالات أخرى. ومع ذلك ، يمكن إجراء اكتشاف الشذوذ (مثل المنتجات المعيبة على الخط) وتحديد موقع الأشياء داخل الصور واكتشاف الوجه والعديد من التطبيقات الأخرى لاكتشاف الأشياء دون تقاطع المجالات الأخرى.

لا يعد اكتشاف الكائنات موحدًا مثل تصنيف الصور ، ويرجع ذلك أساسًا إلى أن معظم التطورات الجديدة يتم إجراؤها عادةً بواسطة باحثين فرديين ومشرفين على الصيانة والمطورين ، بدلاً من المكتبات وأطر العمل الكبيرة. من الصعب تجميع البرامج النصية المساعدة الضرورية في إطار عمل مثل TensorFlow أو PyTorch والحفاظ على إرشادات API التي وجهت عملية التطوير حتى الآن.

هذا يجعل اكتشاف الكائن أكثر تعقيدًا إلى حد ما ، وعادةً ما يكون أكثر تفصيلاً (ولكن ليس دائمًا) ، وأقل سهولة من تصنيف الصور. تتمثل إحدى الفوائد الرئيسية لوجودك في نظام بيئي في أنه يوفر لك طريقة لعدم البحث عن معلومات مفيدة حول الممارسات الجيدة والأدوات والأساليب المستخدمة. مع اكتشاف الأشياء - يتعين على معظمهم إجراء المزيد من الأبحاث حول المناظر الطبيعية للحقل للحصول على قبضة جيدة.

اكتشاف الكائن باستخدام شبكية PyTorch / TorchVision's RetinaNet

torchvision هو مشروع PyTorch's Computer Vision ، ويهدف إلى تسهيل تطوير نماذج السيرة الذاتية المستندة إلى PyTorch ، من خلال توفير برامج نصية للتحويل والتعزيز ، وحديقة حيوانات نموذجية بأوزان مدربة مسبقًا ومجموعات بيانات وأدوات مساعدة يمكن أن تكون مفيدة للممارس.

بينما لا يزال في مرحلة تجريبية وتجريبية للغاية - torchvision تقدم واجهة برمجة تطبيقات بسيطة نسبيًا لاكتشاف الكائنات مع بعض النماذج للاختيار من بينها:

  • أسرع R-CNN
  • شبكية العين
  • FCOS (شبكية تلافيفية بالكامل)
  • SSD (العمود الفقري VGG16… yikes)
  • SSDLite (العمود الفقري MobileNetV3)

على الرغم من أن واجهة برمجة التطبيقات ليست مصقولة أو بسيطة مثل بعض واجهات برمجة التطبيقات الأخرى التابعة لجهات خارجية ، إلا أنها نقطة انطلاق جيدة جدًا لأولئك الذين ما زالوا يفضلون أمان التواجد في نظام بيئي مألوف لديهم. قبل المضي قدمًا ، تأكد من تثبيت 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 تحدد الوسيطة العتبة التي يتم عندها اكتشاف كائن ككائن من فئة. حدسيًا ، هذا هو حد الثقة ، ولن نصنف كائنًا للانتماء إلى فئة إذا كان النموذج أقل من 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 ، مع أفضل الممارسات ، والمعايير المقبولة في الصناعة ، وورقة الغش المضمنة. توقف عن أوامر Googling Git وفي الواقع تعلم ذلك!

يمكنك تبديل RetinaNet إلى FCOS (شبكية تلافيفية بالكامل) عن طريق استبدال 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".

اكتشاف الكائنات في RetinaNet باستخدام ذكاء بيانات PlatoBlockchain و PyTorch و torchvision. البحث العمودي. عاي.

دورة أخرى في الرؤية الحاسوبية؟

لن نقوم بتصنيف أرقام MNIST أو أزياء MNIST. لقد خدموا دورهم منذ وقت طويل. يركز عدد كبير جدًا من موارد التعلم على مجموعات البيانات الأساسية والبنى الأساسية قبل السماح لبنى الصندوق الأسود المتقدمة بتحمل عبء الأداء.

نريد التركيز على إزالة الغموض, التطبيق العملي, فهم, حدس و مشاريع حقيقية. يرغب فى التعلم كيف يمكنك أن تحدث فرقا؟ سنأخذك في جولة من طريقة معالجة أدمغتنا للصور إلى كتابة مصنف تعليمي عميق من الدرجة البحثية لسرطان الثدي إلى شبكات التعلم العميق التي "تهلوس" ، وتعليمك المبادئ والنظرية من خلال العمل العملي ، وتزويدك الدراية والأدوات لتصبح خبيرًا في تطبيق التعلم العميق لحل رؤية الكمبيوتر.

ماذا يوجد في الداخل؟

  • المبادئ الأولى للرؤية وكيف يمكن تعليم أجهزة الكمبيوتر "الرؤية"
  • مهام وتطبيقات مختلفة للرؤية الحاسوبية
  • أدوات التجارة التي ستجعل عملك أسهل
  • البحث عن مجموعات البيانات وإنشائها واستخدامها للرؤية الحاسوبية
  • نظرية وتطبيق الشبكات العصبية التلافيفية
  • التعامل مع تحول المجال والتواجد المشترك والتحيزات الأخرى في مجموعات البيانات
  • نقل التعلم والاستفادة من وقت تدريب الآخرين والموارد الحسابية لصالحك
  • بناء وتدريب مصنف حديث لسرطان الثدي
  • كيفية تطبيق جرعة صحية من الشك على الأفكار السائدة وفهم الآثار المترتبة على التقنيات المعتمدة على نطاق واسع
  • تصور "الفضاء المفهوم" لـ ConvNet باستخدام t-SNE و PCA
  • دراسات حالة عن كيفية استخدام الشركات لتقنيات الرؤية الحاسوبية لتحقيق نتائج أفضل
  • تقييم النموذج المناسب ، تصور الفضاء الكامن وتحديد انتباه النموذج
  • إجراء بحث في المجال ومعالجة مجموعات البيانات الخاصة بك وإنشاء اختبارات نموذجية
  • أحدث البنيات ، تطور الأفكار ، ما الذي يجعلها فريدة من نوعها وكيفية تنفيذها
  • KerasCV - مكتبة العمل قيد التقدم لإنشاء خطوط الأنابيب والنماذج الحديثة
  • كيف تحلل وتقرأ الأوراق وتنفذها بنفسك
  • اختيار النماذج حسب التطبيق الخاص بك
  • إنشاء خط أنابيب تعلم آلي شامل
  • المناظر الطبيعية والحدس في اكتشاف الكائنات باستخدام شبكات R-CNN و RetinaNets و SSDs و YOLO أسرع
  • المثيل والتجزئة الدلالية
  • التعرف على الكائنات في الوقت الفعلي باستخدام YOLOv5
  • تدريب كاشفات الأجسام YOLOv5
  • العمل مع المحولات باستخدام KerasNLP (مكتبة WIP ذات قوة الصناعة)
  • دمج المحولات مع ConvNets لإنشاء تسميات توضيحية للصور
  • ديب دريم

وفي الختام

يعد اكتشاف الكائن مجالًا مهمًا من مجالات الرؤية الحاسوبية ، وهو مجال أقل سهولة في التعامل معه للأسف مما ينبغي أن يكون.

في هذا الدليل المختصر ، ألقينا نظرة على كيفية القيام بذلك torchvisionتسهل حزمة PyTorch's Computer Vision إجراء اكتشاف الكائنات على الصور باستخدام RetinaNet.

الطابع الزمني:

اكثر من ستاكابوز