Mạng nơ ron kết hợp với hình ảnh đầu vào có kích thước khác nhau - Phân đoạn hình ảnh


12

Tôi đang đối mặt với vấn đề có hình ảnh có kích thước khác nhau làm đầu vào trong một nhiệm vụ phân đoạn. Lưu ý rằng hình ảnh thậm chí không có cùng tỷ lệ khung hình.

Một cách tiếp cận phổ biến mà tôi thấy nói chung trong học tập sâu là cắt xén hình ảnh, vì nó cũng được đề xuất ở đây . Tuy nhiên, trong trường hợp của tôi, tôi không thể cắt hình ảnh và giữ trung tâm của nó hoặc một cái gì đó tương tự vì trong phân đoạn tôi muốn đầu ra có cùng kích thước với đầu vào.

Bài viết này cho thấy rằng trong một nhiệm vụ phân đoạn, người ta có thể cung cấp cùng một hình ảnh nhiều lần cho mạng nhưng với một tỷ lệ khác nhau và sau đó tổng hợp các kết quả. Nếu tôi hiểu chính xác phương pháp này, nó sẽ chỉ hoạt động nếu tất cả các hình ảnh đầu vào có cùng tỷ lệ khung hình. Xin hãy sửa tôi nếu tôi sai.

Một cách khác là chỉ thay đổi kích thước mỗi hình ảnh theo kích thước cố định. Tôi nghĩ rằng điều này cũng đã được đề xuất bởi câu trả lời cho câu hỏi này . Tuy nhiên, nó không được chỉ định theo cách thay đổi kích thước hình ảnh.

Tôi đã cân nhắc lấy chiều rộng và chiều cao tối đa trong tập dữ liệu và thay đổi kích thước tất cả các hình ảnh thành kích thước cố định đó để tránh mất thông tin. Tuy nhiên, tôi tin rằng mạng của chúng tôi có thể gặp khó khăn với hình ảnh bị bóp méo vì các cạnh trong ảnh có thể không rõ ràng. Điều gì có thể là cách tốt nhất để thay đổi kích thước hình ảnh của bạn trước khi đưa chúng vào mạng?

Có lựa chọn nào khác mà tôi không biết để giải quyết vấn đề có hình ảnh có kích thước khác nhau không?

Ngoài ra, cách tiếp cận nào bạn nghĩ là tốt nhất có tính đến độ phức tạp tính toán nhưng cũng có thể làm mất hiệu suất của mạng?

Tôi sẽ đánh giá cao nếu câu trả lời cho câu hỏi của tôi bao gồm một số liên kết đến một nguồn nếu có. Cảm ơn bạn.

Câu trả lời:


4

Tôi sẽ đưa ra một câu trả lời kỹ lưỡng hơn.

Có 2 vấn đề bạn có thể gặp phải.

1) Mạng lưới thần kinh của bạn (trong trường hợp này là mạng lưới thần kinh tích chập) không thể chấp nhận vật lý hình ảnh của các độ phân giải khác nhau. Đây thường là trường hợp nếu một người có các lớp được kết nối đầy đủ, tuy nhiên nếu mạng hoàn toàn kết hợp thì nó có thể chấp nhận hình ảnh của bất kỳ kích thước nào. Tích chập hoàn toàn ngụ ý rằng nó không chứa các lớp được kết nối đầy đủ, mà chỉ có các lớp chuẩn hóa chập, gộp tối đa và hàng loạt tất cả đều bất biến đối với kích thước của hình ảnh. Chính xác thì cách tiếp cận này đã được đề xuất trong bài báo đột phá này về Mạng phân tích hoàn toàn cho phân đoạn ngữ nghĩa . Hãy nhớ rằng kiến ​​trúc và phương pháp đào tạo của họ có thể hơi lỗi thời. Cách tiếp cận tương tự đã được sử dụng rộng rãiU-Net: Mạng kết hợp cho phân đoạn hình ảnh y sinh và nhiều kiến ​​trúc khác để phát hiện đối tượng, ước tính tư thế và phân đoạn.

2) Mạng lưới thần kinh chuyển đổi không phải là bất biến tỷ lệ. Ví dụ: nếu một con tàu huấn luyện trên những con mèo có cùng kích thước pixel trên hình ảnh có độ phân giải cố định, thì mạng sẽ thất bại trên hình ảnh của những con mèo có kích thước nhỏ hơn hoặc lớn hơn. Để khắc phục vấn đề này, tôi biết hai phương pháp (có thể có nhiều hơn trong tài liệu): 1) đào tạo đa quy mô các hình ảnh có kích thước khác nhau trong các mạng tích chập hoàn toàn để làm cho mô hình mạnh mẽ hơn khi thay đổi tỷ lệ; và 2) có kiến ​​trúc đa quy mô. Một nơi để bắt đầu là xem xét hai bài báo đáng chú ý này: Mạng Kim tự tháp Đặc trưng để Phát hiện Đối tượngĐại diện Độ phân giải Cao để Dán nhãn Điểm ảnh và Vùng .


2

Giả sử bạn có một tập dữ liệu lớn và được dán nhãn pixel-khôn ngoan, một cách khó khăn để giải quyết vấn đề là xử lý trước các hình ảnh để có cùng kích thước bằng cách chèn lề ngang và dọc theo kích thước mong muốn của bạn, như đối với các nhãn bạn thêm đầu ra giả đối với các pixel lề để khi tính toán tổn thất, bạn có thể che dấu lề.


Làm thế nào để một người đối phó với bình thường hóa trong những trường hợp này? Bạn có chỉ bình thường hóa các pixel trong một hình ảnh không được bao gồm trong lề của nó tôi đoán không?
MattSt

Có, vì quy trình tạo dữ liệu của bạn có các kích thước khác nhau nên nếu bạn bao gồm các lề, bạn sẽ thay đổi phân phối dữ liệu. lề được chèn để nhóm các mẫu đào tạo thành các đợt vì vấn đề của bạn cần xuất ra một vectơ đầu ra cố định.
Fadi Bakoura


0

Khi bạn muốn thực hiện phân đoạn, bạn có thể sử dụng U-Net. Nó không có các đơn vị kết nối đầy đủ. Do đó, kích thước của đầu vào sẽ không quan trọng.


3
Tôi nghĩ bạn nên giải thích về quan điểm của mình hơn một chút.
DuttaA

0

Tôi nghĩ bạn có thể thay đổi kích thước pixel ảnh của mình và chuyển đổi rgb thành nhị phân hoặc số nguyên cho bước tiếp theo


1
Xin chào và chào mừng đến với Sàn giao dịch AI Stack. Bạn có thể vui lòng mở rộng câu trả lời của bạn? Xem xét thêm nhiều ngữ cảnh để sao lưu câu trả lời của bạn và có thể thêm tài liệu tham khảo.
Jaden Tra Mand

0

Hãy thử thay đổi kích thước hình ảnh theo kích thước đầu vào của kiến ​​trúc mạng thần kinh của bạn (giữ nó cố định thành một cái gì đó như 128 * 128 trong kiến ​​trúc mạng U 2D tiêu chuẩn) bằng kỹ thuật nội suy lân cận gần nhất . Điều này là do nếu bạn thay đổi kích thước hình ảnh của mình bằng bất kỳ phép nội suy nào khác, nó có thể dẫn đến việc giả mạo các nhãn sự thật mặt đất. Điều này đặc biệt là một vấn đề trong phân khúc. Bạn sẽ không phải đối mặt với một vấn đề như vậy khi phân loại.

Hãy thử như sau:

import cv2 
resized_image = cv2.resize(original_image, (new_width, new_height), 
                           interpolation=cv2.INTER_NEAREST)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.