Hướng dẫn về phân đoạn hình ảnh

Nhiệm vụ có công cụ Phân đoạn hình ảnh MediaPipe cho phép bạn chia hình ảnh thành các khu vực dựa trên danh mục được xác định trước. Bạn có thể sử dụng chức năng này để xác định các đối tượng hoặc hoạ tiết cụ thể, sau đó áp dụng các hiệu ứng hình ảnh như làm mờ nền. Nhiệm vụ này bao gồm một số mô hình được đào tạo đặc biệt để phân đoạn người dùng và các tính năng của họ trong dữ liệu hình ảnh, bao gồm:

  • Người và nền
  • Chỉ tóc của người
  • tóc, khuôn mặt, da, quần áo và phụ kiện của người

Tác vụ này hoạt động trên dữ liệu hình ảnh bằng mô hình học máy (ML) gồm một hình ảnh hoặc một luồng video liên tục. Công cụ này sẽ xuất ra danh sách các khu vực được phân đoạn, đại diện cho đối tượng hoặc vùng trong một hình ảnh, tuỳ thuộc vào model mà bạn chọn.

Hãy dùng thử!

Bắt đầu

Hãy bắt đầu sử dụng tác vụ này bằng cách làm theo một trong những hướng dẫn triển khai sau cho nền tảng mục tiêu của bạn. Các hướng dẫn dành riêng cho nền tảng này sẽ hướng dẫn bạn cách triển khai cơ bản của tác vụ này, bao gồm cả mô hình được đề xuất và mã ví dụ với các lựa chọn cấu hình được đề xuất:

Thông tin chi tiết về việc cần làm

Phần này mô tả các tính năng, dữ liệu đầu vào, đầu ra và tuỳ chọn cấu hình của tác vụ này.

Tính năng

  • Xử lý hình ảnh đầu vào – Xử lý bao gồm việc xoay hình ảnh, đổi kích thước, chuẩn hoá và chuyển đổi không gian màu.
Dữ liệu đầu vào của việc cần làm Kết quả đầu ra của nhiệm vụ
Dữ liệu đầu vào có thể là một trong các loại dữ liệu sau:
  • Hình ảnh tĩnh
  • Khung video đã được giải mã
  • Trang video trực tiếp
Công cụ Phân đoạn hình ảnh sẽ xuất dữ liệu hình ảnh được phân đoạn, có thể bao gồm một hoặc cả hai dữ liệu sau, tuỳ thuộc vào lựa chọn cấu hình mà bạn đặt:
  • CATEGORY_MASK: một danh sách chứa một mặt nạ được phân đoạn dưới dạng hình ảnh định dạng uint8. Mỗi giá trị pixel cho biết liệu giá trị đó có thuộc một danh mục phân khúc cụ thể mà mô hình hỗ trợ hay không.
  • CONFIDENCE_MASK: danh sách các kênh chứa mặt nạ được phân đoạn có các giá trị pixel ở định dạng float32. Mỗi giá trị pixel cho biết mức độ tin cậy rằng giá trị đó thuộc một danh mục cụ thể mà mô hình hỗ trợ.

Lựa chọn về cấu hình

Tác vụ này có các chế độ cấu hình sau:

Tên lựa chọn Nội dung mô tả Khoảng giá trị Giá trị mặc định
running_mode Đặt chế độ chạy cho tác vụ. Có 3 chế độ:

IMAGE: Chế độ nhập một hình ảnh.

VIDEO: Chế độ khung hình đã giải mã của video.

LIVE_STREAM: Chế độ phát trực tiếp dữ liệu đầu vào, chẳng hạn như từ máy quay. Ở chế độ này, bạn phải gọi resultsListener để thiết lập trình nghe nhằm nhận kết quả không đồng bộ.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask Nếu bạn đặt thành True, thì kết quả sẽ bao gồm một mặt nạ phân đoạn dưới dạng hình ảnh uint8, trong đó mỗi giá trị pixel cho biết giá trị danh mục chiến thắng. {True, False} False
output_confidence_masks Nếu được đặt thành True, kết quả sẽ bao gồm một mặt nạ phân đoạn dưới dạng hình ảnh giá trị số thực, trong đó mỗi giá trị số thực đại diện cho bản đồ điểm số tin cậy của danh mục. {True, False} True
display_names_locale Đặt ngôn ngữ của nhãn để sử dụng cho tên hiển thị được cung cấp trong siêu dữ liệu của mô hình của tác vụ, nếu có. Giá trị mặc định là en đối với tiếng Anh. Bạn có thể thêm nhãn đã bản địa hoá vào siêu dữ liệu của mô hình tuỳ chỉnh bằng cách sử dụng API Trình viết siêu dữ liệu TensorFlow Lite Mã ngôn ngữ vi
result_callback Thiết lập trình nghe kết quả để nhận kết quả phân đoạn một cách không đồng bộ khi trình phân đoạn hình ảnh đang ở chế độ phát trực tiếp. Chỉ có thể sử dụng khi bạn đặt chế độ chạy thành LIVE_STREAM Không áp dụng Không áp dụng

Mô hình

Bạn có thể sử dụng Công cụ phân đoạn hình ảnh với nhiều mô hình học máy. Hầu hết các mô hình phân đoạn sau đây được xây dựng và huấn luyện để thực hiện quá trình phân đoạn bằng hình ảnh người. Tuy nhiên, mô hình DeepLab-v3 được xây dựng như một công cụ phân đoạn hình ảnh đa năng. Chọn mô hình phù hợp nhất với ứng dụng của bạn.

Mô hình phân đoạn ảnh chân dung tự chụp

Mô hình này có thể phân đoạn chân dung của một người và có thể dùng để thay thế hoặc sửa đổi nền trong hình ảnh. Mô hình đưa ra 2 danh mục, nền ở chỉ mục 0 và người ở chỉ mục 1. Mô hình này có các phiên bản với hình dạng đầu vào khác nhau, bao gồm cả phiên bản hình vuông và phiên bản ngang, có thể hiệu quả hơn đối với các ứng dụng mà đầu vào luôn ở dạng hình dạng đó, chẳng hạn như cuộc gọi video.

Tên mẫu thiết bị Hình dạng dữ liệu đầu vào Loại lượng tử hoá Thẻ mô hình Phiên bản
SelfieSegmenter (hình vuông) 256 x 256 số thực 16 thông tin Mới nhất
SelfieSegmenter (ngang) 144 x 256 số thực 16 thông tin Mới nhất

Mô hình phân đoạn tóc

Mô hình này chụp ảnh một người, xác định tóc trên đầu rồi đưa ra bản đồ phân đoạn hình ảnh cho tóc của người đó. Bạn có thể sử dụng mô hình này để nhuộm lại tóc hoặc áp dụng các hiệu ứng khác cho tóc. Mô hình này sẽ đưa ra các danh mục phân khúc sau:

0 - background
1 - hair
Tên mẫu thiết bị Hình dạng dữ liệu đầu vào Loại lượng tử hoá Thẻ mô hình Phiên bản
HairSegmenter 512 x 512 Không có (float32) thông tin Mới nhất

Mô hình phân đoạn ảnh chân dung tự chụp nhiều lớp

Mô hình này chụp ảnh một người, xác định các khu vực cho nhiều khu vực như tóc, da và quần áo, rồi tạo bản đồ phân đoạn hình ảnh cho các mục này. Bạn có thể sử dụng mô hình này để áp dụng nhiều hiệu ứng cho người trong hình ảnh hoặc video. Mô hình sẽ đưa ra các danh mục phân đoạn sau:

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
Tên mẫu thiết bị Hình dạng dữ liệu đầu vào Loại lượng tử hoá Thẻ mô hình Phiên bản
SelfieMulticlass (256 x 256) 256 x 256 Không có (float32) thông tin Mới nhất

Mô hình DeepLab-v3

Mô hình này xác định các phân khúc cho một số danh mục, bao gồm nền, người, mèo, chó và cây trồng trong chậu. Mô hình này sử dụng phương pháp nhóm kim tự tháp không gian để thu thập thông tin ở phạm vi xa hơn. Để biết thêm thông tin, hãy xem DeepLab-v3.

Tên mẫu thiết bị Hình dạng dữ liệu đầu vào Loại lượng tử hoá Phiên bản
DeepLab-V3 257 x 257 Không có (float32) Mới nhất

Điểm chuẩn nhiệm vụ

Dưới đây là điểm chuẩn tác vụ cho toàn bộ quy trình dựa trên các mô hình được huấn luyện trước ở trên. Kết quả về độ trễ chính là độ trễ trung bình trên Pixel 6 (tính theo CPU / GPU).

Tên mô hình Độ trễ của CPU Độ trễ của GPU
Phân đoạn selfie (hình vuông) 33,46 mili giây 35,15 mili giây
SelfieSegmenter (ngang) 34,19 mili giây 33,55 mili giây
HairSegmenter 57,90 mili giây 52,14 mili giây
SelfieMulticlass (256 x 256) 217,76 mili giây 71,24 mili giây
DeepLab-V3 123,93 mili giây 103,3 mili giây