Виявлення об’єктів і сегментація екземплярів у Python за допомогою Detectron2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Виявлення об’єктів і сегментація екземплярів у Python за допомогою Detectron2

Вступ

Виявлення об’єктів — це велика область комп’ютерного зору та одне з найважливіших застосувань комп’ютерного зору «в дикій природі». З одного боку, його можна використовувати для створення автономних систем, які переміщують агентів у середовищі – будь то роботи, що виконують завдання, або самокеровані автомобілі, але для цього потрібен перетин з іншими сферами. Проте виявлення аномалій (наприклад, бракованих продуктів на лінії), визначення місцезнаходження об’єктів на зображеннях, розпізнавання обличчя та інші інші застосування виявлення об’єктів можна виконати без перетину з іншими полями.

Виявлення об’єктів не є настільки стандартизованим, як класифікація зображень, головним чином тому, що більшість нових розробок зазвичай виконуються окремими дослідниками, супроводжувачами та розробниками, а не великими бібліотеками та фреймворками. Важко упакувати необхідні службові сценарії в такий фреймворк, як TensorFlow або PyTorch, і підтримувати інструкції щодо API, якими досі керувалася розробка.

Це робить виявлення об’єктів дещо складнішим, зазвичай більш детальним (але не завжди) і менш доступним, ніж класифікація зображень. Одна з головних переваг перебування в екосистемі полягає в тому, що вона дає вам можливість не шукати корисну інформацію про хороші практики, інструменти та підходи до використання. З виявленням об’єктів – більшості доводиться більше досліджувати ландшафт поля, щоб отримати гарний контроль.

Detectron2 від Meta AI – сегментація екземплярів і виявлення об’єктів

Детектор 2 це Meta AI (раніше FAIR – дослідження штучного інтелекту Facebook) з відкритим кодом для виявлення об’єктів, сегментації та оцінки пози – все в одному. За вхідного зображення він може повертати мітки, обмежувальні рамки, показники достовірності, маски та скелети об’єктів. Це добре представлено на сторінці сховища:

Він призначений для використання як бібліотека, на основі якої можна створювати дослідницькі проекти. Він пропонує а модельний зоопарк більшість реалізацій покладаються на Mask R-CNN і R-CNN загалом, а також RetinaNet. У них теж досить пристойно документація. Давайте запустимо приклад сценарію висновку!

Спочатку давайте встановимо залежності:

$ pip install pyyaml==5.1
$ pip install 'git+https://github.com/facebookresearch/detectron2.git'

Далі ми імпортуємо утиліти Detectron2 – тут вступають у гру знання фреймворку. Ви можете створити детектор за допомогою DefaultPredictor класу, передавши об’єкт конфігурації, який його встановлює. The 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))

Це призводить до:

Виявлення об’єктів і сегментація екземплярів у Python за допомогою Detectron2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Тепер ми завантажуємо конфігурацію, за потреби вносимо зміни (моделі за замовчуванням працюють на графічному процесорі, тому, якщо у вас немає графічного процесора, ви захочете встановити для пристрою значення «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 і запустіть його на входах! The 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 з передовими методами, прийнятими в галузі стандартами та включеною шпаргалкою. Припиніть гуглити команди Git і фактично вчитися це!

Виявлення об’єктів і сегментація екземплярів у Python за допомогою Detectron2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Йти далі – практичне глибоке навчання для комп’ютерного зору

Ваша допитлива природа змушує вас йти далі? Ми рекомендуємо перевірити наш Курс: «Практичне глибоке навчання комп’ютерного бачення за допомогою Python».

Виявлення об’єктів і сегментація екземплярів у Python за допомогою Detectron2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Ще один курс комп’ютерного зору?

Ми не будемо класифікувати цифри MNIST або моди MNIST. Вони свою роль давно відслужили. Занадто багато навчальних ресурсів зосереджені на базових наборах даних і базових архітектурах, перш ніж дозволити просунутим архітектурам чорної скриньки взяти на себе тягар продуктивності.

Ми хочемо зосередитися на демістифікація, практичність, розуміння, інтуїція та реальні проекти. Хочеться навчитися як ти можеш змінити ситуацію? Ми проведемо вас у подорожі від того, як наш мозок обробляє зображення, до написання дослідницького класифікатора глибокого навчання для раку молочної залози до мереж глибокого навчання, які «галюцинують», навчаючи вас принципам і теорії через практичну роботу, озброюючи вас ноу-хау та інструменти, щоб стати експертом у застосуванні глибокого навчання для вирішення проблем комп’ютерного зору.

Що всередині?

  • Перші принципи бачення та те, як комп’ютери можна навчити «бачити»
  • Різні задачі та застосування комп'ютерного зору
  • Інструменти, які полегшать вашу роботу
  • Пошук, створення та використання наборів даних для комп’ютерного зору
  • Теорія та застосування згорткових нейронних мереж
  • Обробка зсуву домену, спільного входження та інших упереджень у наборах даних
  • Передача навчання та використання часу навчання та обчислювальних ресурсів інших для вашої вигоди
  • Створення та навчання сучасного класифікатора раку молочної залози
  • Як застосувати здорову дозу скептицизму до основних ідей і зрозуміти наслідки широко поширених методів
  • Візуалізація «концептуального простору» ConvNet за допомогою t-SNE та PCA
  • Тематичні дослідження того, як компанії використовують методи комп’ютерного зору для досягнення кращих результатів
  • Правильна оцінка моделі, візуалізація прихованого простору та ідентифікація уваги моделі
  • Виконання досліджень предметної області, обробка власних наборів даних і створення тестів моделей
  • Передові архітектури, розвиток ідей, що робить їх унікальними та як їх реалізувати
  • KerasCV – бібліотека WIP для створення найсучасніших конвеєрів і моделей
  • Як аналізувати та читати документи та реалізувати їх самостійно
  • Вибір моделей в залежності від вашого застосування
  • Створення наскрізного конвеєра машинного навчання
  • Пейзаж та інтуїція під час виявлення об’єктів за допомогою Faster R-CNN, RetinaNets, SSD та YOLO
  • Екземплярна та семантична сегментація
  • Розпізнавання об'єктів у реальному часі за допомогою YOLOv5
  • Навчання детекторам об’єктів YOLOv5
  • Робота з Transformers за допомогою KerasNLP (потужна бібліотека WIP)
  • Інтеграція Transformers із ConvNets для створення підписів до зображень
  • DeepDream

Висновок

Сегментація екземплярів виходить на один крок за межі семантичної сегментації та відзначає якісну різницю між окремими екземплярами класу (особа 1, особа 2 тощо), а не просто те, чи вони належать до одного. У певному сенсі – це класифікація на рівні пікселів.

У цьому короткому посібнику ми коротко розглянемо, як Detectron2 робить сегментацію екземплярів і виявлення об’єктів легкими та доступними через їх API, використовуючи Mask R-CNN.

Часова мітка:

Більше від Stackabuse