Klasifikasi Citra Satelit, InterIIT Techmeet 2018, IIT Bombay.
Tim: Manideep Kolla, Aniket Mandle, Apoorva Kumar
Repositori ini berisi implementasi dua algoritma yaitu U-Net: Convolutional Networks for Biomedical Image Segmentation dan Pyramid Scene Parsing Network yang dimodifikasi untuk masalah klasifikasi citra satelit.
main_unet.py
: Kode Python untuk melatih algoritme dengan arsitektur U-Net termasuk pengkodean kebenaran dasar.unet.py
: Berisi implementasi lapisan U-Net kami.test_unet.py
: Kode untuk Pengujian, menghitung akurasi, menghitung matriks konfusi untuk pelatihan dan validasi serta menyimpan prediksi dengan model U-Net pada gambar pelatihan, validasi, dan pengujian.Inter-IIT-CSRE
: Berisi semua data pelatihan, validasi dan pengujian.Comparison_Test.pdf
: Perbandingan data pengujian secara berdampingan dengan prediksi model U-Net pada data tersebut.train_predictions
: Prediksi Model U-Net pada gambar pelatihan dan validasi.plots
: Plot akurasi dan kerugian untuk pelatihan dan validasi arsitektur U-Net.Test_images
, Test_outputs
: Berisi gambar uji dan prediksinya berdasarkan model U-Net.class_masks
, compare_pred_to_gt
, images_for_doc
: Berisi beberapa gambar untuk dokumentasi.PSPNet
: Berisi file pelatihan implementasi algoritma PSPNet pada klasifikasi citra satelit. Kloning repositori, ubah direktori kerja Anda saat ini ke direktori kloning. Buat folder dengan nama train_predictions
dan test_outputs
untuk menyimpan prediksi keluaran model pada gambar pelatihan dan pengujian (Sekarang tidak diperlukan karena repo sudah berisi folder ini)
$ git clone https://github.com/manideep2510/eye-in-the-sky.git
$ cd eye-in-the-sky
$ mkdir train_predictions
$ mkdir test_outputs
Untuk melatih model U-Net dan menghemat bobot, jalankan perintah di bawah ini
$ python3 main_unet.py
Untuk menguji model U-Net, menghitung akurasi, menghitung matriks konfusi untuk pelatihan dan validasi serta menyimpan prediksi oleh model pada gambar pelatihan, validasi dan pengujian.
$ python3 test_unet.py
Anda mungkin mendapatkan kesalahan xrange is not defined
saat menjalankan kode kami. Kesalahan ini bukan karena kesalahan dalam kode kami tetapi karena paket python bernama libtiff
yang tidak mutakhir (beberapa bagian dari kode sumber paket ada di python2 dan ada pula yang di python3) yang kami gunakan untuk membaca dataset yang mana gambarnya dalam format .tif. Kami tidak dapat menggunakan perpustakaan lain seperti openCV atau PIL untuk membaca gambar karena perpustakaan tersebut tidak mendukung dengan baik untuk membaca gambar .tif 4 saluran.
Kesalahan ini dapat diatasi dengan mengedit kode sumber perpustakaan libtiff
.
Buka file di kode sumber perpustakaan tempat kesalahan muncul (nama file akan ditampilkan di terminal ketika kesalahan ditampilkan) dan ganti semua fungsi xrange()
(python2) di file menjadi range()
(piton3).
Kami menyediakan beberapa beban terlatih yang cukup bagus di sini sehingga pengguna tidak perlu berlatih dari awal.
Keterangan | Tugas | Kumpulan data | Model |
---|---|---|---|
Arsitektur UNet | Klasifikasi Citra Satelit | Dataset IITB (Rujuk folder Inter-IIT-CSRE ) | unduh (.h5) |
Untuk menggunakan bobot yang telah dilatih sebelumnya, ubah nama file .h5 (file bobot) yang disebutkan di test_unet.py
agar sesuai dengan nama file bobot yang telah Anda unduh jika diperlukan.
Sekarang mari kita berdiskusi
1. Tentang apa proyek ini,
2. Arsitektur yang telah kami gunakan dan uji coba dan
3. Beberapa strategi pelatihan baru yang kami gunakan dalam proyek ini
Penginderaan jauh adalah ilmu yang memperoleh informasi tentang objek atau area dari jarak jauh, biasanya dari pesawat terbang atau satelit.
Kami menyadari masalah klasifikasi citra satelit sebagai masalah segmentasi semantik dan membangun algoritma segmentasi semantik dalam pembelajaran mendalam untuk mengatasi hal ini.
U-Net: Jaringan Konvolusional untuk Segmentasi Gambar Biomedis
Jaringan Parsing Adegan Piramida - PSPNet
Kebenaran dasar yang diberikan adalah gambar RGB 3 saluran. Pada dataset saat ini, hanya terdapat 9 nilai RGB unik pada ground truth karena terdapat 9 kelas yang akan diklasifikasikan. 9 nilai RGB yang berbeda ini dikodekan secara one-hot untuk menghasilkan kebenaran dasar yang dikodekan 9 saluran dengan masing-masing saluran mewakili kelas tertentu.
Di bawah ini adalah skema pengkodean
Realisasi setiap saluran dalam kebenaran dasar yang dikodekan sebagai sebuah kelas
Jadi, alih-alih melatih nilai-nilai RGB dari kebenaran dasar, kami telah mengubahnya menjadi nilai-nilai one-hot dari kelas yang berbeda. Pendekatan ini menghasilkan akurasi validasi sebesar 85% dan akurasi pelatihan sebesar 92% dibandingkan dengan akurasi validasi 71% dan akurasi pelatihan 65% saat kami menggunakan nilai kebenaran dasar RGB untuk pelatihan.
Hal ini mungkin disebabkan oleh penurunan varians dan rata-rata kebenaran dasar data pelatihan karena ini berfungsi sebagai teknik normalisasi yang efektif. Performa yang lebih baik dari teknik pelatihan ini juga karena model memberikan keluaran dengan 9 peta fitur yang setiap petanya menunjukkan suatu kelas, yaitu teknik pelatihan ini bertindak seolah-olah model dilatih pada masing-masing dari 9 kelas secara terpisah sampai batas tertentu ( tapi disini yang pasti prediksi pada suatu channel yang sesuai dengan kelas tertentu bergantung pada yang lain) .
Hasil kami di PSPNet untuk klasifikasi citra satelit:
Akurasi Pelatihan - 49% Akurasi Validasi - 60%
Alasan:
U-Net:
U-Net yang Dimodifikasi:
Untuk pelatihan dan validasi kami telah menggunakan 14 gambar '.tif' di folder Inter-IIT-CSRE/The-Eye-in-the-Sky-dataset
.
Untuk pelatihan kami telah menggunakan 13 gambar pertama dalam dataset dan untuk validasi, gambar ke-14 digunakan .
Setiap citra satelit pada folder sat
berisi 4 saluran yaitu R (Band 1),G (Band 2),B (Band 3) dan NIR (Band 4).
Gambar kebenaran dasar di direktori gt
adalah gambar RGB dan menggambarkan 8 kelas - Jalan, Bangunan, Pohon, Rumput, Tanah Telanjang, Air, Kereta Api, dan Kolam Renang
Alasan kami hanya mempertimbangkan satu gambar (gambar ke-14) sebagai kumpulan validasi adalah karena gambar tersebut merupakan salah satu gambar terkecil dalam kumpulan data dan kami tidak ingin menyisakan lebih sedikit data untuk pelatihan karena kumpulan datanya cukup kecil. Set validasi (gambar ke-14) yang kami pertimbangkan tidak memiliki 3 kelas (Bare soil, Rail, Swimmimg poll) di dalamnya yang memiliki akurasi pelatihan cukup tinggi. Akurasi validasi akan lebih baik jika kita mempertimbangkan gambar dengan semua kelas di dalamnya (Tidak ada gambar dalam kumpulan data yang berisi semua kelas, setidaknya ada satu kelas yang hilang di semua gambar).
Pemangkasan Melangkah:
Untuk mendapatkan data pelatihan yang memadai dari gambar definisi tinggi yang diberikan, pemangkasan diperlukan untuk melatih pengklasifikasi yang memiliki sekitar 31 juta parameter implementasi U-Net kami. Ukuran pemotongan 64x64 kami temukan kurang terwakilinya masing-masing kelas dan geometri serta kontinuitas objek hilang, sehingga mengurangi bidang pandang konvolusi.
Menggunakan jendela cropping 128x128 piksel dengan langkah 32 menghasilkan 15887 gambar latih 414 validasi.
Dimensi Gambar:
Sebelum pemangkasan, dimensi gambar pelatihan diubah menjadi kelipatan langkah untuk kenyamanan selama pemotongan langkah.
Untuk kasus di mana no. tanaman bukan kelipatan dimensi gambar, awalnya kami mencoba zero padding, kami menyadari bahwa menambahkan padding akan menambahkan artefak yang tidak diinginkan dalam bentuk piksel hitam pada gambar pelatihan dan pengujian yang mengarah ke pelatihan pada data palsu dan batas gambar.
Alternatifnya, kami telah mengubah dimensi gambar dengan benar dengan menambahkan piksel ekstra di sisi paling kanan dan bawah gambar. Jadi kami menambah perbedaan dari bagian paling kiri gambar ke ujung defisit kanannya dan demikian pula untuk bagian atas dan bawah gambar.
Contoh Pelatihan 1: Gambar '2.tif' dari data pelatihan
Contoh Pelatihan 2: Gambar '4.tif' dari data pelatihan
Contoh Validasi: Gambar '14.tif' dari dataset
Model kami mampu memprediksi beberapa kelas yang tidak dapat dilakukan oleh anotator manusia. Kelas yang tidak dapat diidentifikasi dalam gambar diberi label sebagai piksel putih oleh anotator manusia. Model kami mampu memprediksi beberapa piksel putih ini dengan benar sebagai kelas tertentu, namun hal ini menyebabkan penurunan keakuratan keseluruhan karena piksel putih dianggap sebagai kelas terpisah oleh model.
Disini model mampu memprediksi piksel putih sebagai sebuah bangunan dengan benar dan terlihat jelas pada gambar masukan
Lihat Comparison_Test.pdf
untuk perbandingan antara gambar uji dan prediksi keluarannya berdasarkan model
Koefisien Kappa Dengan dan Tanpa mempertimbangkan piksel yang tidak diklasifikasikan
Akurasi Keseluruhan Dengan dan Tanpa mempertimbangkan piksel yang tidak diklasifikasikan
Perlu menambahkan metode regularisasi seperti regularizarion L2 dan dropout serta memeriksa kinerjanya
Menerapkan algoritme untuk secara otomatis mendeteksi semua nilai RGB unik dalam kebenaran dasar dan mengkodekannya secara onehot alih-alih mencari nilai RGB secara manual.
[1] U-Net: Jaringan Konvolusional untuk Segmentasi Gambar Biomedis, Olaf Ronneberger, Philipp Fischer, dan Thomas Brox
[2] Jaringan Penguraian Adegan Piramida, Hengshuang Zhao, Jianping Shi, Xiaojuan Qi, Xiaogang Wang, Jiaya Jia
[3] Panduan Segmentasi Semantik 2017 dengan Pembelajaran Mendalam, Sasank Chilamkurthy