7. Bố cục của luận văn
2.4. Kết luận chương 2
Trong Chương 2, luận văn trình bày kết quả tìm hiểu cách xây dựng một độ đo khoảng cách mới trong bảng quyết định không đây đủ. Dựa vào độ đo khoảng cách được xây dựng, tìm hiểu cách thuật tốn IDS_FW_DAR [19] tìm tập rút gọn của bảng quyết định không đầy đủ theo tiếp cận filter truyền thống, trên cơ sở đó tìm hiểu thuật toán theo tiếp cận kết hợp filter-wrapper IDS_FW_DAR nhằm nhằm giảm thiểu số thuộc tính của tập rút gọn và nâng cao độ chính xác của mơ hình phân lớp. Kết quả thử nghiệm trên các bộ số liệu mẫu từ kho dữ liệu UCI [36] cho thấy, thuật toán filter- wrapper IDS_FW_DAR đề xuất giảm thiểu đáng kể số lượng thuộc tính tập rút gọn so với các thuật toán filter IDS_F_DAR và NEW-R [31]. Hơn nữa, thuật tốn IDS_FW_DAR duy trì và nâng cao độ chính xác phân lớp so với các thuật toán filter IDS_F_DAR và NEW-R. Tuy nhiên, thuật toán IDS_FW_DAR mất thêm chi phí thời gian tính tốn các bộ phân lớp. Với các bài tốn có số lượng thuộc tính lớn (high dimention data), ví dụ trong linh vực tin sinh học, việc giảm thiểu số lượng thuộc tính có ý nghĩa quan trọng vì giảm thiểu độ phức tạp của mơ hình, do đó lựa chọn các thuật toán filter-wrapper IDS_FW_DAR là phù hợp. Tuy nhiên, với các bảng có số thuộc tính nhỏ và có dữ liệu lớn, việc chọn các thuật tốn filter phù hợp hơn vì thời gian thực hiện nhỏ hơn.
CHƯƠNG 3: THỬ NGHIỆM RÚT GỌN THUỘC TÍNH VỚI BÀI TỐN PHÂN LỚP ĐỐI TƯỢNG TRONG ẢNH VIỄN THÁM
3.1. Bài toán
Phân lớp, nhận dạng đối tượng tàu thuyền trên ảnh viễn thám độ phân giải cao như VNREDSat-1 có tiềm năng ứng dụng rất lớn trong an ninh quốc phòng, cứu hộ cứu nạn cũng như các lĩnh vực quản lý dân sự khác. Với đặc trưng các đối tượng tàu thuyền có kích thước rất nhỏ so với không gian trong ảnh viễn thám nên việc phân lớp các ảnh viễn thám có tàu thuyền hay khơng tương đối khó khăn và mất nhiều thời gian nếu thực hiện bằng phương pháp giải đốn mắt thường truyền thống. Vì vậy, việc xây dựng chương trình phân phân lớp ảnh viễn thám sử dụng các phương pháp rút gọn thuộc tính đề xuất là cách tiếp cận hiệu quả và là vấn đề cấp thiết đặt ra về ứng dụng.
Mơ tả bài tốn:
- Đầu vào: Ảnh viễn thám từ vệ tinh VNREDSat-1 hoặc các ảnh viễn thám của vệ tinh Landsat 8, Sentinel 2A.
- Đầu ra: Phân lớp ảnh viễn thám vào 2 lớp: Có tàu thuyền (nhãn 1) hoặc Khơng có tàu thuyền (nhãn 0)
3.2. Xây dựng mơ hình giải quyết bài tốn
Mơ hình giải quyết bài tốn phân lớp ảnh viễn thám được thực hiện qua 02 giai đoạn.
1) Giai đoạn 1: Xây dựng, kiểm tra mơ hình phân lớp, được mơ tả ở Hình 3.1
Quá trình xây dựng mơ hình phân lớp được thực hiện qua các bước sau:
• Ảnh viễn thám đầu vào được tiền xử lý (tách kênh, khử nhiễu) trước khi đưa vào xây dựng bộ dữ liệu huấn luyện. Ví dụ: với mục tiêu là phân lớp ảnh dựa vào tàu thuyền nên lựa chọn 1 kênh ảnh nhạy cảm với mặt nước.
• Sử dụng phương pháp cửa sổ trượt để phân chia ảnh đầu vào thành các cửa sổ với kích thước giống nhau. Kích thước cửa sổ được chọn là kích thước lớn nhất chứa tàu thuyền. Cửa sổ sẽ trượt từ trên, sang ngang, xuống dưới với đơn vị trượt là điểm ảnh. Hình 3.2 là một ví dụ minh họa về một cửa sổ chứa tàu thuyền. Như vậy, từ một ảnh viễn thám đầu vào sẽ thu được rất nhiều cửa sổ, mỗi cửa sổ có chứa tàu thuyền hoặc khơng.
• Gán nhãn thủ công cho các cửa số: Có tàu thuyền (1) hoặc Khơng có tàu thuyền (0).
• Rút trích thuộc tính theo điểm ảnh đối với mỗi cửa sổ. Ví dụ: cửa sổ có kích thước 64x64 điểm ảnh thì số thuộc tính là 64 x 64 = 4096 thuộc tính. Giá trị mỗi thuộc tính là mức xám của điểm ảnh (ví dụ có giá trị từ 0 đến 255). Như vậy, mỗi cửa sổ sẽ là một đối tượng trong tập dữ liệu huấn luyện, được gán nhãn là 1 hoặc 0.
• Thực hiện thuật tốn rút gọn thuộc tính đề xuất để rút gọn tập thuộc tính (đặc trưng) của cửa sổ.
• Sử dụng một bộ phân lớp (SVM, KNN, cây quyết định, mạng nơron ...) để xây dựng mơ hình phân lớp trên tập thuộc tính rút gọn.
• Kiểm tra độ chính xác của bộ phân lớp trên tập dữ liệu kiểm tra (đã gán nhãn) Kết quả giai đoạn này là bộ phân lớp cho các cửa sổ với tập thuộc tính rút gọn. Bộ phân lớp này được sử dụng để gán nhãn cho các ảnh viễn thám ở giai đoạn sau.
2) Giai đoạn 2: Thực thi mơ hình phân lớp, được mơ tả ở Hình 3.3.
Quá trình thực thi bộ phân lớp để gán nhãn cho ảnh viễn thám đầu vào được thực hiện qua các bước sau:
• Ảnh viễn thám đầu vào được tiền xử lý (tách kênh, khử nhiễu) trước khi đưa vào gán nhãn (tương tự giai đoan 1).
• Sử dụng phương pháp cửa sổ trượt để phân chia ảnh đầu vào thành các cửa sổ với kích thước giống nhau (tương tự giai đoan 1).
• Rút trích các thuộc tính và chọn tập thuộc tính rút gọn (dựa vào kết quả bước rút gọn thuộc tính ở Giai đoạn 1).
• Sử dụng bộ phân lớp để gán nhãn cho các cửa sổ trượt.
• Ảnh viễn thám đầu vào được gán nhãn là 1 (có tàu thuyền) nếu có một cửa sổ thuộc ảnh đó có nhãn là 1. Ngược lại, ảnh viễn thám đầu vào được gán nhãn là 0 (khơng có tàu thuyền) nếu tất cả các cửa sổ thuộc ảnh đó có nhãn là 0.
Hình 3.3. Thực thi mơ hình phân lớp gán nhãn cho ảnh viễn thám
3.3. Môi trường chạy thử nghiệm
Mã lệnh cài đặt môi trường như sau:
conda create --name UI python==3.6.9 conda activate UI
pip install opencv-contrib-python==4.1.1.26 opencv- python==4.1.1.26 pip install Pillow
pip install -U scipy matplotlib
pip install scikit-
learn==0.19.0 pip install pandas
pip install seaborn
3.4. Thực hiện chương trình
Sau khi khởi chạy chương trình, màn hình giao diện chính hiện lên như sau:
Hình 3.4. Giao diện màn hình chính
Trên thanh cơng cụ của màn hình gồm 5 menu chính:
- Hệ thống
- Tiền xử lý dữ liệu
- Huấn luyện mơ hình
- Thực thi mơ hình
- Trợ giúp
3.4.1 Tiền xử lý dữ liệu
Nhiệm vụ chính của tác vụ này là xử lý các dữ liệu ảnh đầu vào để tạo ra các loại dữ liệu mới phù hợp cho các quá trình xử lý ở các phần tiếp theo. Trong Tiền xử
lý dữ liệu có 3 mục chính:
• Nạp dữ liệu
• Gán nhãn dữ liệu
• Hiển thị thuộc tính
Phần 1: Nạp dữ liệu
Chọn Tiền xử lý dữ liệu > Nạp dữ liệu. Giao diện ban đầu của phần nạp dữ liệu:
Hình 3.5. Giao diện của tác vụ Nạp dữ liệu
Các thành phần chính:
- Kích thước cửa sổ: Kích thước cạnh ơ vng của mỗi hình ảnh sau khi thực
hiện tách nhỏ từ hình ảnh gốc. (Đơn vị: pixel)
- Chọn thư mục: Thư mục chứa hình ảnh cần phân tách.
- Trạng thái: Đưa ra trạng thái của chương trình khi thực hiện một nhiệm vụ
nào đó.
- Hiển thị lưới: Khi nhấn vào nút này, màn hình sẽ hiện ra các ơ lưới với kích
thước bằng với kích thước mà người dùng nhập tại mục Kích thước cửa sổ.
- Phân tách hình ảnh: Khi nhấn vào nút này, chương trình sẽ thực hiện tách
hình ảnh ban đầu thành các hình ảnh nhỏ hơn với kích thước cạnh ơ vng bằng với kích thước mà người dùng nhập tại mục Kích thước cửa sổ.
- Số thứ tự: Hiển thị số thứ tự của hình ảnh đang hiện trên màn hình so với các
hình ảnh khác trong thư mục hình ảnh mà người dùng chọn tại mục Chọn thư mục.
- Ảnh trước: Khi nhấn vào nút này, màn hình sẽ hiển thị lên hình ảnh có số thứ
tự nhỏ hơn một đơn vị so với số thứ tự của hình ảnh đang hiện trên màn hình hiện tại.
- Ảnh sau: Khi nhấn vào nút này, màn hình sẽ hiển thị lên hình ảnh có số thứ tự
lớn hơn một đơn vị so với số thứ tự của hình ảnh đang hiện trên màn hình hiện tại.
- Trở về màn hình chính: Khi nhấn vào nút này, màn hình tiền xử lý dữ liệu sẽ
đóng lại và màn hình chính sẽ hiện ra.
Trên màn hình hiện ra, người dùng nhập các thơng tin cần thiết:
- Nhập kích thước cửa sổ mong muốn tại ơ Kích thước cửa sổ
- Nhập đường dẫn chứa hình ảnh bằng cách nhấn vào nút và chọn đường dẫn mong muốn.
Sau khi hoàn thành 2 bước trên, người dùng ấn nút Hiển thị lưới, màn hình sẽ hiển thị như sau:
Người dùng có thể xem các hình ảnh phía trước hoặc phía sau dưới dạng lưới bằng cách nhấn nút Ảnh trước, Ảnh sau.
Sau khi đã chọn được độ dài cạnh ô vuông hợp lý, người dùng ấn vào nút Phân tách hình ảnh, lúc này một thư mục mới được sinh ra chứa tồn bộ hình ảnh sau khi
đã phân tách. Tên thư mục được đặt theo cấu trúc <tên thư mục ảnh được
chọn>_<kích thước cửa sổ>. Ví dụ, người dùng chọn thư mục có tên “train”, hình
ảnh sau khi phân tách sẽ được lưu tại thư mục “train_80” Phần 2: Gán nhãn dữ liệu
Chọn Tiền xử lý dữ liệu > Gán nhãn dữ liệu Giao diện ban đầu của tác vụ gán nhãn dữ liệu:
Hình 3.7. Giao diện của tác vụ Gán nhãn dữ liệu
Các thành phần chính:
- Chọn thư mục: Người dùng lựa chọn thư mục hình ảnh được phân tách thực
hiện từ bước Nạp dữ liệu.
- Nhãn: Nhãn dữ liệu hình ảnh, người dùng nhập 1 nếu hình ảnh chứa tàu -
thuyền, người dùng nhập 0 nếu hình ảnh khơng có tàu - thuyền.
- ID: Số thứ tự của hình ảnh đang hiển thị trên màn hình so với các hình ảnh
khác trong thư mục mà người dùng chọn tại mục Chọn thư mục.
- Lưu: Lưu nhãn mà người dùng vừa nhập tại mục Nhãn vào tệp txt.
- Cửa sổ trước: Màn hình sẽ hiển thị hình ảnh có ID nhỏ hơn một đơn vị so
với hình ảnh đang hiển thị trên màn hình hiện tại.
- Cửa sổ sau: Màn hình sẽ hiển thị hình ảnh có ID lớn hơn một đơn vị so với
hình ảnh đang hiển thị trên màn hình hiện tại.
- Tìm kiếm: Chức năng tìm kiếm hình ảnh theo ID, người dùng nhập giá trị ID
và nhấn nút Tìm kiếm, màn hình sẽ hiển thị hình ảnh và thơng tin nhãn của hình ảnh tương ứng với ID mà người dùng vừa nhập.
- Trở về màn hình chính: Khi nhấn vào nút này, màn hình tiền xử lý dữ liệu sẽ
đóng lại và màn hình chính sẽ hiện ra.
Trên màn hình hiện ra, thực hiện chọn thư mục chứa hình ảnh đã được phân tách
ở Phần 1. Nhập đường dẫn chứa hình ảnh bằng cách nhấn vào nút và chọn đường dẫn mong muốn. Màn hình sẽ hiển thị như sau:
Hình 3.8. Gán nhãn cho từng ơ lưới
Hình ảnh gốc ban đầu sẽ được hiển thị dưới dạng lưới (các đường kẻ màu
trắng), ơ vng màu đỏ thể hiện việc hình ảnh đã được phân tách tương ứng với vị trí
ơ vng đỏ cần được người dùng gán nhãn.
Người dùng thực hiện nhập dữ liệu vào ơ Nhãn với 1 nếu hình ảnh trong ô vuông màu đỏ chứa tàu - thuyền hoặc 0 nếu trong ô vuông màu đỏ không chứa tàu - thuyền. Sau khi nhập nhãn xong, người dùng cần ấn nút Lưu để lưu lại thông tin vừa
nhập. Thực hiện việc gán nhãn cho các hình ảnh cịn lại bằng cách nhấn vào nút Cửa sổ trước và Cửa sổ sau để chuyển tới ảnh trước đó và ảnh sau đó.
Người dùng có thể tìm kiếm nhanh hình ảnh với ID của hình ảnh. Nhập số ID của hình ảnh cần tìm kiếm, sau đó nhấn nút Tìm kiếm, trên màn hình sẽ hiện ra hình ảnh và thơng tin tương ứng với ID mà người dùng vừa nhập.
Phần 3: Chuyển đổi thành dư liệu thuộc tính Chọn Tiền xử lý dữ liệu > Hiển thị thuộc tính
Giao diện ban đầu của tác vụ Hiển thị thuộc tính.
Hình 3.9. Giao diện của tác vụ Hiển thị thuộc tính
Các thành phần chính:
- Chọn thư mục: Người dùng chọn thư mục chứa hình ảnh và tệp txt chứa
nhãn của hình ảnh tương ứng.
- Hiển thị thuộc tính: Màn hình sẽ hiện ra một bảng dữ liệu chứa thơng tin của
hình ảnh. Bảng dữ liệu gồm n hàng và m cột. Trong đó: n là số lượng hình ảnh có trong thư mục mà người dùng chọn, m là số lượng thuộc tính ứng với mỗi hình ảnh.
- Lưu: Lưu bảng giá trị thuộc tính vừa hiển thị trên màn hình dưới dạng csv.
- Trạng thái: Đưa ra trạng thái của chương trình khi thực hiện một nhiệm vụ
nào đó.
- Trở về màn hình chính: Khi nhấn vào nút này, màn hình tiền xử lý dữ liệu sẽ
đóng lại và màn hình chính (mục 3.2) sẽ hiện ra.
Trên màn hình hiện ra, thực hiện chọn thư mục chứa hình ảnh và nhãn đã được hoàn thành ở phần Gán nhãn dữ liệu. Nhập đường dẫn bằng cách nhấn vào nút
và chọn đường dẫn mong muốn. Sau khi nhập đường dẫn xong, người dùng nhấn nút Hiển thị thuộc tính, trên màn hình sẽ hiển thị như sau:
Hình 3.10. Bảng thuộc tính của dữ liệu hình ảnh
Sau khi trích xuất thuộc tính xong, bảng hiển thị thuộc tính sẽ hiện ra. Người dùng thực hiện lưu giá trị các thuộc tính trong bảng vào tệp csv bằng cách nhấn nút Lưu.
Tên của tệp csv được lưu theo định dạng list_features_<tên thư mục chứa ảnh đã
phân tách>.csv Ví dụ, người dùng chọn thư mục chứa ảnh đã phân tách có tên là
3.4.2 Huấn luyện mơ hình
Nhiệm vụ chính của tác vụ này là sử dụng các dữ liệu vừa được tạo ra từ tác vụ
Tiền xử lý dữ liệu để thực hiện huấn luyện mơ hình. Trong Huấn luyện mơ hình có 3
mục chính:
+ Rút gọn thuộc tính + Huấn luyện mơ hình + Kiểm thử mơ hình
Hình 3.11. Các thành phần trong Huấn luyện mơ hình
Phần 1: Rút gọn thuộc tính
Chọn Huấn luyện mơ hình > Rút gọn thuộc tính Giao diện chính của tác vụ Rút gọn thuộc tính
Hình 3.12. Giao diện của tác vụ Rút gọn thuộc tính
Các thành phần chính:
- Chọn tệp csv: Người dùng chọn tệp csv chứa thơng tin thuộc tính được sinh
ra tại phần Hiển thị thuộc tính.
- Hiển thị thuộc tính: Hiển thị thông tin trong tệp csv mà người dùng chọn
- Rút gọn thuộc tính: Thực hiện thuật tốn rút gọn số lượng thuộc tính so với
ban đầu. Mục đích: giảm khối lượng tính tốn, giảm thời gian xử lý các thuật tốn và đảm bảo vẫn giữ được các giá trị thuộc tính quan trọng.
- Lưu: Lưu các giá trị thuộc tính sau khi đã thực hiện rút gọn thuộc tính dưới
dạng tệp csv và lưu giá trị vị trí quan trọng dưới dạng tệp csv.
- Trạng thái: Đưa ra trạng thái của chương trình khi thực hiện một nhiệm vụ
nào đó.
- Trở về màn hình chính: Khi nhấn vào nút này, màn hình tiền xử lý dữ liệu sẽ
đóng lại và màn hình chính sẽ hiện ra.
Trên màn hình hiện ra, người dùng thực hiện chọn tệp csv chứa các giá trị thuộc tính đã được lưu trong bước Tiền xử lý dữ liệu. Nhập đường dẫn bằng cách nhấn vào
nút và chọn đường dẫn mong muốn. Sau khi nhập đường dẫn xong, trên màn hình hiện lên 2 nút để người dùng chọn:
+ Hiển thị thuộc tính: Hiển thị các giá trị thuộc tính trước khi áp dụng thuật tốn rút gọn thuộc tính.
+ Rút gọn thuộc tính: Hiển thị các giá trị thuộc tính sau khi áp dụng thuật tốn