CoolFace
Apppublic

Rifatsyq/Computer_Vision

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
eda.py81 linesDownload Raw Back to root
1import streamlit as st
2import os
3import cv2
4import matplotlib.pyplot as plt
5import tensorflow as tf
6
7def run():
8
9    # Set path ke folder dataset
10    data_dir = 'dataset/dataset/train'
11
12    # Title
13    st.title('Computer Vision-Based Vehicle Recognition')
14
15    # sub header
16    st.subheader('1. Exploratory Data Analyst (EDA)')
17
18    # EDA pertama
19    st.write('### A. Berapa jumlah data dari setiap kelas di data test?')
20
21    # Ambil daftar kelas (subfolder)
22    classes = sorted(os.listdir(data_dir))
23
24    # Hitung jumlah gambar per kelas
25    class_counts = {cls: len(os.listdir(os.path.join(data_dir, cls))) for cls in classes}
26
27    # Plot pakai matplotlib
28    fig, ax = plt.subplots()
29    ax.bar(class_counts.keys(), class_counts.values(), color='skyblue')
30    ax.set_title("Distribusi Jumlah Gambar per Kelas")
31    ax.set_xlabel("Kelas")
32    ax.set_ylabel("Jumlah Gambar")
33    ax.grid(axis='y', linestyle='--', alpha=0.5)
34
35    # Tampilkan plot di Streamlit
36    st.pyplot(fig)
37
38    # conclusion 1 EDA
39    st.write('Dari bar barchart diatas kita bisa melihat bahwa terdapat perbedaan jumlah data dari setiap kelas di data test, tetapi menurut saya perbedaan ini masih tergolong tidak ektrim sehingga tidak akan terlalu berpengaruh dengan model kita nanti')
40
41    #Membuat garis pemisah
42    st.markdown("---") 
43
44    # EDA kedua
45    st.write('### B. Apakah bentuk yang dimiliki setiap kelas unik/berbeda satu sama lain?')
46
47    # Membuat fungsi untuk edge detection
48    def show_edge_examples(data_dir, classes, n_images=3):
49        fig, axs = plt.subplots(len(classes), n_images, figsize=(n_images * 3, len(classes) * 3))
50
51        for i, cls in enumerate(classes):
52            cls_path = os.path.join(data_dir, cls)
53            img_files = os.listdir(cls_path)[:n_images]
54
55            for j, img_file in enumerate(img_files):
56                img_path = os.path.join(cls_path, img_file)
57                img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
58
59                if img is None:
60                    continue  # skip jika gagal load gambar
61
62                img = cv2.resize(img, (224, 224))
63                edges = cv2.Canny(img, 100, 200)
64
65                axs[i, j].imshow(edges, cmap='gray')
66                axs[i, j].axis('off')
67                if j == 0:
68                    axs[i, j].set_ylabel(cls, fontsize=14)
69
70        plt.suptitle("Edge Detection untuk Setiap Kelas", fontsize=16)
71        plt.tight_layout()
72        st.pyplot(fig)
73    
74    # menampilkan hasil EDA kedua
75    show_edge_examples(data_dir, classes, n_images=3)
76
77    # conclusion EDA 2
78    st.write('Dari hasil sillhoutte diatas kita bisa melihat perbedaan bentuk yang dimiliki oleh setiap kelas berbeda satu sama lain, hal ini akan membantu model membedakan setiap kelas. Dan masing-masing kelas juga memiliki angle yang berbeda sehingga meningkatkan variasi data yang kita miliki untuk nantinya dipelajari oleh model yang akan kita buat')
79
80if __name__ == '__main__':
81    run()