B. Tạo mô hình
Mô hình phân loại PointNet bao gồm hai thành phần. Thành phần đầu tiên là bộ mã hóa đám mây điểm học cách mã hóa dữ liệu đám mây điểm thưa thớt thành một vectơ đặc trưng dày đặc. Thành phần thứ hai là một bộ phân loại dự đoán lớp phân loại của mỗi đám mây điểm được mã hóa.
Mô hình bộ mã hóa PointNet bao gồm bốn mô hình tiếp theo là hoạt động tối đa.
- Mô hình biến đổi đầu vào - Mô hình MLP được chia sẻ - Mô hình chuyển đổi tính năng - Mô hình MLP được chia sẻ
Mô hình MLP chia sẻ được thực hiện bằng cách sử dụng một loạt các phép toán tích chập, chuẩn hóa hàng loạt và ReLU. Hoạt động tích chập được cấu hình để các trọng số được chia sẻ trên đám mây điểm đầu vào. Mô hình chuyển đổi
dụng cho mỗi đám mây điểm. MLP được chia sẻ và hoạt động tối đa làm cho bộ mã hóa PointNet bất biến đối với thứ tự mà các điểm được xử lý, trong khi mô hình chuyển đổi cung cấp sự bất biến đối với các thay đổi hướng.
Các mô hình chuyển đổi và MLP dùng chung được tham số hóa bởi số lượng kênh đầu vào và kích thước kênh ẩn. Các giá trị được chọn trong ví dụ này được chọn bằng cách điều chỉnh các siêu tham số này trên tập dữ liệu Đối tượng Đô thị Sydney. Lưu ý rằng nếu muốn áp dụng PointNet cho một tập dữ liệu khác, phải thực hiện điều chỉnh siêu tham số bổ sung.
Đặt kích thước kênh đầu vào của mô hình biến đổi đầu vào thành ba và kích thước kênh ẩn thành 64, 128 và 256 và sử dụng hàm trợ giúp khởi tạoTransform, được liệt kê ở cuối ví dụ này, để khởi tạo các tham số mô hình.
inputChannelSize = 3;
hiddenChannelSize1 = [64,128]; hiddenChannelSize2 = 256;
[parameters.InputTransform, state.InputTransform] =
initializeTransform(inputChannelSize,hiddenChannelSize1,hiddenChannelSize2);
Đặt kích thước kênh đầu vào mô hình MLP được chia sẻ đầu tiên thành ba và kích thước kênh ẩn thành 64 và sử dụng hàm trợ giúp khởi tạoSharedMLP, được liệt kê ở cuối ví dụ này, để khởi tạo các tham số mô hình.
inputChannelSize = 3;
hiddenChannelSize = [64 64];
[parameters.SharedMLP1,state.SharedMLP1] =
initializeSharedMLP(inputChannelSize,hiddenChannelSize);
Đặt kích thước kênh đầu vào của mô hình chuyển đổi tính năng thành 64 và kích thước kênh ẩn thành 64, 128 và 256 và sử dụng hàm trợ giúp khởi tạoTransform, được liệt kê ở cuối ví dụ này, để khởi tạo các tham số mô hình.
inputChannelSize = 64;
hiddenChannelSize1 = [64,128]; hiddenChannelSize2 = 256;
[parameters.FeatureTransform, state.FeatureTransform] =
Đặt kích thước kênh đầu vào mô hình MLP được chia sẻ thứ hai thành 64 và kích thước kênh ẩn thành 64 và sử dụng hàm initializeSharedMLP, được liệt kê ở cuối ví dụ này, để khởi tạo các tham số mô hình.
inputChannelSize = 64; hiddenChannelSize = 64;
[parameters.SharedMLP2,state.SharedMLP2] =
initializeSharedMLP(inputChannelSize,hiddenChannelSize);
Mô hình phân loại PointNet bao gồm MLP được chia sẻ, hoạt động được kết nối đầy đủ và kích hoạt softmax. Đặt kích thước đầu vào của mô hình phân loại thành 64 và kích thước kênh ẩn thành 512 và 256 và sử dụng chức năng trợ giúp initalizeClassifier, được liệt kê ở cuối ví dụ này, để khởi tạo các tham số mô hình.
C. Huấn luyện PointNet
Huấn luyện mô hình bằng cách sử dụng vòng lặp đào tạo tùy chỉnh. Xáo trộn dữ liệu khi bắt đầu huấn luyện. Đối với mỗi lần lặp:
- Đọc một loạt dữ liệu.
- Đánh giá độ dốc của mô hình. - Áp dụng quy định trọng lượng L2.
- Sử dụng adamupdate để cập nhật các thông số mô hình. - Cập nhật biểu đồ tiến độ huấn luyện.
Vào cuối mỗi vòng lặp, hãy đánh giá mô hình dựa trên tập dữ liệu xác thực và thu thập các chỉ số về sự nhầm lẫn để đo lường độ chính xác của phân loại khi quá trình đào tạo diễn ra. Sau khi hoàn thành các kỷ nguyên learningRateDropPeriod, hãy giảm tốc độ học tập bằng một hệ số của learningRateDropFactor. Khởi tạo đường trung bình động của các gradient tham số và các ô vuông thông minh phần tử của các gradient được sử dụng bởi trình tối ưu hóa Adam.
Tính toán độ chính xác đào tạo trung bình và xác nhận.
Do số lượng mẫu huấn luyện có hạn trong tập dữ liệu Đối tượng Đô thị Sydney, việc tăng độ chính xác xác thực lên hơn 60% là một thách thức. Mô hình dễ dàng bổ sung dữ liệu đào tạo trong trường hợp không có phần bổ sung được xác định trong chức năng trợ giúp augmentPointCloudData. Để cải thiện tính mạnh mẽ của bộ phân loại PointNet, cần phải huấn luyện thêm.
D. Phân loại đám mây điểm sử dụng PointNet
Tải dữ liệu đám mây điểm bằng pcread, xử lý trước đám mây điểm bằng cách sử dụng cùng một chức năng được sử dụng trong quá trình đào tạo và chuyển đổi kết quả thành một dlarray.
ptCloud = pcread("car.pcd"); X = preprocessPointCloud(ptCloud); dlX = dlarray(X{1},"SCSB");
Dự đoán các nhãn đám mây điểm với chức năng mô hình pointnetClassifier.
YPred = pointnetClassifier(dlX,parameters,state,false); [~,classIdx] = max(YPred,[],1);
Theo thực nghiệm, PointNet có thể xử lý nhiều hơn một triệu điểm mỗi giây để phân loại đám mây điểm (khoảng 1K đối tượng / giây) hoặc phân đoạn ngữ nghĩa (khoảng 2 đối tượng / giây) với GPU 1080X trên TensorFlow, cho thấy tiềm năng lớn cho các ứng dụng thời gian thực.
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG THỬ NGHIỆM 3.1 Giới thiệu bài toán thử nghiệm 3.1 Giới thiệu bài toán thử nghiệm
Dữ liệu điểm có giá trị tọa độ ba chiều (x, y, z) được tạo bởi công nghệ LiDAR thường có mật độ dày đặc và chứa những thông tin cực kỳ hữu ích về bề mặt địa hình của khu vực đo vẽ. Nhưng để xác định được nhãn lớp mà mỗi điểm thuộc về lại khá khó khăn khi một đối tượng có nhiều điểm trả về. Để làm được công việc này, cần phải tiến hành bài toán phân loại đám mây điểm để có thể sử dụng những điểm có giá trị trong đám mây điểm LiDAR.
Bài toán phân loại đám mây điểm LiDAR thuộc vào bài toán lọc và phân tách đưa các điểm về các lớp riêng biệt. Việc phân loại dữ liệu tự động của đám mây điểm phải tách được đám mây dữ liệu thành các lớp khác nhau theo các tính chất riêng như: Lớp chứa điểm mặt đất, Lớp chứa điểm thực phủ, Lớp chứa điểm trên mái nhà tường nhà và các công trình xây dựng, Lớp chứa các điểm trên không, Lớp chứa các điểm bị lỗi, Lớp chứa các điểm trên mặt nước …. Từ đó phân loại thành lớp Ground và NonGround.
Bài toán thực nghiệm của luận văn tập trung vào ứng dụng hai thuật toán PointNet và K-means trong phân loại đám mây điểm LiDAR, từ đó đánh giá độ chính xác của hai thuật toán trên bộ dữ liệu thử nghiệm.
3.2 Lựa chọn thuật toán phân loại và dữ liệu thử nghiệm
Trong bài toán phân loại, lựa chọn thuật toán là quan trọng và quyết định đến độ chính xác của bài toán phân loại. Hai thuật toán được lựa chọn trong luận văn là K-means và PointNet.
Bộ dữ liệu thử nghiệm được thu nhận tại khu vực tỉnh Quảng Ninh. Công nghệ LiDAR sử dụng là ALS (Aerial Scanning Laser). Dữ liệu sau khi thu nhận được lưu dưới dạng file .las với chuẩn 1.2. Đám mây điểm có 934.843 điểm, Xmin: 289267.833391, Xmax: 290127.315851, Ymin: 4117197.654465, Ymax: 4117559.134703, mật độ điểm: 7.17pt/m2, . Các tham số của dữ liệu được thể hiện trong bảng 2.
Đám mây điểm LiDAR được thể hiện trong hình vẽ 3.1 và ảnh vệ tinh khu vực khảo sát được thể hiện trong hình 21.
Hình 26: Đám mây điểm khu vực khảo sát
Hình 27: Ảnh vệ tinh khu vực đo vẽ
3.3 Môi trường và các công cụ để xây dựng chương trình
Chương trình được xây dựng trên ngôn ngữ C# của bộ Visual Studio 2015 và được tích hợp với công cụ LASTools.
C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, là phần khởi đầu cho kế hoạch .NET của họ. Tên của ngôn ngữ bao gồm ký tự thăng theo Microsoft nhưng theo ECMA là C#, chỉ bao gồm dấu số thường. Microsoft phát triển C# dựa trên C++ và Java. C# được miêu tả là ngôn
LASTools là một tập hợp các công cụ dòng lệnh để phân loại, xếp, chuyển đổi, lọc, raster, tam giác, đường viền, clip và đa giác dữ liệu LiDAR (để chỉ một vài chức năng). Tất cả các công cụ cũng có thể được chạy qua GUI và có sẵn dưới dạng hộp công cụ xử lý LiDAR cho các phiên bản ArcGIS 9.3, 10.0 và 10.1 của ESRI.
Quản lý dự án đầy đủ bao gồm các công cụ: - Mã hóa dữ liệu địa lý và chuyển đổi - Theo dõi liên kết
- Lọc và phân loại nâng cao - Tạo DSM / DTM
- Phát hiện đột phá và tính năng
- Nhiều định dạng đầu vào và đầu ra (bao gồm cả định dạng LAS) - Thế hệ chỉnh hình thực sự
- Tích hợp đầy đủ dữ liệu Dạng sóng của Lidar
- Và trình xem và trình chỉnh sửa rất linh hoạt để hiển thị và thao tác dữ liệu hình ảnh và dữ liệu hình ảnh.
LasTools cung cấp các công cụ cần thiết để tạo DSM và DTM từ dữ liệu khai thác thô hoặc cơ bản được xử lý trước một cách độc lập ứng dụng. Nó có tính năng quản lý thông minh dữ liệu dự án, nhập và mã hóa địa lý dữ liệu hình ảnh và dữ liệu thô, hiệu chuẩn hệ thống, lọc và phân loại dữ liệu LiDAR, tạo mô hình độ cao và xuất kết quả theo các định dạng phổ biến khác nhau. Sự nhấn mạnh đặc biệt được đặt vào giao diện người dùng đồ họa trực quan và quy trình làm việc hợp lý để cho phép tạo mô hình nhanh chóng và hiệu quả. Ngoài ra, LasTools cung cấp các tính năng để xử lý và xử lý dữ liệu khai thác tiên tiến như dạng sóng tín hiệu trở lại và màu sắc bề mặt thật, cũng như sự tích hợp nhanh chóng của dữ liệu LiDAR và ảnh kỹ thuật số vào ảnh ortho.
LASTool có các công cụ sau: - API để đọc/ghi file LAS
- lasview
- las2txt và txt2las - laszip
- las2las
Hình 29: Công cụ của lastool trong ARCGIS
3.4 Kết quả thử nghiệm 3.4.1 Phân loại với K-means 3.4.1 Phân loại với K-means
Đám mây được đưa và phân cụm với K-means, số cụm được lựa chọn là 2 (K=2), số lần lặp tối đa được lựa chọn là 10. Thuộc tính được đưa vào sử dụng phân cụm là thuộc tính độ cao Z của điểm.
Tâm cụm khởi tạo và sự thay đổi tâm cụm trong các lần lặp được thể hiện trong hình 30, 31.
Hình 31: Sự thay đổi của tâm cụm qua các lần lặp
Thuật toán có điểm hội tụ là 0, với 8 lần lặp. Tâm cụm lần lặp cuối được thể hiện trong hình 32, sự phân bố của số điểm trong mỗi cụm được thể hiện trong hình 33, với số điểm lỗi là 0.
Hình 32: Tâm cụm sau lần lặp thứ 8
Hình 33: Số điểm của mỗi cụm
Kết quả phân cụm được sử dụng thành lập mô hình DEM/DSM với độ phân giải là 1m. Mô hình DEM được thể hiện trong hình 34, DSM được thể hiện trong hình 35.
Hình 34: Mô hình DEM với độ phân giải là 1m
Hình 35: Mô hình DSM với độ phân giải là 1m
3.4.2 Phân loại với PointNet
Với đám mây điểm được sử dụng phân loại với PointNet, thực hiện trích chọn đặc trưng với 2 lớp điểm: Ground và Non-ground. Lựa chọn số điểm huấn luyện và kiểm tra theo nguyên tắc: 2/3 train và 1/3 test.
Dữ liệu xác thực cũng được yêu cầu. Nó được sử dụng để cung cấp đánh giá khách quan về một mô hình trong quá trình đào tạo và hữu ích để xác định và ngăn chặn việc trang bị quá mức, trong đó mô hình chỉ hoạt động tốt trên dữ liệu đào tạo chứ không có gì khác. Dữ liệu xác thực phải tương tự như dữ liệu đào tạo ở chỗ nó bao gồm các lĩnh vực đại diện được quan tâm và sử dụng cùng một sơ đồ phân loại nhưng đến từ các địa điểm khác nhau. Có thể sử dụng cùng một dữ liệu dự án được sử dụng để đào tạo, chỉ là các tập hợp con khác nhau. Nói chung, cần nhiều dữ liệu đào tạo hơn dữ liệu xác thực. Không có quy tắc cố định nào, nhưng không có gì lạ khi sử dụng dữ liệu đào tạo nhiều hơn nhiều lần so với dữ liệu xác thực.
Dữ liệu xác thực và huấn luyện kích thước khối được chia thành các khối nhỏ có thể quản lý được. Các khối điểm này sau đó được đặt thành một định dạng có thể truy cập vào thư viện học sâu. Kích thước các khối một cách hợp lý. Mục tiêu của chúng là chứa một số điểm hợp lý so với bộ nhớ GPU khả dụng. Huấn luyện sẽ tải các điểm và cấu trúc dữ liệu thứ cấp cho bao nhiêu khối tại một thời điểm được đặt bởi một tham số huấn luyện được gọi là kích thước lô. Ở đây có sự tác động lẫn nhau của một số biến số cần chú ý. Các lô kiểm soát số lượng khối được xử lý tại một thời điểm. Khối là tập hợp các điểm và thuộc tính của chúng. Số lượng điểm trong một khối được xác định bởi kích thước của khối và mật độ điểm tại vị trí của khối. Các khối sẽ chứa một số điểm tương đối nhất quán nếu mật độ của đám mây điểm là nhất quán. Có thể sử dụng bộ dữ liệu trong đó mật độ điểm thay đổi rất nhiều, nhưng nó có thể sẽ yêu cầu đào tạo nhiều hơn để làm cho nó hoạt động tốt.
block_size = square_root(target_point_count) * 2d_point_spacing
Cài đặt điểm tối thiểu cho mỗi khối trên công cụ huấn luyện được sử dụng để bỏ qua các khối huấn luyện chứa không đủ số điểm. Thông thường, các khối xung quanh chu vi dự án không có nhiều điểm. Ngoài ra, trong khi tạo dữ liệu huấn luyện, giới hạn điểm khối có thể đã đạt đến cho một trong các khối khác. Các khối tiếp theo được thực hiện để giữ các điểm tràn. Trong cả hai trường hợp, các khối có tương đối ít điểm không đặc biệt hữu ích vì vậy tốt hơn là không nên đưa chúng vào quá trình huấn luyện.
Sau quá trình huấn luyện, độ chính xác của mô hình được đánh giá với độ chính xác acc = 0.768.
Các lớp được phân loại với PointNet được thể hiện trong bảng 2:
Điểm Ground Non-Ground Missing
453.982 480.861 0
Bảng 2: Sự phân bố của các điểm sau khi phân loại với PointNet
Bin Frequency Cumulative % Bin Frequency Cumulative % 1 453982 83,21% 1 453982 83,21% 2 480861 100,00% 2 480861 100,00% More 0 100,00% More 0 100,00%
Bảng 3: Sự tương quan của các điểm trong hai lớp điểm Ground và Non-Ground
0.00% 50.00% 100.00% 150.00% 0 200000 400000 600000 1 2 More Fr e q u e n cy Bin Histogram Frequency Cumulative %
Hình 37: Biểu đồ Histogram về sự phân bố của hai lớp điểm
Qua biểu đồ tương quan có thể thấy, sự tương quan của hai lớp ở mức cao, kết quả phân loại đảm bảo độ chính xác trong đánh giá kết quả.
Đám mây điểm sau phân lớp, sử dụng thành lập DEM/DSM được thực hiện trong hình 38, 39.
Hình 38: Mô hình DSM với độ phân giải là 1m
Hình 40: Mô hình 3D đám mây điểm khu vực bay quét
3.4.3 So sánh kết quả phân lớp với K-means và PointNet
Kết quả phân lớp với hai thuật toán được sử dụng các độ đo Precision, Recall và F1 để đánh giá độ chính xác được thể hiện trong bảng 4:
Thuật toán Precision Recall F1
K-means 89,90% 88,90% 89,40%
PointNet 91,29% 91,00% 91,14%
Bảng 4: Bảng kết quả đánh giá trên độ đo
Qua bảng kết quả đánh giá, có thể thấy khi lựa chọn được mô hình phù hợp, thực hiện huấn luyện chính xác giúp cho PointNet có kết quả phân loại chính xác