Phát hiện đối tượng và phân đoạn đối tượng bằng Python với Trí thông minh dữ liệu chuỗi khối Detectron2 Plato. Tìm kiếm dọc. Ái.

Phát hiện đối tượng và phân đoạn đối tượng trong Python với Detectron2

Giới thiệu

Phát hiện đối tượng là một lĩnh vực rộng lớn trong thị giác máy tính và là một trong những ứng dụng quan trọng hơn của thị giác máy tính “trong tự nhiên”. Về một mặt, nó có thể được sử dụng để xây dựng các hệ thống tự động điều hướng các tác nhân thông qua các môi trường - có thể là robot thực hiện nhiệm vụ hoặc ô tô tự lái, nhưng điều này đòi hỏi sự giao thoa với các lĩnh vực khác. Tuy nhiên, phát hiện bất thường (chẳng hạn như sản phẩm bị lỗi trên một đường thẳng), định vị đối tượng trong ảnh, phát hiện khuôn mặt và nhiều ứng dụng khác của phát hiện đối tượng có thể được thực hiện mà không giao nhau giữa các trường khác.

Phát hiện đối tượng không được tiêu chuẩn hóa như phân loại hình ảnh, chủ yếu là vì hầu hết các phát triển mới thường được thực hiện bởi các nhà nghiên cứu, người bảo trì và nhà phát triển riêng lẻ, thay vì các thư viện và khuôn khổ lớn. Thật khó để đóng gói các tập lệnh tiện ích cần thiết trong một khuôn khổ như TensorFlow hoặc PyTorch và duy trì các nguyên tắc API đã hướng dẫn sự phát triển cho đến nay.

Điều này làm cho việc phát hiện đối tượng hơi phức tạp hơn, thường dài dòng hơn (nhưng không phải lúc nào cũng vậy) và ít dễ tiếp cận hơn so với phân loại hình ảnh. Một trong những lợi ích chính của việc ở trong hệ sinh thái là nó cung cấp cho bạn một cách để không phải tìm kiếm thông tin hữu ích về các phương pháp, công cụ và phương pháp tiếp cận tốt để sử dụng. Với tính năng phát hiện đối tượng - hầu hết phải nghiên cứu nhiều hơn về cảnh quan của hiện trường để có được độ bám tốt.

Meta AI's Detectron2 - Phân đoạn đối tượng và phát hiện đối tượng

máy dò2 là gói ước tính đối tượng nguồn mở, phân đoạn và ước tính tư thế của Meta AI (trước đây là FAIR - Facebook AI Research) - tất cả trong một. Với một hình ảnh đầu vào, nó có thể trả về các nhãn, hộp giới hạn, điểm tin cậy, mặt nạ và bộ xương của các đối tượng. Điều này được trình bày rõ ràng trên trang của kho lưu trữ:

Nó có nghĩa là được sử dụng như một thư viện mà bạn có thể xây dựng các dự án nghiên cứu. Nó cung cấp một vườn thú mô hình với hầu hết các triển khai dựa trên Mask R-CNN và R-CNN nói chung, cùng với RetinaNet. Họ cũng có một tài liệu hướng dẫn. Hãy chạy một kịch bản suy luận examplory!

Đầu tiên, hãy cài đặt các phụ thuộc:

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

Tiếp theo, chúng tôi sẽ nhập các tiện ích Detectron2 - đây là nơi kiến ​​thức miền khung phát huy tác dụng. Bạn có thể xây dựng một máy dò bằng cách sử dụng DefaultPredictor bằng cách truyền vào một đối tượng cấu hình để thiết lập nó. Các Visualizer cung cấp hỗ trợ để hiển thị kết quả. MetadataCatalogDatasetCatalog thuộc về API dữ liệu của Detectron2 và cung cấp thông tin về tập dữ liệu tích hợp cũng như siêu dữ liệu của chúng.

Hãy nhập các lớp và hàm mà chúng ta sẽ sử dụng:

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

Sử dụng requests, chúng tôi sẽ tải xuống một hình ảnh và lưu nó vào ổ đĩa cục bộ của chúng tôi:

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

Kết quả này trong:

Phát hiện đối tượng và phân đoạn đối tượng bằng Python với Trí thông minh dữ liệu chuỗi khối Detectron2 Plato. Tìm kiếm dọc. Ái.

Bây giờ, chúng tôi tải cấu hình, thực hiện các thay đổi nếu cần (các mô hình chạy trên GPU theo mặc định, vì vậy nếu bạn không có GPU, bạn sẽ muốn đặt thiết bị thành 'cpu' trong cấu hình):

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


Ở đây, chúng tôi chỉ định mô hình mà chúng tôi muốn chạy từ model_zoo. Chúng tôi đã nhập một mô hình phân đoạn phiên bản, dựa trên kiến ​​trúc Mask R-CNN và với đường trục ResNet50. Tùy thuộc vào những gì bạn muốn đạt được (phát hiện keypoint, phân đoạn phiên bản, phân đoạn toàn cảnh hoặc phát hiện đối tượng), bạn sẽ tải trong mô hình thích hợp.

Cuối cùng, chúng ta có thể xây dựng một công cụ dự đoán với cfg và chạy nó trên các đầu vào! Các Visualizer lớp được sử dụng để vẽ các dự đoán trên hình ảnh (trong trường hợp này, các cá thể, lớp và hộp giới hạn được phân đoạn:

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

Cuối cùng, điều này dẫn đến:

Xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, các tiêu chuẩn được ngành công nghiệp chấp nhận và bảng lừa đảo đi kèm. Dừng lệnh Googling Git và thực sự học nó!

Phát hiện đối tượng và phân đoạn đối tượng bằng Python với Trí thông minh dữ liệu chuỗi khối Detectron2 Plato. Tìm kiếm dọc. Ái.

Tiến xa hơn - Học sâu thực tế cho thị giác máy tính

Bản tính ham học hỏi của bạn khiến bạn muốn tiến xa hơn? Chúng tôi khuyên bạn nên kiểm tra Khóa học: “Học sâu thực tế cho thị giác máy tính với Python”.

Phát hiện đối tượng và phân đoạn đối tượng bằng Python với Trí thông minh dữ liệu chuỗi khối Detectron2 Plato. Tìm kiếm dọc. Ái.

Một khóa học thị giác máy tính khác?

Chúng tôi sẽ không phân loại các chữ số MNIST hoặc thời trang MNIST. Họ đã phục vụ phần của họ từ lâu lắm rồi. Quá nhiều tài nguyên học tập đang tập trung vào bộ dữ liệu cơ bản và kiến ​​trúc cơ bản trước khi để các kiến ​​trúc hộp đen nâng cao gánh vác gánh nặng về hiệu suất.

Chúng tôi muốn tập trung vào sự làm sáng tỏ, tính thực tiễn, sự hiểu biết, trực giácdự án thực tế. Muốn học làm thế nào Bạn có thể làm nên điều khác biệt? Chúng tôi sẽ đưa bạn đi từ cách bộ não của chúng ta xử lý hình ảnh để viết một bộ phân loại học sâu cấp độ nghiên cứu cho bệnh ung thư vú đến mạng lưới học tập sâu "ảo giác", dạy cho bạn các nguyên tắc và lý thuyết thông qua công việc thực tế, trang bị cho bạn bí quyết và công cụ để trở thành chuyên gia ứng dụng học sâu để giải quyết vấn đề thị giác máy tính.

Có gì bên trong?

  • Các nguyên tắc đầu tiên của tầm nhìn và cách máy tính có thể được dạy để "nhìn"
  • Các tác vụ và ứng dụng khác nhau của thị giác máy tính
  • Các công cụ giao dịch sẽ giúp công việc của bạn dễ dàng hơn
  • Tìm kiếm, tạo và sử dụng bộ dữ liệu cho thị giác máy tính
  • Lý thuyết và ứng dụng của Mạng nơ ron chuyển đổi
  • Xử lý sự thay đổi tên miền, đồng xuất hiện và các sai lệch khác trong tập dữ liệu
  • Chuyển giao Học tập và tận dụng thời gian đào tạo cũng như các tài nguyên tính toán của người khác vì lợi ích của bạn
  • Xây dựng và đào tạo một máy phân loại ung thư vú tiên tiến nhất
  • Cách áp dụng liều lượng hoài nghi lành mạnh vào các ý tưởng chủ đạo và hiểu được hàm ý của các kỹ thuật được áp dụng rộng rãi
  • Hình dung “không gian khái niệm” của ConvNet bằng t-SNE và PCA
  • Các nghiên cứu điển hình về cách các công ty sử dụng kỹ thuật thị giác máy tính để đạt được kết quả tốt hơn
  • Đánh giá mô hình thích hợp, hình dung không gian tiềm ẩn và xác định sự chú ý của mô hình
  • Thực hiện nghiên cứu miền, xử lý tập dữ liệu của riêng bạn và thiết lập các thử nghiệm mô hình
  • Các kiến ​​trúc tiên tiến, sự phát triển của các ý tưởng, điều gì làm cho chúng trở nên độc đáo và cách thực hiện chúng
  • KerasCV - một thư viện WIP để tạo các mô hình và đường ống hiện đại
  • Cách phân tích cú pháp và đọc các bài báo và tự thực hiện chúng
  • Lựa chọn mô hình tùy thuộc vào ứng dụng của bạn
  • Tạo một đường dẫn học máy từ đầu đến cuối
  • Phong cảnh và trực giác khi phát hiện đối tượng với R-CNN, RetinaNets, SSD và YOLO nhanh hơn
  • Phân đoạn phiên bản và ngữ nghĩa
  • Nhận dạng đối tượng trong thời gian thực với YOLOv5
  • Đào tạo máy dò đối tượng YOLOv5
  • Làm việc với Máy biến áp bằng KerasNLP (thư viện WIP dành cho ngành công nghiệp)
  • Tích hợp Transformers với ConvNets để tạo phụ đề cho hình ảnh
  • Ngủ sâu

Kết luận

Phân đoạn cá thể đi một bước ngoài phân đoạn ngữ nghĩa và ghi nhận sự khác biệt về chất giữa các cá thể riêng lẻ của một lớp (người 1, người 2, v.v.) thay vì chỉ xem chúng có thuộc về một lớp hay không. Theo một cách nào đó - đó là phân loại cấp pixel.

Trong hướng dẫn ngắn này, chúng tôi đã xem nhanh cách Detectron2 làm cho việc phân đoạn cá thể và phát hiện đối tượng dễ dàng và có thể truy cập được thông qua API của họ, bằng cách sử dụng Mask R-CNN.

Dấu thời gian:

Thêm từ xếp chồng lên nhau