Klasifikasi tutupan lahan menggunakan eo-learning. Bagian 3

Saat Anda membutuhkan hasil yang lebih baik daripada memuaskan


Bagian 1
Bagian 2



Transisi zona dari musim dingin ke musim panas terdiri dari gambar Sentinel-2. Anda dapat melihat beberapa perbedaan dalam jenis penutup di salju, yang telah dijelaskan dalam artikel sebelumnya.


Kata Pengantar


Beberapa minggu terakhir sangat sulit. Kami menerbitkan bagian pertama dan kedua dari artikel kami tentang klasifikasi tutupan di seluruh negara menggunakan kerangka eo-learn . eo-learn learning adalah pustaka sumber terbuka untuk membuat lapisan antara menerima dan memproses gambar satelit dan pembelajaran mesin. Dalam artikel sebelumnya dalam contoh, kami menunjukkan hanya sebagian kecil dari data dan menunjukkan hasilnya hanya pada persentase kecil dari seluruh area yang diminati (AOI - area of ​​interest). Saya tahu bahwa ini terlihat setidaknya tidak terlalu mengesankan, dan mungkin sangat kasar di pihak kami. Selama ini Anda telah tersiksa oleh pertanyaan tentang bagaimana Anda dapat menggunakan pengetahuan ini dan mentransfernya ke tingkat berikutnya .


Jangan khawatir, ini untuk apa artikel ketiga dalam seri ini! Ambil secangkir kopi dan duduk ...


Semua Data kami Milik Anda!


Apakah kamu sudah duduk? Mungkin tinggalkan kopi di atas meja sebentar, karena sekarang Anda akan mendengar berita terbaik untuk hari ini ...
Kami di Sinergise memutuskan untuk menerbitkan set data lengkap untuk Slovenia untuk 2017. Gratis. Anda dapat dengan bebas mengakses 200GB data dalam bentuk ~ 300 fragmen EOPatch, masing-masing berukuran sekitar 1000x1000, dalam resolusi 10m! Anda dapat membaca lebih lanjut tentang format EOPatch di posting terakhir tentang eo-learn learning, tetapi sebenarnya itu adalah wadah untuk geo-temporal EO (Pengamatan Bumi) dan data non-EO: misalnya, gambar satelit, topeng, peta, dll.



Struktur EOPatch )


Kami tidak meretas ketika kami mengunduh data ini. Setiap EOPatch berisi gambar Sentinel-2 L1C, s2cloudless mask yang sesuai, dan peta tutupan lahan resmi dalam format raster!


Data disimpan di AWS S3 di: http://eo-learn.sentinel-hub.com/


Deserializing objek EOPatch cukup sederhana:


 EOPatch.load('path_to_eopatches/eopatch-0x6/') 

Sebagai hasilnya, Anda mendapatkan objek dari struktur berikut:


 EOPatch( data: { BANDS: numpy.ndarray(shape=(80, 1010, 999, 6), dtype=float32) } mask: { CLM: numpy.ndarray(shape=(80, 1010, 999, 1), dtype=uint8) IS_DATA: numpy.ndarray(shape=(80, 1010, 999, 1), dtype=uint8) IS_VALID: numpy.ndarray(shape=(80, 1010, 999, 1), dtype=bool) } mask_timeless: { LULC: numpy.ndarray(shape=(1010, 999, 1), dtype=uint8) VALID_COUNT: numpy.ndarray(shape=(1010, 999, 1), dtype=int64) } meta_info: { maxcc: 0.8 service_type: 'wcs' size_x: '10m' size_y: '10m' time_difference: datetime.timedelta(-1, 86399) time_interval: (datetime.datetime(2017, 1, 1, 0, 0), datetime.datetime(2017, 12, 31, 0, 0)) } bbox: BBox(((370230.5261411405, 5085303.344972428), (380225.31836121203, 5095400.767924464)), crs=EPSG:32633) timestamp: [datetime.datetime(2017, 1, 1, 10, 4, 7), ..., datetime.datetime(2017, 12, 25, 10, 15, 32)], length=80 ) 

Akses ke berbagai atribut EOPatch adalah sebagai berikut:


 eopatch.timestamp eopatch.mask['LULC'] eopatch.data['CLM'][0] eopatch.data['BANDS'][5][..., [3, 2, 1]] 

Pesanan EOExecute 66


Hebat, datanya dimuat. Sementara kami menunggu selesainya proses ini, mari kita lihat kemampuan kelas yang belum dibahas dalam artikel ini - EOExecutor . Modul ini terlibat dalam pelaksanaan dan pemantauan pipa dan memungkinkan multi-threading untuk digunakan tanpa upaya yang tidak perlu. Tidak ada lagi pencarian di Stack Overflow tentang cara memparalelkan pipa dengan benar atau bagaimana membuat progress bar bekerja dalam mode ini - kami telah melakukan segalanya untuk Anda!


Selain itu, ia menangani kesalahan yang terjadi dan dapat menghasilkan ringkasan singkat dari proses eksekusi. Yang terakhir adalah momen yang paling penting untuk memastikan pengulangan hasil Anda di masa depan, sehingga pengguna tidak harus menghabiskan waktu kerja yang berharga untuk mencari parameter yang ia gunakan Kamis lalu jam 9 pagi setelah semalaman pesta pora (jangan campur alkohol dan pemrograman layak!). Kelas ini juga dapat menghasilkan grafik ketergantungan yang bagus untuk pipa, yang dapat Anda tunjukkan kepada bos Anda!



Grafik ketergantungan pipa yang dihasilkan oleh eo-learn


Eksperimen Pembelajaran Mesin


Seperti yang dijanjikan, artikel ini terutama dimaksudkan untuk mempelajari berbagai model dengan eo-learn menggunakan data yang kami berikan. Di bawah ini kami telah menyiapkan dua percobaan di mana kami mempelajari efek cloud dan algoritma resampling berbeda selama interpolasi temporal pada hasil akhir. Setelah semua ini, kami akan mulai bekerja dengan jaringan konvolusi (CNN), dan membandingkan hasil dari dua pendekatan - analisis pixel-by-pixel dari pohon keputusan dan pembelajaran mendalam menggunakan jaringan saraf convolutional.


Sayangnya, orang tidak dapat memberikan jawaban yang jelas tentang keputusan apa yang harus diambil selama percobaan. Anda dapat mempelajari area subjek lebih dalam dan membuat asumsi untuk memutuskan apakah game tersebut layak untuk ditiru, tetapi pada akhirnya pekerjaan tersebut masih akan sampai pada coba-coba.


Bermainlah dengan awan


Awan adalah rasa sakit yang sangat besar di dunia EO, terutama ketika datang ke algoritma pembelajaran mesin, di mana Anda ingin menentukan mereka dan menghapusnya dari kumpulan data untuk interpolasi berdasarkan nilai-nilai yang hilang. Tetapi seberapa besar manfaat dari prosedur ini? Apakah itu sepadan? Rußwurm dan Körner, dalam Klasifikasi Penutupan Lahan Multi-Temporal dengan artikel Sequential Recurrent Encoders, bahkan menunjukkan bahwa untuk pembelajaran yang mendalam, proses penyaringan awan mungkin sama sekali tidak penting, karena pengklasifikasi itu sendiri mampu mendeteksi awan dan mengabaikannya.



Aktivasi lapisan input (atas) dan lapisan modulasi (bawah) dalam urutan gambar dari fragmen tertentu untuk jaringan saraf. Anda mungkin memperhatikan bahwa fragmen jaringan ini belajar membuat topeng cloud dan memfilter hasil yang diperoleh. (Halaman 9 di https://www.researchgate.net/publication/322975904_Multi-Temporal_Land_Cover_Classification_with_Sequential_Recurrent_Encoders )


Kami mengingat secara singkat struktur langkah penyaringan data (untuk detail, lihat [artikel sebelumnya] ()). Setelah mengambil snapshot Sentinel-2, kami mulai memfilter snapshot cloud. Semua gambar yang jumlah pikselnya tidak berawan tidak melebihi 80% dapat disaring (nilai ambang mungkin berbeda untuk bidang minat yang berbeda). Setelah itu, untuk mendapatkan nilai piksel pada hari yang sewenang-wenang, masker cloud digunakan agar tidak mempertimbangkan data tersebut.


Secara total, empat perilaku dimungkinkan:


  1. dengan filter gambar, diberi topeng cloud
  2. tidak ada filter snapshot, masker cloud yang diberikan
  3. dengan filter gambar, tidak termasuk masker cloud
  4. tanpa filter gambar, tidak termasuk cloud mask


Tampilan visual dari tumpukan gambar dari satelit Sentinel-2. Piksel transparan di sebelah kiri berarti piksel yang hilang karena tutupan awan. Tumpukan tengah menunjukkan nilai piksel setelah memfilter gambar dan menyisipkannya dengan cloud mask (Kasus 4), dan tumpukan di sebelah kanan menunjukkan hasil interpolasi dalam case tanpa memfilter gambar dan tanpa cloud mask (1). (Catatan jalur - tampaknya, artikel berisi kesalahan ketik, dan itu berarti sebaliknya - kasus 1 di tengah, dan 4 di sebelah kanan).


Pada artikel terakhir, kami sudah melakukan variasi kasus 1 dan menunjukkan hasilnya, jadi kami akan menggunakannya untuk perbandingan. Mempersiapkan conveyor lain dan melatih modelnya terdengar seperti tugas sederhana - Anda hanya perlu memastikan bahwa kami membandingkan nilai yang benar. Untuk melakukan ini, ambil set piksel yang sama untuk melatih dan memvalidasi model.


Hasilnya ditunjukkan pada tabel di bawah ini. Anda dapat melihat bahwa secara umum, pengaruh awan pada hasil model cukup rendah! Ini mungkin disebabkan oleh fakta bahwa kartu referensi memiliki kualitas yang sangat baik dan modelnya dapat mengabaikan sebagian besar gambar. Bagaimanapun, perilaku ini tidak dapat dijamin untuk AOI mana pun, jadi luangkan waktu Anda untuk membuang langkah ini dari model Anda!


ModelAkurasi [%]F_1 [%]
Tanpa filter, tanpa topeng92.892.6
Tanpa filter, dengan mask94.293.9
Dengan filter, tanpa topeng94.093.8
Dengan filter, dengan mask94.494.1

Dampak Berbagai Pendekatan Resampling


Pilihan opsi penempatan sementara tidak jelas. Di satu sisi, kita membutuhkan susunan gambar yang detail yang menunjukkan detail gambar sumber dengan baik - kami ingin menyertakan jumlah gambar terdekat dengan data sumber. Di sisi lain, kita dibatasi oleh sumber daya komputasi. Mengurangi langkah resampling menggandakan jumlah frame setelah interpolasi, dan dengan demikian meningkatkan jumlah atribut yang digunakan dalam pelatihan. Apakah peningkatan seperti itu sepadan dengan biaya sumber daya? Inilah yang harus kita cari tahu.


Untuk percobaan ini, kami akan menggunakan variasi 1 dari langkah sebelumnya. Setelah interpolasi, kami melakukan pengujian ulang dengan variasi berikut:


  1. Resampling seragam dengan interval 16 hari
  2. Resampling seragam dengan interval 8 hari
  3. Pilihan tanggal "terbaik", nomornya bertepatan dengan kasus 2.

Sampel dalam kasus 3 didasarkan pada jumlah terbesar dari tanggal umum untuk semua EOPatch di AOI yang dipilih

Grafik menunjukkan jumlah fragmen EOPatch yang berisi data untuk setiap hari 2017 (biru). Garis merah menunjukkan tanggal optimal untuk resampling, yang didasarkan pada tanggal gambar Sentinel-2 untuk AOI 2017 yang diberikan.


Melihat tabel di bawah ini, Anda dapat melihat bahwa hasilnya tidak terlalu mengesankan, seperti dalam pengalaman masa lalu. Untuk kasus 2 dan 3, jumlah waktu yang dihabiskan berlipat ganda, tetapi perbedaan dengan pendekatan awal kurang dari 1%. Peningkatan semacam itu terlalu mencolok untuk penggunaan praktis, sehingga kami dapat mempertimbangkan interval 16 hari yang cocok untuk tugas tersebut.


ModelAkurasi [%]F_1 [%]
Merata setiap 16 hari94.494.1
Merata setiap 8 hari94.594.3
Memilih tanggal terbaik94.694.4

Hasil akurasi keseluruhan dan F1 berbobot untuk saluran pipa yang berbeda dengan perubahan dalam pendekatan resampling.


Deep Learning: Menggunakan Jaringan Neural Konvolusional (CNN)


Pembelajaran mendalam telah menjadi pendekatan standar untuk banyak tugas, seperti visi komputer, pemrosesan kata bahasa alami, dan pemrosesan sinyal. Ini karena kemampuan mereka untuk mengekstraksi pola dari input multidimensi yang kompleks. Pendekatan pembelajaran mesin klasik (seperti pohon keputusan) telah digunakan dalam banyak tugas geodata temporal. Jaringan konvolusional, di sisi lain, digunakan untuk menganalisis korelasi spasial antara gambar yang berdekatan. Pada dasarnya, penggunaannya terbatas untuk bekerja dengan gambar tunggal.


Kami ingin mempelajari arsitektur model-model pembelajaran dalam, dan mencoba memilih salah satu yang mampu menganalisis aspek spasial dan temporal dari data satelit secara bersamaan.


Untuk melakukan ini, kami menggunakan Netvork Sepenuhnya-Konvolusional Temporal, TFCN, atau lebih tepatnya, ekstensi temporal ke U-Net, diimplementasikan di TensorFlow. Lebih khusus, arsitektur menggunakan korelasi spatio-temporal untuk meningkatkan hasilnya. Keuntungan tambahan adalah bahwa struktur jaringan memungkinkan Anda untuk lebih mewakili hubungan spasial pada skala yang berbeda berkat proses encoding / decoding di U-net. Seperti pada model klasik, pada output kita mendapatkan matriks label dua dimensi, yang akan kita bandingkan dengan kebenaran.



Kami menggunakan model yang terlatih untuk memprediksi nilai pada set tes, dan nilai yang diperoleh diperiksa dengan kebenaran. Secara keseluruhan, akurasi 84,4% dan F1 85,4%.



Perbandingan berbagai prediksi untuk tugas kami. Gambar visual (kiri atas), peta referensi sebenarnya (kanan atas), prediksi model LightGBM (kiri bawah) dan prediksi U-net (kanan bawah)


Hasil ini hanya menunjukkan pekerjaan awal pada prototipe ini, yang tidak sangat dioptimalkan untuk tugas saat ini. Meskipun demikian, hasilnya setuju dengan beberapa statistik yang diperoleh di wilayah tersebut. Untuk melepaskan potensi jaringan saraf, perlu mengoptimalkan arsitektur (set fitur, kedalaman jaringan, jumlah konvolusi), serta pengaturan parameter hiper (kecepatan belajar, jumlah era, bobot kelas). Kami berharap untuk menggali lebih dalam topik ini (ha ha) bahkan lebih, dan berencana untuk mendistribusikan kode kami ketika itu dalam bentuk yang dapat diterima.


Eksperimen lain


Anda dapat menemukan banyak cara untuk meningkatkan hasil Anda saat ini, tetapi kami tidak dapat memilah atau mencoba semuanya. Pada saat itulah Anda muncul di tempat kejadian! Tunjukkan apa yang dapat Anda lakukan dengan kumpulan data ini dan bantu kami meningkatkan hasilnya!


Misalnya, dalam waktu dekat, salah satu kolega kami akan terlibat dalam klasifikasi tutupan berdasarkan tumpukan temporal gambar individu menggunakan jaringan konvolusi. Idenya adalah bahwa beberapa permukaan, misalnya, yang buatan, dapat dibedakan tanpa fitur temporal - cukup spasial. Kami akan dengan senang hati menulis artikel terpisah ketika karya ini membuahkan hasil!


Dari penerjemah


Sayangnya, bagian selanjutnya dari seri artikel ini tidak keluar, yang berarti bahwa penulis tidak menunjukkan contoh kode sumber dengan membangun U-Net. Sebagai alternatif, saya dapat menawarkan sumber-sumber berikut:


  1. U-Net: Jaringan Konvolusional untuk Segmentasi Gambar Biomedis - Olaf Ronneberger, Philipp Fischer, Thomas Brox adalah salah satu artikel dasar tentang arsitektur U-Net yang tidak melibatkan data sementara.
  2. https://eo-learn.readthedocs.io/en/latest/examples/land-cover-map/SI_LULC_pipeline.html - Halaman dokumentasi eo-learning, di mana (mungkin) versi terbaru dari jaringan pipa 1,2 bagian berada.
  3. https://github.com/divamgupta/image-segmentation-keras - Repositori dengan beberapa jaringan yang diimplementasikan menggunakan keras. Saya memiliki beberapa pertanyaan tentang implementasi (mereka sedikit berbeda dari yang dijelaskan dalam artikel asli), tetapi secara umum, solusi mudah diadaptasi untuk keperluan pribadi dan cukup berfungsi.

Source: https://habr.com/ru/post/id453354/


All Articles