การตรวจจับวัตถุและการแบ่งส่วนอินสแตนซ์ใน Python ด้วย Detectron2 PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

การตรวจจับวัตถุและการแบ่งกลุ่มอินสแตนซ์ใน Python ด้วย Detectron2

บทนำ

การตรวจจับวัตถุเป็นฟิลด์ขนาดใหญ่ในการมองเห็นด้วยคอมพิวเตอร์ และเป็นหนึ่งในแอปพลิเคชั่นที่สำคัญกว่าของการมองเห็นด้วยคอมพิวเตอร์ "ในธรรมชาติ" ด้านหนึ่ง สามารถใช้เพื่อสร้างระบบอัตโนมัติที่นำทางตัวแทนผ่านสภาพแวดล้อมได้ ไม่ว่าจะเป็นหุ่นยนต์ที่ทำงานหรือรถยนต์ที่ขับด้วยตนเอง แต่สิ่งนี้ต้องแยกกับสาขาอื่น อย่างไรก็ตาม การตรวจจับสิ่งผิดปกติ (เช่น ผลิตภัณฑ์ที่มีข้อบกพร่องในสายการผลิต) การระบุตำแหน่งวัตถุภายในภาพ การตรวจจับใบหน้า และการใช้งานการตรวจจับวัตถุอื่นๆ สามารถทำได้โดยไม่ต้องตัดกับช่องอื่นๆ

การตรวจจับวัตถุไม่ได้มาตรฐานเท่ากับการจำแนกภาพ สาเหตุหลักมาจากการพัฒนาใหม่ส่วนใหญ่มักทำโดยนักวิจัย ผู้ดูแล และนักพัฒนาแต่ละคน แทนที่จะเป็นไลบรารีและเฟรมเวิร์กขนาดใหญ่ เป็นการยากที่จะจัดแพ็คเกจสคริปต์ยูทิลิตี้ที่จำเป็นในเฟรมเวิร์ก เช่น TensorFlow หรือ PyTorch และรักษาแนวทาง API ที่เป็นแนวทางในการพัฒนาจนถึงตอนนี้

สิ่งนี้ทำให้การตรวจจับวัตถุค่อนข้างซับซ้อนมากขึ้น โดยทั่วไปแล้วจะละเอียดกว่า (แต่ไม่เสมอไป) และเข้าถึงได้น้อยกว่าการจัดประเภทรูปภาพ ประโยชน์หลักๆ ประการหนึ่งของการอยู่ในระบบนิเวศคือช่วยให้คุณไม่ต้องค้นหาข้อมูลที่เป็นประโยชน์เกี่ยวกับแนวปฏิบัติ เครื่องมือ และแนวทางที่ดีในการใช้งาน ด้วยการตรวจจับวัตถุ ส่วนใหญ่ต้องทำการวิจัยเพิ่มเติมเกี่ยวกับภูมิทัศน์ของสนามเพื่อให้ได้การยึดเกาะที่ดี

Detectron2 ของ Meta AI – การแบ่งส่วนอินสแตนซ์และการตรวจจับวัตถุ

ตรวจจับตรอน2 คือ Meta AI (เดิมชื่อ FAIR – Facebook AI Research) ซึ่งเป็นการตรวจจับออบเจ็กต์ การแบ่งเซ็กเมนต์ และการประมาณค่าของวัตถุแบบโอเพ่นซอร์ส ของ Meta AI ทั้งหมดนี้รวมอยู่ในที่เดียว จากภาพที่ป้อนเข้าไป มันสามารถส่งคืนป้ายกำกับ กล่องขอบเขต คะแนนความเชื่อมั่น หน้ากาก และโครงกระดูกของวัตถุ สิ่งนี้แสดงให้เห็นอย่างดีในหน้าของที่เก็บ:

มีไว้เพื่อใช้เป็นห้องสมุดที่คุณสามารถสร้างโครงการวิจัยได้ ให้บริการ สวนสัตว์จำลอง ด้วยการนำไปใช้งานส่วนใหญ่โดยอาศัย Mask R-CNN และ R-CNN โดยทั่วไปควบคู่ไปกับ RetinaNet พวกเขายังมีค่อนข้างดี เอกสาร. มาลองรันสคริปต์อนุมานตัวอย่างกันเถอะ!

ขั้นแรก ให้ติดตั้งการพึ่งพา:

$ 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))

ผลลัพธ์นี้ใน:

การตรวจจับวัตถุและการแบ่งส่วนอินสแตนซ์ใน Python ด้วย Detectron2 PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ตอนนี้ เราโหลดการกำหนดค่า บังคับใช้การเปลี่ยนแปลงหากจำเป็น (รุ่นต่างๆ ทำงานบน 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 ที่มีแนวทางปฏิบัติที่ดีที่สุด มาตรฐานที่ยอมรับในอุตสาหกรรม และเอกสารสรุปรวม หยุดคำสั่ง Googling Git และจริงๆ แล้ว เรียน มัน!

การตรวจจับวัตถุและการแบ่งส่วนอินสแตนซ์ใน Python ด้วย Detectron2 PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ก้าวต่อไป – การเรียนรู้เชิงลึกเชิงปฏิบัติสำหรับคอมพิวเตอร์วิทัศน์

ธรรมชาติที่อยากรู้อยากเห็นของคุณทำให้คุณต้องการไปต่อหรือไม่? เราขอแนะนำให้ตรวจสอบของเรา คอร์ส: “การเรียนรู้เชิงลึกเชิงปฏิบัติสำหรับคอมพิวเตอร์วิทัศน์ด้วย Python”.

การตรวจจับวัตถุและการแบ่งส่วนอินสแตนซ์ใน Python ด้วย Detectron2 PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

หลักสูตร Computer Vision อื่น?

เราจะไม่ทำการจำแนกตัวเลข MNIST หรือแฟชั่น MNIST พวกเขาทำหน้าที่ส่วนของตนเมื่อนานมาแล้ว ทรัพยากรการเรียนรู้จำนวนมากเกินไปมุ่งเน้นไปที่ชุดข้อมูลพื้นฐานและสถาปัตยกรรมพื้นฐาน ก่อนปล่อยให้สถาปัตยกรรมกล่องดำขั้นสูงรับภาระด้านประสิทธิภาพ

เราต้องการที่จะมุ่งเน้นไปที่ การทำให้ลึกลับ, การปฏิบัติจริง, ความเข้าใจ, ปรีชา และ โครงการจริง. ต้องการเรียน อย่างไร คุณสามารถสร้างความแตกต่าง? เราจะพาคุณเดินทางตั้งแต่วิธีที่สมองของเราประมวลผลภาพไปจนถึงการเขียนตัวแยกประเภทการเรียนรู้เชิงลึกระดับการวิจัยสำหรับมะเร็งเต้านม ไปจนถึงเครือข่ายการเรียนรู้เชิงลึกที่ "หลอน" สอนหลักการและทฤษฎีแก่คุณผ่านการทำงานจริง เพื่อให้คุณมี ความรู้และเครื่องมือในการเป็นผู้เชี่ยวชาญในการประยุกต์ใช้การเรียนรู้เชิงลึกเพื่อแก้ปัญหาคอมพิวเตอร์วิทัศน์

อะไรอยู่ข้างใน?

  • หลักการมองเห็นเบื้องต้นและวิธีการสอนคอมพิวเตอร์ให้ “มองเห็น”
  • งานต่างๆ และการประยุกต์ใช้คอมพิวเตอร์วิทัศน์
  • เครื่องมือการค้าที่จะทำให้งานของคุณง่ายขึ้น
  • การค้นหา การสร้าง และการใช้ชุดข้อมูลสำหรับคอมพิวเตอร์วิทัศน์
  • ทฤษฎีและการประยุกต์ใช้ Convolutional Neural Networks
  • การจัดการการเปลี่ยนแปลงโดเมน การเกิดขึ้นร่วม และอคติอื่นๆ ในชุดข้อมูล
  • ถ่ายทอดการเรียนรู้และใช้เวลาฝึกอบรมและทรัพยากรการคำนวณของผู้อื่นเพื่อประโยชน์ของคุณ
  • การสร้างและฝึกอบรมผู้จำแนกมะเร็งเต้านมที่ล้ำสมัย
  • วิธีการใช้ความสงสัยที่ดีต่อสุขภาพกับแนวคิดกระแสหลักและทำความเข้าใจกับความหมายของเทคนิคที่นำมาใช้กันอย่างแพร่หลาย
  • การแสดงภาพ "พื้นที่แนวคิด" ของ ConvNet โดยใช้ t-SNE และ PCA
  • กรณีศึกษาวิธีที่บริษัทต่างๆ ใช้เทคนิคการมองเห็นด้วยคอมพิวเตอร์เพื่อให้ได้ผลลัพธ์ที่ดีขึ้น
  • การประเมินแบบจำลองที่เหมาะสม การสร้างภาพพื้นที่แฝง และการระบุความสนใจของแบบจำลอง
  • ดำเนินการวิจัยโดเมน ประมวลผลชุดข้อมูลของคุณเอง และสร้างการทดสอบแบบจำลอง
  • สถาปัตยกรรมล้ำสมัย ความก้าวหน้าของแนวคิด สิ่งที่ทำให้มีเอกลักษณ์เฉพาะตัว และวิธีนำไปใช้
  • KerasCV – ไลบรารี WIP สำหรับสร้างไปป์ไลน์และโมเดลที่ทันสมัย
  • วิธีแยกวิเคราะห์และอ่านเอกสารและนำไปใช้เอง
  • การเลือกรุ่นขึ้นอยู่กับการใช้งานของคุณ
  • การสร้างไปป์ไลน์การเรียนรู้ของเครื่องแบบ end-to-end
  • ภูมิทัศน์และสัญชาตญาณในการตรวจจับวัตถุด้วย R-CNN ที่เร็วกว่า, RetinaNets, SSD และ YOLO
  • การแบ่งกลุ่มตัวอย่างและความหมาย
  • การจดจำวัตถุแบบเรียลไทม์ด้วย YOLOv5
  • การฝึกอบรมเครื่องตรวจจับวัตถุ YOLOv5
  • การทำงานกับ Transformers โดยใช้ KerasNLP (ไลบรารี WIP ที่มีความแข็งแกร่งในอุตสาหกรรม)
  • การรวม Transformers เข้ากับ ConvNets เพื่อสร้างคำบรรยายภาพ
  • Deepdream

สรุป

การแบ่งส่วนอินสแตนซ์ไปไกลกว่าการแบ่งส่วนความหมายหนึ่งขั้น และบันทึกความแตกต่างเชิงคุณภาพระหว่างอินสแตนซ์แต่ละรายการของคลาส (บุคคลที่ 1 บุคคลที่ 2 ฯลฯ...) มากกว่าที่จะเป็นเพียงแค่อินสแตนซ์เดียว ในทางใดทางหนึ่ง – เป็นการจำแนกระดับพิกเซล

ในคำแนะนำสั้นๆ นี้ เราได้มาดูวิธีที่ Detectron2 ทำให้การแบ่งส่วนอินสแตนซ์และการตรวจจับวัตถุทำได้ง่ายและเข้าถึงได้ผ่าน API โดยใช้ Mask R-CNN

ประทับเวลา:

เพิ่มเติมจาก สแต็ค