LuthfiNadyan/Deployment_GC7_ComputerVision
0
1import streamlit as st2import os3from PIL import Image4 5def show():6 """7 Menampilkan halaman Exploratory Data Analysis (EDA) untuk dataset klasifikasi sampah.8 """9 st.title("Exploratory Data Analysis (EDA) - Klasifikasi Sampah Organik vs. Daur Ulang")10 11 # Ganti path ini jika Anda menyimpan gambar di lokasi lain12 folder_path = "src/EDA_file"13 14 # --- 1. Distribusi Kelas Sampah ---15 st.header("1. Distribusi Kelas Sampah")16 try:17 distribusi_img_path = os.path.join(folder_path, "EDA 1.png")18 distribusi_image = Image.open(distribusi_img_path)19 st.image(distribusi_image, caption="Distribusi Sampah Organik (55.69%) vs Daur Ulang (44.31%)")20 except FileNotFoundError:21 st.error(f"File gambar 'image_84d3de.png' tidak ditemukan di folder '{folder_path}'.")22 23 st.markdown("""24 **Interpretasi:**25 1. **Dominasi Sampah Organik:** Kategori sampah organik (55.69%) merupakan mayoritas dalam dataset ini. Hal ini mencerminkan kondisi umum di mana sebagian besar limbah rumah tangga adalah sisa makanan dan sampah lain yang mudah terurai.26 2. **Distribusi yang Relatif Seimbang:** Meskipun kelas organik lebih banyak, selisihnya dengan kelas daur ulang (Recyclable, 44.31%) hanya sekitar 11%. Proporsi yang tidak terlalu timpang ini sangat baik untuk melatih model Deep Learning seperti CNN, karena dapat mengurangi risiko model menjadi bias terhadap kelas mayoritas.27 3. **Potensi Implementasi:** Dengan data yang cukup seimbang, model dapat dilatih untuk mengenali kedua kelas dengan baik. Namun, untuk lebih mengoptimalkan performa, teknik seperti augmentasi data dapat diterapkan pada kelas "Recycleable" untuk memastikan model memiliki kemampuan generalisasi yang setara untuk kedua kategori.28 """)29 30 st.markdown("---")31 32 # --- 2. Sampel Gambar dan Ciri Visual Awal ---33 st.header("2. Sampel Gambar dan Ciri Visual Awal")34 try:35 sampel_img_path = os.path.join(folder_path, "EDA 2.png")36 sampel_image = Image.open(sampel_img_path)37 st.image(sampel_image, caption="Contoh gambar dari Kelas O (Organik) dan Kelas R (Daur Ulang)")38 except FileNotFoundError:39 st.error(f"File gambar 'image_84d3c4.jpg' tidak ditemukan di folder '{folder_path}'.")40 41 st.markdown("""42 **Distribusi Kelas:**43 - **O (Organik):** Berisi gambar-gambar sisa makanan, buah-buahan, dan sayuran.44 - **R (Daur Ulang/Recyclable):** Terdiri dari gambar sampah seperti botol kaca, kertas, dan wadah plastik.45 46 **Insight Awal Berdasarkan Ciri Visual:**47 - **Ciri Visual Sampah Organik (Kelas O):**48 - **Warna:** Didominasi warna-warna alami seperti coklat, hijau, dan kuning.49 - **Tekstur:** Cenderung kompleks, tidak beraturan, dan terkadang terlihat lembek atau basah.50 - **Ciri Visual Sampah Daur Ulang (Kelas R):**51 - **Warna:** Seringkali memiliki warna cerah, transparan, atau bening.52 - **Bentuk dan Tekstur:** Objek cenderung kaku, memiliki bentuk yang terstruktur (botol, kaleng, kotak), dan permukaan yang lebih halus.53 """)54 55 st.markdown("---")56 57 # --- 3. Distribusi Resolusi Gambar ---58 st.header("3. Distribusi Resolusi Gambar")59 try:60 resolusi_img_path = os.path.join(folder_path, "EDA 3.png")61 resolusi_image = Image.open(resolusi_img_path)62 st.image(resolusi_image, caption="Distribusi Tinggi dan Lebar Gambar untuk Kelas O dan R")63 except FileNotFoundError:64 st.error(f"File gambar 'image_84d3bf.png' tidak ditemukan di folder '{folder_path}'.")65 66 st.markdown("""67 **Insight Eksplorasi Data:**68 - **Resolusi Kecil:** Mayoritas gambar memiliki resolusi di bawah 450 piksel. Ukuran ini cukup efisien untuk proses pelatihan model CNN karena tidak memerlukan proses *resizing* yang ekstrem.69 - **Ukuran Relatif Mirip:** Distribusi ukuran gambar antar kelas cukup mirip. Ini berarti tidak diperlukan perlakuan normalisasi ukuran yang berbeda secara signifikan untuk masing-masing kelas, sehingga menyederhanakan tahap *preprocessing*.70 """)71 72 st.markdown("---")73 74 # --- 4. Analisis Fitur Visual ---75 st.header("4. Analisis Fitur Visual")76 77 st.markdown("### Distribusi Warna RGB")78 try:79 rgb_img_path = os.path.join(folder_path, "EDA 4.png")80 rgb_image = Image.open(rgb_img_path)81 st.image(rgb_image, caption="Perbandingan distribusi RGB antara kelas organik dan daur ulang")82 except FileNotFoundError:83 st.error(f"File gambar 'image_84d3a5.png' tidak ditemukan di folder '{folder_path}'.")84 85 st.markdown("""86 **Insight:** Perbedaan pola distribusi RGB yang sangat kontras ini adalah fitur yang sangat kuat.87 - **Organik:** Memiliki keragaman warna yang tinggi dan kompleks, ditandai dengan sebaran R, G, B yang merata.88 - **Daur Ulang:** Menunjukkan lonjakan tajam pada intensitas piksel tertinggi, menandakan dominasi area putih atau sangat terang (misalnya, latar belakang, kertas, plastik bening).89 """)90 91 # --- 5. Analisis Fitur Visual ---92 st.markdown("### Analisis Tekstur - Local Binary Pattern (LBP)")93 try:94 lbp_img_path = os.path.join(folder_path, "EDA 6.png")95 lbp_image = Image.open(lbp_img_path)96 st.image(lbp_image, caption="Perbandingan hasil LBP untuk menangkap tekstur")97 except FileNotFoundError:98 st.error(f"File gambar 'image_84d3a0.jpg' tidak ditemukan di folder '{folder_path}'.")99 100 st.markdown("""101 **Kesimpulan:** LBP secara efektif membuktikan bahwa kedua kelas memiliki karakteristik tekstur yang sangat berbeda.102 - **Organik:** Kaya akan fitur tekstur yang kompleks, acak, dan tidak teratur.103 - **Daur Ulang:** Cenderung memiliki tekstur yang lebih sederhana, terstruktur, dengan banyak garis lurus dan permukaan halus.104 """)105 106 # --- 6. Distribusi Rata-Rata Saturasi Kelas ---107 st.markdown("### Distribusi Rata-Rata Saturasi per Kelas")108 try:109 saturasi_img_path = os.path.join(folder_path, "EDA 5.png")110 saturasi_image = Image.open(saturasi_img_path)111 st.image(saturasi_image, caption="Distribusi rata-rata saturasi warna per kelas")112 except FileNotFoundError:113 st.error(f"File gambar 'image_84d0fa.png' tidak ditemukan di folder '{folder_path}'.")114 115 st.markdown("""116 **Insight:** Saturasi warna adalah fitur pembeda lainnya yang signifikan.117 - **Organik (O):** Secara konsisten memiliki warna yang lebih hidup dan kaya (saturasi lebih tinggi dan stabil).118 - **Daur Ulang (R):** Cenderung memiliki warna lebih pudar atau netral (median saturasi rendah), namun dengan beberapa *outlier* berwarna cerah dari kemasan produk.119 """)120 121 122if __name__ == "__main__":123 show()124 