معرفی
تشخیص اشیا میدان بزرگی در بینایی کامپیوتری و یکی از مهمترین کاربردهای بینایی کامپیوتر در طبیعت است. از یک طرف، میتوان از آن برای ساخت سیستمهای مستقلی استفاده کرد که عوامل را در محیطها هدایت میکنند – چه روباتهایی که وظایف را انجام میدهند یا ماشینهای خودران، اما این امر مستلزم تقاطع با زمینههای دیگر است. با این حال، تشخیص ناهنجاری (مانند محصولات معیوب در یک خط)، مکان یابی اشیاء در تصاویر، تشخیص چهره و کاربردهای مختلف دیگر تشخیص اشیاء را می توان بدون تلاقی سایر زمینه ها انجام داد.
تشخیص اشیا به اندازه طبقهبندی تصویر استاندارد نیست، عمدتاً به این دلیل که بیشتر پیشرفتهای جدید بهجای کتابخانهها و چارچوبهای بزرگ، معمولاً توسط محققان، نگهداریکنندگان و توسعهدهندگان منفرد انجام میشود. بستهبندی اسکریپتهای کاربردی ضروری در چارچوبی مانند TensorFlow یا PyTorch و حفظ دستورالعملهای API که تاکنون توسعه را هدایت کردهاند، دشوار است.
این امر تشخیص اشیاء را تا حدودی پیچیدهتر، معمولاً پرمخاطبتر (اما نه همیشه) و کمتر از طبقهبندی تصویر میسازد. یکی از مزایای اصلی حضور در یک اکوسیستم این است که راهی برای جستجو نکردن اطلاعات مفید در مورد شیوه های خوب، ابزارها و رویکردهای استفاده در اختیار شما قرار می دهد. با تشخیص اشیا - بیشتر آنها باید تحقیقات بیشتری را در مورد چشم انداز میدان انجام دهند تا به خوبی به آن دست پیدا کنند.
Detectron2 متا AI - تقسیم بندی نمونه و تشخیص اشیا
آشکارساز 2 Meta AI (سابق FAIR – تحقیقات هوش مصنوعی فیس بوک) بسته منبع باز تشخیص، تقسیم بندی و تخمین ژست اشیاء است – همه در یک. با توجه به یک تصویر ورودی، میتواند برچسبها، جعبههای مرزی، امتیازات اطمینان، ماسکها و اسکلتهای اشیاء را برگرداند. این به خوبی در صفحه مخزن نشان داده شده است:
قرار است از آن به عنوان کتابخانه ای استفاده شود که در بالای آن می توانید پروژه های تحقیقاتی بسازید. الف را ارائه می دهد باغ وحش مدل اکثر پیاده سازی ها در کنار RetinaNet بر روی Mask R-CNN و R-CNN به طور کلی تکیه دارند. آنها نیز نسبتا مناسب و معقول هستند مستندات. بیایید یک اسکریپت استنتاج نمونه اجرا کنیم!
ابتدا بیایید وابستگی ها را نصب کنیم:
$ pip install pyyaml==5.1
$ pip install 'git+https://github.com/facebookresearch/detectron2.git'
در مرحله بعد، ما ابزارهای Detectron2 را وارد می کنیم - اینجا جایی است که دانش فریم ورک دامنه وارد عمل می شود. شما می توانید یک آشکارساز با استفاده از DefaultPredictor
کلاس، با ارسال یک شیء پیکربندی که آن را تنظیم می کند. را Visualizer
برای تجسم نتایج پشتیبانی می کند. MetadataCatalog
و DatasetCatalog
متعلق به API داده Detectron2 است و اطلاعاتی را در مورد مجموعه داده های داخلی و همچنین ابرداده های آنها ارائه می دهد.
بیایید کلاس ها و توابعی را که استفاده می کنیم وارد کنیم:
import torch, detectron2
from detectron2.utils.logger import setup_logger
setup_logger()
from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog, DatasetCatalog
با استفاده از requests
، یک تصویر را دانلود کرده و در درایو محلی خود ذخیره می کنیم:
import matplotlib.pyplot as plt
import requests
response = requests.get('http://images.cocodataset.org/val2017/000000439715.jpg')
open("input.jpg", "wb").write(response.content)
im = cv2.imread("./input.jpg")
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))
این نتیجه در:
اکنون، پیکربندی را بارگذاری میکنیم، در صورت لزوم تغییراتی را اعمال میکنیم (مدلها بهطور پیشفرض بر روی GPU اجرا میشوند، بنابراین اگر GPU ندارید، میخواهید دستگاه را روی «cpu» در پیکربندی تنظیم کنید):
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
در اینجا، ما مشخص می کنیم که کدام مدل را می خواهیم اجرا کنیم model_zoo
. ما یک مدل تقسیمبندی نمونه را بر اساس معماری Mask R-CNN و با ستون فقرات ResNet50 وارد کردهایم. بسته به آنچه میخواهید به آن برسید (تشخیص نقطه کلید، تقسیمبندی نمونه، تقسیمبندی پانوپتیک یا تشخیص شی)، در مدل مناسب بارگیری میکنید.
در نهایت، ما می توانیم با این یک پیش بینی بسازیم cfg
و آن را روی ورودی ها اجرا کنید! را Visualizer
کلاس برای ترسیم پیشبینیها روی تصویر استفاده میشود (در این مورد، نمونههای تقسیمبندی شده، کلاسها و کادرهای محدود:
predictor = DefaultPredictor(cfg)
outputs = predictor(im)
v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(out.get_image()[:, :, ::-1])
در نهایت، این نتیجه می شود:
راهنمای عملی و عملی ما برای یادگیری Git را با بهترین روش ها، استانداردهای پذیرفته شده در صنعت و برگه تقلب شامل بررسی کنید. دستورات Google Git را متوقف کنید و در واقع یاد گرفتن آی تی!
رفتن به جلو - یادگیری عمیق عملی برای بینایی کامپیوتر
طبیعت کنجکاو شما باعث می شود که بخواهید جلوتر بروید؟ توصیه می کنیم ما را بررسی کنید دوره: "یادگیری عمیق عملی برای بینایی کامپیوتر با پایتون".
یکی دیگر از دوره های بینایی کامپیوتر؟
ما طبقه بندی ارقام MNIST یا مد MNIST را انجام نخواهیم داد. آنها مدتها پیش نقش خود را انجام دادند. بسیاری از منابع یادگیری قبل از اینکه به معماریهای جعبه سیاه پیشرفته اجازه دهند بار عملکرد را به دوش بکشند، روی مجموعه دادههای پایه و معماریهای پایه تمرکز میکنند.
ما می خواهیم روی آن تمرکز کنیم ابهام زدایی, عملی بودن, درک, شهود و پروژه های واقعی. می خواهند یاد بگیرند چگونه تو می توانی تفاوت ایجاد کنی؟ ما شما را از روشی که مغزمان تصاویر را پردازش میکند تا نوشتن طبقهبندیکننده یادگیری عمیق برای سرطان سینه تا شبکههای یادگیری عمیق که «توهم میکنند»، آموزش اصول و تئوری به شما از طریق کار عملی، و تجهیز شما به دانش و ابزارهایی برای تبدیل شدن به یک متخصص در استفاده از یادگیری عمیق برای حل بینایی کامپیوتر.
داخل چیست؟
- اولین اصول بینایی و نحوه آموزش دیدن کامپیوترها
- وظایف و کاربردهای مختلف بینایی کامپیوتر
- ابزارهای تجارت که کار شما را آسان می کند
- یافتن، ایجاد و استفاده از مجموعه داده ها برای بینایی کامپیوتری
- تئوری و کاربرد شبکه های عصبی کانولوشنال
- مدیریت تغییر دامنه، همزمانی و سایر سوگیری ها در مجموعه داده ها
- آموزش را انتقال دهید و از زمان آموزشی و منابع محاسباتی دیگران به نفع خود استفاده کنید
- ساخت و آموزش پیشرفته ترین طبقه بندی سرطان سینه
- چگونه می توان دوز سالمی از شک و تردید را در ایده های جریان اصلی به کار برد و پیامدهای تکنیک های پذیرفته شده را درک کرد
- تجسم فضای مفهومی ConvNet با استفاده از t-SNE و PCA
- مطالعات موردی چگونگی استفاده شرکت ها از تکنیک های بینایی کامپیوتری برای دستیابی به نتایج بهتر
- ارزیابی صحیح مدل، تجسم فضای پنهان و شناسایی توجه مدل
- انجام تحقیقات دامنه، پردازش مجموعه داده های خود و ایجاد آزمون های مدل
- معماری های پیشرفته، پیشرفت ایده ها، آنچه آنها را منحصر به فرد می کند و نحوه اجرای آنها
- KerasCV - یک کتابخانه WIP برای ایجاد خطوط لوله و مدل های پیشرفته
- نحوه تجزیه و خواندن مقالات و پیاده سازی آنها توسط خودتان
- انتخاب مدل ها بسته به برنامه شما
- ایجاد خط لوله یادگیری ماشینی سرتاسر
- چشم انداز و شهود در تشخیص اشیا با R-CNN سریعتر، رتینا نت، SSD و YOLO
- نمونه و تقسیم بندی معنایی
- تشخیص شی در زمان واقعی با YOLOv5
- آموزش آشکارسازهای شی YOLOv5
- کار با ترانسفورماتورها با استفاده از KerasNLP (کتابخانه WIP با قدرت صنعتی)
- ادغام ترانسفورماتورها با ConvNets برای تولید شرح تصاویر
- عمیق
نتیجه
تقسیمبندی نمونه یک گام فراتر از تقسیمبندی معنایی میرود و به تفاوت کیفی بین نمونههای جداگانه یک کلاس (شخص 1، شخص 2، و غیره...) توجه میکند نه اینکه فقط به یکی از آنها تعلق داشته باشند. به نوعی - طبقه بندی در سطح پیکسل است.
در این راهنمای کوتاه، نگاهی گذرا به نحوه تقسیم بندی نمونه و تشخیص اشیا از طریق API خود، با استفاده از Mask R-CNN، Detectron2 انداخته ایم.