Thư viện Python

10 thư viện xử lý ảnh tốt nhất trong Python

mm
Thêm Unite.AI vào các nguồn ưu tiên của bạn trên Google

Xử lý ảnh bằng Python bao gồm các tác vụ từ chỉnh sửa hằng ngày, đo lường khoa học, phân tích video, tăng cường dữ liệu huấn luyện mô hình đến xử lý ảnh kích thước lớn. Mỗi loại tác vụ cần những công cụ khác nhau. Một thư viện phù hợp để tạo ảnh thu nhỏ có thể không giữ được thông tin không gian cần thiết cho một khối ảnh nghiên cứu, trong khi thư viện biến đổi ảnh bằng GPU có thể khiến một dịch vụ web nhỏ trở nên phức tạp không cần thiết.

Chúng tôi đã đánh giá độc lập 10 thư viện này về khả năng, quy ước dữ liệu, yêu cầu tích hợp và giới hạn thực tế, đồng thời đối chiếu tài liệu chính thức hiện hành. OpenCV dẫn đầu về thị giác máy tính đa dụng, Pillow phù hợp để chỉnh sửa ảnh raster hằng ngày, còn scikit-image dành cho phân tích khoa học. Thứ hạng phản ánh đánh giá biên tập dựa trên các trường hợp sử dụng này, chứ không phải kết quả của một phép đo tốc độ thực nghiệm mới.

Một số thư viện phát huy hiệu quả nhất khi kết hợp với nhau: ImageIO xử lý tài nguyên, SciPy cung cấp các phép toán số, còn một thư viện cấp cao hơn thực hiện phân tích. Hãy chọn một tổ hợp gọn nhẹ, giúp bảo toàn ý nghĩa của ảnh từ đầu vào đến đầu ra.

So sánh các thư viện xử lý ảnh tốt nhất cho Python

Công cụ AIPhù hợp nhất choTính năng
OpenCVThị giác máy tính đa dụng và quy trình xử lý videoLọc; biến đổi hình học; phát hiện đặc trưng; hiệu chuẩn; phân tích video
PillowChỉnh sửa ảnh và xử lý tệp hằng ngàyCắt xén; thay đổi kích thước; ghép ảnh; vẽ; chế độ ảnh; hỗ trợ định dạng
scikit-imagePhân tích và đo lường ảnh khoa họcPhân đoạn; hình thái học; khôi phục ảnh; đặc trưng; đo lường vùng
torchvisionTiền xử lý ảnh trong quy trình PyTorchCác phép biến đổi v2; ảnh; mặt nạ; hộp giới hạn; video; điểm đặc trưng
KorniaThị giác khả vi và xử lý tensor theo lôToán tử PyTorch; hình học; bộ lọc; màu sắc; tăng cường dữ liệu
AlbumentationsXTăng cường phong phú, đồng bộ với các mục tiêu huấn luyệnCác phép biến đổi có thể kết hợp; ảnh; mặt nạ; hộp giới hạn; điểm đặc trưng; khối dữ liệu
SciPy ndimageLọc đa chiều và các phép toán cấp mảngBộ lọc; hình thái học; nội suy; gán nhãn; đo lường
ImageIOĐọc và ghi tài nguyên ảnh dưới dạng mảngAPI v3; trình bổ trợ; chuỗi; siêu dữ liệu; kiểm tra tài nguyên
SimpleITKKhối dữ liệu có thông tin không gian và quy trình đăng ký ảnhHình học ảnh; khoảng cách điểm ảnh; gốc tọa độ; hướng; biến đổi không gian
pyvipsQuy trình xử lý ảnh kích thước lớn với mức sử dụng bộ nhớ được kiểm soátGiao diện liên kết với libvips; quy trình xử lý trì hoãn; truy cập tuần tự; thao tác ảnh

1. OpenCV

OpenCV là lựa chọn chúng tôi đề xuất đầu tiên khi xử lý ảnh là một phần của ứng dụng thị giác máy tính rộng hơn. Giao diện Python của thư viện hỗ trợ lọc, biến đổi hình học, phát hiện đặc trưng, hiệu chuẩn camera và phân tích video. Phạm vi tính năng rộng này rất hữu ích khi một dự án cần vừa làm sạch ảnh, xác định cấu trúc, vừa xử lý luồng khung hình, thay vì chỉ chuyển đổi một tệp đơn lẻ.

Điểm tích hợp quan trọng cần lưu ý là cách biểu diễn ảnh. Các phương thức tải ảnh màu thông dụng của OpenCV sử dụng thứ tự BGR, trong khi nhiều công cụ khác thường dùng RGB. Chuyển đổi tường minh tại ranh giới giữa các thư viện giúp tránh những kết quả trông có vẻ hợp lý nhưng thực chất không chính xác. Cũng cần theo dõi kiểu dữ liệu số nguyên hay dấu phẩy động, cũng như việc một hàm yêu cầu ảnh thang độ xám hay ảnh nhiều kênh; mảng có kích thước phù hợp chưa chắc đã đúng về mặt ngữ nghĩa.

Chúng tôi đề xuất OpenCV cho quy trình xử lý ảnh từ camera và các ứng dụng kỹ thuật thị giác nói chung, còn Pillow thường đơn giản hơn khi chỉ cần chỉnh sửa ảnh cơ bản. Trước khi triển khai, hãy kiểm tra bản dựng đã cài đặt với các nguồn video, codec và tính năng tùy chọn cần dùng. Một thao tác thành công trên tệp JPEG cục bộ không chứng minh rằng camera dùng trong môi trường thực tế hoặc luồng video đã mã hóa cũng sẽ hoạt động tương tự. Khi đánh giá hiệu năng thời gian thực, hãy đo tổng thể quá trình giải mã, xử lý và xuất dữ liệu.

Ưu và nhược điểm

  • Bộ công cụ thị giác máy tính cổ điển đa dạng
  • Quy trình xử lý ảnh và video trong cùng một hệ sinh thái
  • Truy cập các bản triển khai gốc bằng Python
  • Cần chú ý đến quy ước về màu sắc và kiểu dữ liệu
  • Khả năng hỗ trợ codec và tính năng tùy chọn phụ thuộc vào bản dựng

Khám phá OpenCV

2. Pillow

Pillow là lựa chọn thiết thực để bắt đầu với các tác vụ phổ biến trên ảnh raster, chẳng hạn như tạo ảnh thu nhỏ, cắt ảnh, chuyển đổi định dạng, ghép ảnh và thêm văn bản. Thư viện này cung cấp giao diện đối tượng ảnh đơn giản, dễ sử dụng hơn một bộ công cụ thị giác máy tính đầy đủ trong nhiều tập lệnh và dịch vụ web. Khi cần chuẩn bị hoặc phân phối hình ảnh, sự đơn giản thường là ưu điểm chính của Pillow.

Chế độ ảnh và siêu dữ liệu cần được quan tâm không kém thao tác thay đổi kích thước. Ảnh RGB, ảnh thang độ xám, ảnh bảng màu và ảnh có kênh alpha có thể cần được xử lý theo những cách khác nhau; siêu dữ liệu về hướng cũng có thể ảnh hưởng đến cách hiển thị ảnh chụp. Hãy xác định cách quy trình xử lý độ trong suốt, hồ sơ màu và chất lượng đầu ra. Một tệp mở được vẫn có thể hiển thị sai nếu quá trình chuyển đổi chưa đầy đủ.

Chúng tôi đề xuất Pillow cho các quy trình chỉnh sửa thông thường với kích thước ảnh vừa phải. Khi kiểm tra đầu ra, hãy dùng các dữ liệu đầu vào tiêu biểu, bao gồm cả tài nguyên có nền trong suốt và ảnh chụp có siêu dữ liệu về hướng. Với ảnh do người dùng tải lên, hãy lưu ý giới hạn giải nén và các codec được hỗ trợ; đừng cho rằng định dạng nào cũng giữ nguyên mọi loại siêu dữ liệu. Đối với các phép đo khoa học phức tạp, theo dõi theo thời gian thực hoặc xử lý ảnh rất lớn trong điều kiện bộ nhớ hạn chế, một thư viện khác bên dưới có thể phù hợp hơn để làm thành phần cốt lõi.

Ưu và nhược điểm

  • Giao diện chỉnh sửa ảnh dễ sử dụng
  • Các công cụ hữu ích để xử lý định dạng, vẽ và ghép ảnh
  • Phù hợp với tập lệnh và tài nguyên web
  • Không phải là một hệ thống phân tích thị giác hoàn chỉnh
  • Cần xử lý cẩn thận chế độ ảnh, siêu dữ liệu và dữ liệu đầu vào lớn

Khám phá Pillow

3. scikit-image

scikit-image là lựa chọn tổng quát mà chúng tôi ưu tiên để bắt đầu phân tích ảnh khoa học trong hệ sinh thái NumPy. Thư viện này cung cấp các thuật toán phân đoạn, hình thái học, khôi phục ảnh, trích xuất đặc trưng và đo lường. Điểm hấp dẫn của nó là quy trình phân tích dễ đọc, cho phép kiểm tra các mảng trung gian; nhờ đó, thư viện hữu ích cho kính hiển vi, ảnh thu được trong thực nghiệm và các dự án mà việc hiểu kết quả cũng quan trọng như tạo ra kết quả.

Các quy ước về kiểu dữ liệu là yếu tố thiết yếu để sử dụng thư viện chính xác. Chuyển ảnh số nguyên sang số thực không phải lúc nào cũng tương đương với việc đưa cường độ ảnh về thang giá trị mà thuật toán yêu cầu. Hãy kiểm tra các giả định được ghi trong tài liệu của từng hàm và sử dụng những tiện ích chuyển đổi phù hợp. Đầu ra trông có vẻ hợp lý vẫn có thể che giấu một lỗi số học làm thay đổi ngưỡng, khoảng cách hoặc các phép đo ở bước tiếp theo.

Hãy chọn scikit-image khi bạn muốn xây dựng và diễn giải quy trình phân tích dựa trên các phép xử lý đã được thiết lập. Hãy kiểm chứng kết quả phân đoạn và đo lường bằng các ví dụ tiêu biểu thay vì chỉ đánh giá qua hình ảnh trực quan đã được trau chuốt. Đây không phải là hệ thống thu ảnh từ camera hay giải pháp thay thế cho mô hình ảnh chuyên biệt có tọa độ vật lý. Với dữ liệu thể tích, hãy xác định trục nào biểu thị không gian và trục nào biểu thị kênh hoặc thời gian trước khi áp dụng thao tác lên mảng.

Ưu và nhược điểm

  • Quy trình phân tích khoa học dễ đọc
  • Hỗ trợ toàn diện cho phân đoạn và đo lường
  • Tích hợp tự nhiên với các mảng NumPy
  • Quy ước về thang cường độ có thể gây ra lỗi khó nhận thấy
  • Cần dùng công cụ khác để thu ảnh từ camera và xử lý siêu dữ liệu vật lý

Khám phá scikit-image

4. torchvision

torchvision là lựa chọn tự nhiên để bắt đầu khi quy trình xử lý ảnh phục vụ một mô hình thị giác PyTorch. Các phép biến đổi của thư viện có thể chuẩn bị ảnh và chú giải liên quan ngay trong cùng quy trình huấn luyện, giảm nhu cầu viết mã tiền xử lý riêng. Thư viện này còn cung cấp bộ dữ liệu và mô hình thị giác, nhưng thành phần phù hợp nhất ở đây là lớp biến đổi dành cho đầu vào của mô hình.

Tài liệu hiện hành khuyến nghị sử dụng torchvision.transforms.v2. Các phép biến đổi này xử lý cả ảnh lẫn những mục tiêu như hộp giới hạn, mặt nạ, video và điểm đặc trưng; điều này rất quan trọng khi thao tác cắt hoặc lật cần áp dụng đồng thời lên cả điểm ảnh lẫn nhãn. Hãy sử dụng đúng kiểu dữ liệu đầu vào và kiểm tra trực quan các chú giải sau khi biến đổi. Nếu áp dụng các phép biến đổi ngẫu nhiên được lấy mẫu độc lập cho ảnh và mặt nạ, dữ liệu huấn luyện sẽ không còn đáng tin cậy.

Chúng tôi đề xuất torchvision khi các phép biến đổi được hỗ trợ đáp ứng yêu cầu và dự án đã phụ thuộc vào PyTorch. Hãy kiểm tra hình dạng tensor, kiểu dữ liệu, phạm vi giá trị và các bước tiền xử lý mà trọng số của mô hình được chọn yêu cầu. Giữ cho các phép biến đổi khi xác thực mang tính xác định, trừ khi quy trình đánh giá yêu cầu rõ ràng một chính sách khác. Vị trí của thư viện dựa trên sự tiện lợi khi tích hợp, chứ không có nghĩa là nó luôn nhanh hơn; hiệu năng phụ thuộc vào kích thước ảnh, cách bố trí bộ nhớ, quá trình tải dữ liệu và nơi thực hiện các phép biến đổi.

Ưu và nhược điểm

  • Tích hợp tự nhiên vào các dự án PyTorch
  • API v2 được khuyến nghị hỗ trợ nhiều loại mục tiêu
  • Có thể giữ cho các phép biến đổi không gian khớp với chú giải
  • Cần tuân thủ cẩn thận các quy ước về mục tiêu và tensor
  • Hiệu năng phụ thuộc vào toàn bộ quy trình tải dữ liệu

Khám phá torchvision

5. Kornia

Kornia đặc biệt hữu ích khi cần tích hợp các thao tác xử lý ảnh vào phép tính PyTorch, thay vì chạy chúng dưới dạng một tập lệnh tiền xử lý riêng. Thư viện cung cấp các thao tác thị giác dựa trên tensor, bao gồm hình học, lọc, màu sắc, ghép đặc trưng và tăng cường dữ liệu. Nhiều thao tác hỗ trợ tính vi phân, cho phép hàm mục tiêu tối ưu hóa phụ thuộc vào ảnh đã biến đổi, thay vì coi tiền xử lý là một bước bên ngoài cố định.

Mô hình thực thi theo lô của thư viện cũng có thể hữu ích khi dữ liệu đã nằm trên bộ tăng tốc. Tuy nhiên, chuyển một thao tác sang GPU không phải lúc nào cũng có lợi: việc truyền dữ liệu, kích thước lô, cấp phát bộ nhớ và các tác vụ liên quan đều ảnh hưởng đến tổng thời gian chạy. Hãy so sánh toàn bộ quy trình bằng một khối lượng công việc thực tế. Kiểm tra khả năng tính vi phân của chính các thao tác và tham số mà quá trình tối ưu hóa của bạn thực sự cần.

Chúng tôi đề xuất Kornia cho các tác vụ hình học khả vi, hệ thống học máy và quy trình thị giác xử lý trực tiếp trên tensor. Thư viện thường tạo thêm chi phí không cần thiết nếu tập lệnh chỉ tạo một vài ảnh thu nhỏ. Khi kết nối với thư viện khác, hãy xác nhận bố cục tensor, phạm vi cường độ và quy ước tọa độ. Ngay cả khi có thể tính gradient, quá trình tối ưu hóa vẫn có thể thất bại do hàm mục tiêu hoặc giá trị khởi tạo không phù hợp; tính khả vi là một khả năng hữu ích, chứ không đảm bảo phép đăng ký hay phép biến đổi học được sẽ chính xác.

Ưu và nhược điểm

  • Các thao tác thị giác có thể tham gia vào autograd
  • Quy trình xử lý tensor theo lô và trên bộ tăng tốc
  • Các thành phần hình học và tăng cường dữ liệu hữu ích
  • Yêu cầu PyTorch và tuân theo quy ước tensor của thư viện
  • Mức tăng hiệu năng trên GPU và khả năng tính gradient tùy thuộc vào từng thao tác

Khám phá Kornia

6. AlbumentationsX

AlbumentationsX là lựa chọn chuyên biệt nổi bật để xây dựng các chính sách tăng cường đa dạng cho dữ liệu huấn luyện thị giác máy tính. Các phép biến đổi có thể kết hợp của thư viện áp dụng nhất quán những thay đổi về không gian lên ảnh và các mục tiêu đi kèm, bao gồm mặt nạ, khung giới hạn và điểm mốc. Sự đồng bộ này quan trọng hơn việc chỉ có nhiều hiệu ứng hình ảnh: nhãn của các mẫu huấn luyện phải vẫn chính xác sau khi cắt xén, xoay hoặc thực hiện các thay đổi hình học khác.

Hãy bắt đầu với các phép tăng cường phản ánh những biến thiên có thể xảy ra trong môi trường dự kiến. Kiểm tra các mẫu sau biến đổi và xem cách xử lý những vật thể bị cắt xén, mặt nạ trống và chú thích chỉ hiển thị một phần. Tăng cường mạnh hơn không phải lúc nào cũng tốt hơn; một phép biến đổi có thể xóa mất tín hiệu, làm thay đổi ý nghĩa của nhãn hoặc tạo ra những mẫu mà mô hình sẽ không bao giờ gặp. Hãy đo lường tác động của chính sách trên một tập xác thực độc lập.

Gói được duy trì hiện nay có bối cảnh cấp phép khác với Albumentations phiên bản cũ. Tài liệu chính thức hiện tại cung cấp AlbumentationsX theo giấy phép AGPL-3.0-only hoặc các điều khoản thương mại riêng. Đừng cho rằng mô tả giấy phép MIT cũ vẫn áp dụng cho bản cài đặt mới. Hãy xem xét chính xác gói và phiên bản trước khi sử dụng. Chúng tôi vẫn giới thiệu thư viện vì tính hữu ích về mặt kỹ thuật, đồng thời đề xuất torchvision hoặc một lựa chọn phù hợp khác nếu các tính năng hay điều khoản cấp phép của lựa chọn đó đáp ứng dự án thuận lợi hơn.

Ưu và nhược điểm

  • Quy trình tăng cường dữ liệu phong phú, có thể kết hợp
  • Đồng bộ ảnh với các mục tiêu liên quan
  • Hữu ích cho nhiều tác vụ huấn luyện thị giác
  • Điều khoản cấp phép hiện hành khác với mô tả về phiên bản cũ
  • Chính sách được lựa chọn không phù hợp có thể làm sai lệch các mẫu huấn luyện

Khám phá AlbumentationsX

7. SciPy ndimage

Mô-đun ndimage của SciPy xứng đáng có mặt trong bộ công cụ xử lý ảnh tổng quát, bởi nhiều tác vụ bắt đầu bằng việc thao tác trên các mảng đa chiều. Mô-đun này cung cấp các chức năng lọc, hình thái học toán học, nội suy, gán nhãn và đo lường mà không cần đến một khung huấn luyện mô hình. Mô-đun đặc biệt hữu ích khi ảnh là một phần của phép tính khoa học rộng hơn vốn đã sử dụng NumPy và SciPy.

Cách tiếp cận ở cấp thấp hơn giúp nhà phát triển kiểm soát các chi tiết số học mà những giao diện cấp cao hơn có thể che khuất. Cách xử lý biên, bậc nội suy, kiểu dữ liệu đầu ra và các trục được xử lý đều có thể làm thay đổi ý nghĩa của kết quả. Hãy chủ động chọn các thiết lập này trong những quy trình quan trọng. Không nên để kênh màu hoặc trục thời gian vô tình bị làm trơn như thể đó là một chiều không gian khác.

Chúng tôi đề xuất ndimage làm bộ công cụ số học có thể tái sử dụng, bao gồm cả xử lý ảnh thể tích, và scikit-image cho nhiều quy trình phân tích cấp cao hơn. Hai thư viện có thể bổ trợ cho nhau thay vì phải cạnh tranh để được sử dụng độc quyền. Mô-đun này không cung cấp một hệ thống hoàn chỉnh để xử lý tệp ảnh hoặc siêu dữ liệu không gian, vì vậy hãy đáp ứng các yêu cầu đó ở nơi khác trong ứng dụng. Trước khi mở rộng một thao tác cho tập dữ liệu lớn, hãy kiểm thử trên các mảng nhỏ có kết quả mong đợi đã biết, đặc biệt khi cách xử lý biên hoặc tính liên thông của nhãn ảnh hưởng đến phép đo.

Ưu và nhược điểm

  • Các phép toán cơ bản đa dạng để xử lý dữ liệu đa chiều
  • Phù hợp với các quy trình hiện có sử dụng NumPy và SciPy
  • Các thông số số học được kiểm soát rõ ràng
  • API cấp thấp đòi hỏi lựa chọn tham số cẩn thận
  • Cần xử lý riêng việc đọc và ghi tệp cùng siêu dữ liệu không gian vật lý

Khám phá SciPy ndimage

8. ImageIO

ImageIO đảm nhiệm một vai trò hỗ trợ quan trọng: đưa dữ liệu hình ảnh vào và ra khỏi quy trình làm việc dựa trên mảng. Giao diện v3 cung cấp các thao tác đọc, ghi, duyệt và kiểm tra, còn plugin xử lý các tài nguyên và định dạng bên dưới. Thư viện này có thể kết nối dữ liệu đầu vào từ tệp với hoạt động phân tích trong NumPy hoặc scikit-image mà không buộc mã phân tích phải xử lý mọi chi tiết của bộ giải mã.

Giao diện thống nhất không có nghĩa là mọi plugin đều hoạt động giống hệt nhau. Khả năng hỗ trợ định dạng, siêu dữ liệu, lựa chọn khung hình và các phần phụ thuộc tùy chọn có thể khác nhau. Khi cần bảo đảm khả năng tái lập, hãy chỉ định và kiểm thử plugin, đồng thời phân biệt ảnh đơn với chuỗi ảnh hoặc ảnh thể tích. Tùy thuộc vào định dạng và thao tác tiếp theo, duyệt từng khung hình có thể phù hợp hơn việc tải toàn bộ tài nguyên vào bộ nhớ.

Chúng tôi khuyến nghị dùng ImageIO như một công cụ hỗ trợ nhập/xuất, thay vì thay thế các thư viện phân đoạn, lọc hoặc xử lý hình học. Hãy kiểm tra các tệp đại diện, bao gồm cả đầu vào có độ sâu bit khác thường và tệp nhiều trang, trong chính môi trường triển khai thực tế. Kiểm tra để bảo đảm thao tác ghi rồi mở lại tệp đầu ra vẫn giữ nguyên các giá trị và siêu dữ liệu mà ứng dụng cần. Chỉ giải mã thành công thôi chưa đủ để chứng minh phần còn lại của quy trình khoa học hoặc học máy đã nhận được dữ liệu ở dạng biểu diễn như dự kiến.

Ưu điểm và nhược điểm

  • Giao diện nhập/xuất tiện dụng, hướng đến mảng
  • Hỗ trợ tài nguyên thông qua plugin
  • Hữu ích cho việc duyệt và kiểm tra siêu dữ liệu
  • Khả năng thay đổi tùy theo plugin và các phần phụ thuộc đã cài đặt
  • Cung cấp chức năng nhập/xuất, không phải bộ công cụ phân tích toàn diện

Khám phá ImageIO

9. SimpleITK

SimpleITK là lựa chọn chuyên biệt được khuyến nghị khi hình ảnh biểu diễn một vùng vật lý, chứ không chỉ là lưới pixel hiển thị. Mô hình ảnh của thư viện bao gồm gốc tọa độ, khoảng cách giữa các điểm ảnh và hướng, bên cạnh kích thước cùng giá trị pixel. Điều này đặc biệt quan trọng với ảnh thể tích trong y học và khoa học, nơi khoảng cách và hướng ảnh hưởng đến cách căn chỉnh, lấy mẫu lại và đo đạc hình ảnh.

Hai mảng có cùng hình dạng vẫn có thể biểu diễn những vị trí vật lý khác nhau. Vì vậy, việc bảo toàn hình học trong quá trình xử lý cũng quan trọng như bảo toàn chính các giá trị. Khi chuyển đổi giữa ảnh SimpleITK và mảng NumPy, cần chú ý đến quy ước trục và siêu dữ liệu. Một thao tác trông có vẻ chính xác trong trình xem lát cắt vẫn có thể tạo ra ảnh thể tích bị đặt sai vị trí hoặc sai tỷ lệ nếu thông tin không gian bị mất.

Chúng tôi khuyến nghị dùng SimpleITK cho các quy trình đăng ký ảnh và phân tích không gian được hưởng lợi từ mô hình ảnh tường minh này. Thư viện này chuyên biệt hơn mức cần thiết đối với hình ảnh web thông thường. Hãy thống nhất đơn vị, kiểm tra hình học sau biến đổi và thử nghiệm việc lấy mẫu lại bằng các mốc đã biết hoặc tài liệu tham chiếu phù hợp khác. Thư viện cung cấp công cụ tính toán hình ảnh; bản thân nó không xác lập tính hợp lệ của một kết luận khoa học, cũng không khiến quy trình xử lý phù hợp với ứng dụng lâm sàng nếu thiếu khâu thẩm định chuyên biệt cho lĩnh vực đó.

Ưu điểm và nhược điểm

  • Biểu diễn hình ảnh tường minh trong không gian vật lý
  • Nền tảng hữu ích cho đăng ký ảnh và lấy mẫu lại
  • Phù hợp với các quy trình khoa học xử lý ảnh thể tích
  • Cần thận trọng khi xử lý hình học và chuyển đổi mảng
  • Chuyên biệt hơn so với chỉnh sửa ảnh raster thông thường

Khám phá SimpleITK

10. pyvips

pyvips đáng để cân nhắc khi kích thước hình ảnh hoặc khối lượng xử lý khiến quy trình tải, chỉnh sửa rồi lưu đơn giản trở nên quá tốn kém. Thư viện này cung cấp libvips thông qua Python và xây dựng các quy trình xử lý trong đó pixel chỉ được xử lý khi có yêu cầu đầu ra. Cách tiếp cận này có thể giảm nhu cầu tạo toàn bộ ảnh trung gian trong bộ nhớ, khiến pyvips trở thành lựa chọn hấp dẫn cho các khối lượng công việc lớn về cung cấp hình ảnh hoặc xử lý hàng loạt.

Mô hình truy cập đóng vai trò then chốt trong cách thư viện hoạt động. Tài liệu phân biệt truy cập tuần tự với truy cập ngẫu nhiên, đồng thời giải thích rằng khi tải tệp, ban đầu thư viện chỉ đọc phần đầu tệp chứ chưa giải mã ngay mọi pixel. Hãy chọn chế độ truy cập phù hợp với các thao tác tiếp theo. Chuyển một hình ảnh lớn thành mảng NumPy hoàn chỉnh có thể làm mất lợi thế tiết kiệm bộ nhớ vốn là lý do bạn chọn quy trình xử lý trì hoãn.

Chúng tôi khuyến nghị dùng pyvips khi số liệu đo đạc cho thấy giải mã, áp lực bộ nhớ hoặc các thao tác hình ảnh lặp đi lặp lại đang gây nghẽn. Hãy xác minh các tính năng libvips đã cài đặt và khả năng hỗ trợ những định dạng cần thiết trên máy chủ sản xuất, sau đó đo mức sử dụng bộ nhớ đỉnh và tổng thời gian xử lý. Đây không phải lúc nào cũng là lựa chọn tốt nhất cho mọi thuật toán, nhất là những thuật toán đòi hỏi truy cập mảng không hạn chế. Việc đưa thư viện này vào danh sách giúp mở rộng phạm vi cân nhắc, vượt ra ngoài huấn luyện mô hình và xử lý ảnh nhỏ để tính đến chi phí thực tế khi vận hành các quy trình xử lý hình ảnh ở quy mô lớn.

Ưu điểm và nhược điểm

  • Xử lý trì hoãn có thể giảm mức sử dụng bộ nhớ cho ảnh trung gian
  • Quy trình truy cập tuần tự phù hợp với ảnh lớn
  • Truy cập các thao tác của libvips bằng Python
  • Lợi ích phụ thuộc vào cách truy cập và các thao tác được thực hiện
  • Cần kiểm tra thư viện gốc và khả năng hỗ trợ định dạng khi triển khai

Khám phá pyvips

Các quy ước về hình ảnh có thể làm hỏng quy trình xử lý

  • Màu sắc và kênh: Ghi lại việc sử dụng RGB hay BGR, ảnh thang độ xám hay ảnh màu, cũng như cách biểu diễn kênh alpha. Chuyển đổi có chủ đích tại ranh giới giữa các thư viện.
  • Kiểu dữ liệu và phạm vi giá trị: Chuyển một mảng sang kiểu số thực không nhất thiết sẽ chuẩn hóa dữ liệu. Hãy giữ nguyên các giá trị khoa học có ý nghĩa và tuân theo yêu cầu của hàm tiếp nhận dữ liệu.
  • Trục và hình học: Phân biệt chiều cao, chiều rộng, số kênh, thời gian và độ sâu. Với ảnh không gian, hãy giữ nguyên khoảng cách điểm ảnh, gốc tọa độ, hướng và đơn vị nhất quán.
  • Nội suy: Xử lý mặt nạ phân loại khác với ảnh cường độ liên tục. Phương pháp nội suy phù hợp với ảnh chụp có thể tạo ra các giá trị nhãn không hợp lệ trong mặt nạ phân đoạn.
  • Siêu dữ liệu và hướng ảnh: Kiểm tra cấu hình màu, thẻ hướng ảnh và độ trong suốt trong toàn bộ chu trình đọc, xử lý rồi ghi. Xác định những siêu dữ liệu nào cần được giữ lại trong đầu ra.
  • Nhãn dùng để huấn luyện: Trực quan hóa các hộp, mặt nạ và điểm đặc trưng sau khi tăng cường dữ liệu. Các phép biến đổi nhất quán về mặt không gian vẫn có thể tạo ra mẫu không phù hợp nếu chính sách làm thay đổi ý nghĩa của nhãn.

Cách so sánh hiệu năng và mức độ dễ bảo trì

Đánh giá hiệu năng của toàn bộ quy trình với kích thước và định dạng ảnh tiêu biểu. Bao gồm giải mã, sao chép, truyền dữ liệu giữa các thiết bị, xử lý và mã hóa; ghi lại mức sử dụng bộ nhớ đỉnh cùng với thời gian thực hiện. Một bộ lọc nhanh có thể ít tạo ra khác biệt nếu giải mã tệp chiếm phần lớn thời gian, còn việc chuyển ảnh tải lười thành một mảng đầy đủ có thể làm thay đổi đáng kể mức sử dụng bộ nhớ.

Cố định các phiên bản tương thích và xác minh codec hoặc trình cắm tùy chọn trên máy triển khai. Đối với việc tăng cường dữ liệu, hướng dẫn cấp phép AlbumentationsX chính thức là điểm khởi đầu phù hợp để tìm hiểu các điều khoản hiện hành của gói. Tránh dựa vào tuyên bố về giấy phép được sao chép từ một gói hoặc hướng dẫn cũ hơn.

Khi dữ liệu được xử lý để đưa vào mô hình, hãy tham khảo hướng dẫn về thư viện học máy Python của chúng tôi để chọn lớp mô hình, hoặc bài so sánh các thư viện học sâu của chúng tôi dành cho quy trình sử dụng mạng nơ-ron. Hãy đảm bảo tiền xử lý ảnh nhất quán giữa quá trình huấn luyện và suy luận.

Nên chọn thư viện xử lý ảnh nào?

Hãy bắt đầu với OpenCV cho các tác vụ thị giác máy tính và video nói chung, Pillow để chỉnh sửa ảnh hằng ngày hoặc scikit-image cho phân tích khoa học. Bổ sung SciPy ndimage khi cần các phép toán số đa chiều được xác định rõ ràng, và ImageIO khi cần thêm khả năng tải và ghi tài nguyên.

Với các dự án PyTorch, hãy dùng thử torchvision để tiền xử lý tiêu chuẩn và đồng bộ hóa các mục tiêu, còn Kornia phù hợp khi cần các phép toán tensor khả vi hoặc xử lý theo lô. Hãy cân nhắc AlbumentationsX để sử dụng các chính sách tăng cường dữ liệu phong phú hơn, sau khi kiểm tra điều khoản của gói và xác thực các mẫu được tạo ra.

Dùng SimpleITK khi hình học vật lý là yếu tố cốt lõi của ảnh, và pyvips khi cần một chiến lược sử dụng bộ nhớ khác để xử lý ảnh lớn. Lựa chọn phù hợp nhất là lựa chọn giữ được dữ liệu mà ứng dụng cần, đồng thời giúp bạn hiểu rõ chi phí xử lý và triển khai.

Alex dẫn dắt hoạt động tin tức được hỗ trợ bởi AI của Unite.AI, kết hợp báo chí, nghiên cứu và tự động hoá để hỗ trợ việc đưa tin về trí tuệ nhân tạo một cách kịp thời và có khả năng mở rộng. Công việc của anh giúp đảm bảo các phát triển AI mới nổi được đưa lên một cách hiệu quả trong khi vẫn duy trì tiêu chuẩn biên tập của tờ báo.