[ad_1]
Một số cảnh báo cần cân nhắc
Trong một số trường hợp, mặt nạ kết quả không phù hợp với các đám mây của hình ảnh tương ứng, như thể hiện trong hình ảnh sau:
Điều này có thể xảy ra do nhiều lý do: một là mô hình phát hiện đám mây được sử dụng trong Sentinelhub, trả về kết quả dương tính giả. Một lý do khác có thể là giá trị ngưỡng cố định được sử dụng trong quá trình xử lý trước của chúng tôi. Để giải quyết vấn đề này, chúng tôi đề xuất tạo mặt nạ mới hoặc loại bỏ các cặp mặt nạ hình ảnh. Chúng tôi đã chọn phương án thứ hai. Trong liên kết nàychúng tôi chia sẻ một số hình ảnh và mặt nạ được xử lý trước. Hãy thoải mái sử dụng chúng trong trường hợp bạn muốn thử nghiệm các thuật toán được giải thích trong weblog này.
Một số số liệu được sử dụng để đánh giá mô hình phân đoạn thể hiện. Một trong số đó là Giao điểm trên Liên hợp (IoU). Số liệu này đo lượng chồng chéo giữa hai mặt nạ phân đoạn. IoU có thể có giá trị từ 0 đến 1. IoU=0 nghĩa là không có chồng chéo giữa mặt nạ phân đoạn dự đoán và mặt nạ phân đoạn thực. IoU=1 biểu thị dự đoán hoàn hảo.
Chúng tôi đo IoU trên một hình ảnh thử nghiệm để đánh giá mô hình của mình. Việc triển khai IoU của chúng tôi như sau:
Bây giờ chúng tôi đã sẵn sàng phân đoạn các đám mây trong các hình ảnh vệ tinh được xử lý trước. Chúng tôi sử dụng một số thuật toán, bao gồm các phương pháp cổ điển như Random Forests và ANN. Chúng tôi cũng sử dụng các kiến trúc phân đoạn đối tượng phổ biến như U-NET và SegNet. Cuối cùng, chúng tôi thử nghiệm với một trong những thuật toán thị giác máy tính tiên tiến nhất: YOLO.
Rừng ngẫu nhiên
Chúng tôi muốn khám phá cách các phương pháp cổ điển phân đoạn đám mây trong ảnh vệ tinh tốt như thế nào. Đối với thí nghiệm này, chúng tôi sử dụng Rừng ngẫu nhiên. Như đã biết, Rừng ngẫu nhiên là một tập hợp các cây quyết định, mỗi cây được đào tạo trên một tập hợp dữ liệu ngẫu nhiên khác nhau.
Chúng ta phải chuyển đổi hình ảnh thành dữ liệu dạng bảng để huấn luyện thuật toán Rừng ngẫu nhiên. Trong đoạn mã sau, chúng tôi sẽ chỉ cách thực hiện:
Ghi chú: Bạn có thể đào tạo các mô hình bằng cách sử dụng hình ảnh và mặt nạ được xử lý trước bằng cách chạy tập lệnh src/mannequin.py
trong thiết bị đầu cuối của bạn:
> python src/mannequin.py --model_name={model_name}
Ở đâu:
--model_name=rf
đào tạo một Rừng ngẫu nhiên.--model_name=ann
đào tạo ANN.--model_name=unet
đào tạo mô hình U-NET.--model_name=segnet
đào tạo mô hình SegNet.--model_name=yolo
tàu YOLO.
Dự đoán trên hình ảnh thử nghiệm sử dụng Random Forest đưa ra kết quả sau:
Đáng ngạc nhiên là Random Forest thực hiện tốt việc phân đoạn các đám mây trong hình ảnh này. Tuy nhiên, dự đoán của nó là theo pixel, nghĩa là mô hình này không nhận ra các cạnh của đám mây trong quá trình đào tạo.
TƯ VẤN
Mạng nơ-ron nhân tạo là công cụ mạnh mẽ mô phỏng cấu trúc não để học từ dữ liệu và đưa ra dự đoán. Chúng tôi sử dụng kiến trúc đơn giản với một lớp ẩn dày đặc. Mục đích của chúng tôi không phải là tối ưu hóa kiến trúc của ANN mà là khám phá khả năng của các lớp dày đặc để phân đoạn đám mây trong hình ảnh vệ tinh.
Giống như những gì chúng tôi đã làm với Random Forest, chúng tôi đã chuyển đổi hình ảnh thành dữ liệu dạng bảng để đào tạo ANN.
Các dự đoán của mô hình trên hình ảnh thử nghiệm như sau:
Mặc dù IoU của mô hình này kém hơn so với Random Forest, ANN không phân loại các điểm ảnh bờ biển là mây. Thực tế này có thể là do kiến trúc của nó đơn giản.
Mạng U-NET
Đây là Mạng nơ-ron tích chập được phát triển vào năm 2015 bởi Olaf Ronneberger và cộng sự. (Xem bài báo gốc đây). Kiến trúc này là mô hình dựa trên bộ mã hóa-giải mã. Bộ mã hóa nắm bắt các đặc điểm và mẫu thiết yếu của hình ảnh, như các cạnh, màu sắc và kết cấu. Bộ giải mã giúp tạo bản đồ chi tiết về các đối tượng hoặc khu vực khác nhau trong hình ảnh. Trong kiến trúc U-NET, mỗi lớp bộ mã hóa tích chập được kết nối với lớp tương ứng của nó trong các lớp bộ giải mã. Điều này được gọi là bỏ qua kết nối.
U-Web thường được ưu tiên sử dụng cho các nhiệm vụ đòi hỏi độ chính xác và chi tiết cao, chẳng hạn như chụp ảnh y tế.
Việc triển khai kiến trúc U-NET của chúng tôi nằm trong đoạn mã sau:
Việc triển khai đầy đủ mô hình U-NET có thể được tìm thấy trong tập lệnh src/model_class.py
trong chúng tôi Kho lưu trữ GitHub. Đối với đào tạo, chúng tôi sử dụng kích thước lô là 10 và 100 kỷ nguyên. Kết quả của mô hình U-NET trên hình ảnh thử nghiệm như sau:
Đây là phép đo IoU tốt nhất thu được.
Mạng lưới SegNet
Đây là một mô hình dựa trên bộ mã hóa-giải mã khác được phát triển vào năm 2017 bởi Vijay Badrinarayanan và cộng sự SegNet tiết kiệm bộ nhớ hơn do sử dụng chỉ số max-pooling để upsampling. Kiến trúc này phù hợp với các ứng dụng mà hiệu quả và tốc độ bộ nhớ là rất quan trọng, như xử lý video thời gian thực.
Kiến trúc này khác với U-NET ở chỗ U-NET sử dụng kết nối bỏ qua để giữ lại các chi tiết nhỏ, trong khi SegNet thì không.
Giống như các mô hình khác, SegNet có thể được đào tạo bằng cách chạy tập lệnh src/mannequin.py.
Một lần nữa, chúng tôi sử dụng kích thước lô là 10 và 100 kỷ nguyên để đào tạo. Phân đoạn đám mây kết quả trên hình ảnh thử nghiệm được hiển thị bên dưới:
Không tốt bằng U-NET!
YOLO
You Solely Look As soon as (YOLO) là một thuật toán phát hiện đối tượng nhanh và hiệu quả được phát triển vào năm 2015 bởi Joseph Redmon và cộng sự Điểm hấp dẫn của thuật toán này là nó xử lý việc phát hiện đối tượng như một bài toán hồi quy thay vì một nhiệm vụ phân loại bằng cách tách các hộp giới hạn theo không gian và liên kết xác suất với từng hình ảnh được phát hiện bằng một mạng nơ-ron tích chập (CNN) duy nhất.
Ưu điểm của YOLO là nó hỗ trợ nhiều tác vụ thị giác máy tính, bao gồm phân đoạn hình ảnh. Chúng tôi sử dụng mô hình phân đoạn YOLO thông qua Khung Ultralytics. Việc đào tạo khá đơn giản, như được thể hiện trong đoạn trích dưới đây:
Bạn chỉ cần thiết lập một tập dữ liệu.Tiếng Việt tệp chứa đường dẫn của hình ảnh và nhãn. Có thêm thông tin về cách chạy mô hình YOLO để phân đoạn đây.
Ghi chú: Đường viền đám mây cần thiết thay vì mặt nạ để đào tạo mô hình YOLO cho phân đoạn. Bạn có thể tìm thấy các nhãn trong liên kết dữ liệu này.
Kết quả phân đoạn đám mây trên hình ảnh thử nghiệm như sau:
Ugh, kết quả này xấu quá!
Mặc dù YOLO là một công cụ mạnh mẽ cho nhiều tác vụ phân đoạn, nhưng nó có thể hoạt động kém trên các hình ảnh có độ mờ đáng kể vì độ mờ làm giảm độ tương phản giữa đối tượng và nền. Ngoài ra, YOLO có thể gặp khó khăn khi phân đoạn từng đối tượng trong các hình ảnh có nhiều đối tượng chồng chéo. Vì mây có thể là các đối tượng bị mờ mà không có các cạnh được xác định rõ ràng và thường chồng chéo với các đối tượng khác, nên YOLO không phải là mô hình phù hợp để phân đoạn mây trong ảnh vệ tinh.
Chúng tôi đã chia sẻ các mô hình được đào tạo đã giải thích ở trên trong liên kết này. Chúng tôi không đưa Random Forest vào vì kích thước tệp quá lớn (6 GB!).
Chúng tôi khám phá cách phân đoạn đám mây trong Người canh gác-2 hình ảnh vệ tinh sử dụng các phương pháp ML khác nhau. Sau đây là một số bài học rút ra từ thí nghiệm này:
- Dữ liệu thu được bằng cách sử dụng gói Python lính canh chưa sẵn sàng để đào tạo mô hình. Bạn phải xử lý trước và có thể điều chỉnh dữ liệu này theo định dạng phù hợp tùy thuộc vào mô hình đã chọn (ví dụ: chuyển đổi hình ảnh thành dữ liệu dạng bảng khi đào tạo Rừng ngẫu nhiên hoặc ANN).
- Mô hình tốt nhất là U-NET, tiếp theo là Random Forest và SegNet. Không có gì ngạc nhiên khi U-NET và SegNet nằm trong danh sách này. Cả hai kiến trúc đều được phát triển cho các tác vụ phân đoạn. Tuy nhiên, Random Forest hoạt động tốt một cách đáng ngạc nhiên. Điều này cho thấy các phương pháp ML cũng có thể hoạt động trong phân đoạn hình ảnh.
- Các mô hình tệ nhất là ANN và YOLO. Do kiến trúc đơn giản của nó, chúng tôi mong đợi ANN không mang lại kết quả tốt. Về YOLO, phân đoạn đám mây trong hình ảnh không phải là nhiệm vụ phù hợp với thuật toán này mặc dù đây là phương pháp tiên tiến nhất trong thị giác máy tính. Nhìn chung, thí nghiệm này cho thấy rằng chúng ta, với tư cách là nhà khoa học dữ liệu, phải luôn tìm kiếm thuật toán phù hợp nhất với dữ liệu của mình.
Chúng tôi hy vọng bạn thích bài viết này. Một lần nữa, cảm ơn bạn đã đọc!
Bạn có thể liên hệ với chúng tôi qua LinkedIn tại:
[ad_2]
Source link