{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":62057,"databundleVersionId":6714922,"sourceType":"competition"}],"dockerImageVersionId":30732,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"## AI Glass Detection ##\n\n## Amaç ## \nYapay Zeka tarafından oluşturulan resimlerden gözlük takıp takmadığını belirlemek için yapay zeka kullanmalısınız. Görseller farklı açılardan, yakınlaştırma seviyelerinden ve aydınlatma koşullarından oluşur ve çeşitli insan gruplarını temsil eder. Görseller 512x512 boyutundadır ve Stable Diffusion ile üretilmiştir; gerçek kişiler değillerdir.\n\nBaşlangıç: 30 Ekim 2023\nBitiş: 28 Kasım 2023\n\nDeğerlendirme\nLogloss ile değerlendirileceksiniz.\n\nGönderim Dosyası\nTest setindeki her ID için gözlük değişkeni için bir olasılık tahmin etmelisiniz. Dosya şu formatta olmalıdır:\n\npython\nKodu kopyala\nid,glasses\n2,0\n5,0\n6,0\n...\nAlıntı\nJeff Heaton. (2023). Applications of Deep Learning (WUSTL, Fall 2023). Kaggle. https://kaggle.com/competitions/applications-of-deep-learning-wustl-fall-2023","metadata":{}},{"cell_type":"markdown","source":"## Kütüphaneleri Yükle ##","metadata":{}},{"cell_type":"code","source":"import cv2\nimport os\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport random","metadata":{"execution":{"iopub.status.busy":"2024-06-23T21:18:50.667053Z","iopub.execute_input":"2024-06-23T21:18:50.667457Z","iopub.status.idle":"2024-06-23T21:18:50.673723Z","shell.execute_reply.started":"2024-06-23T21:18:50.667429Z","shell.execute_reply":"2024-06-23T21:18:50.672590Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Veri Setini Yükle ","metadata":{}},{"cell_type":"code","source":"train=pd.read_csv(\"/kaggle/input/applications-of-deep-learning-wustl-fall-2023/train.csv\")\ntest=pd.read_csv(\"/kaggle/input/applications-of-deep-learning-wustl-fall-2023/test.csv\")","metadata":{"execution":{"iopub.status.busy":"2024-06-23T21:10:47.006039Z","iopub.execute_input":"2024-06-23T21:10:47.006585Z","iopub.status.idle":"2024-06-23T21:10:47.039504Z","shell.execute_reply.started":"2024-06-23T21:10:47.006543Z","shell.execute_reply":"2024-06-23T21:10:47.038254Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## EDA ##","metadata":{}},{"cell_type":"code","source":"train.head()","metadata":{"execution":{"iopub.status.busy":"2024-06-23T21:12:02.994039Z","iopub.execute_input":"2024-06-23T21:12:02.995645Z","iopub.status.idle":"2024-06-23T21:12:03.020098Z","shell.execute_reply.started":"2024-06-23T21:12:02.995558Z","shell.execute_reply":"2024-06-23T21:12:03.018882Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.shape,test.shape","metadata":{"execution":{"iopub.status.busy":"2024-06-23T21:11:54.259314Z","iopub.execute_input":"2024-06-23T21:11:54.260124Z","iopub.status.idle":"2024-06-23T21:11:54.268614Z","shell.execute_reply.started":"2024-06-23T21:11:54.260085Z","shell.execute_reply":"2024-06-23T21:11:54.267311Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"img_path = r\"/kaggle/input/applications-of-deep-learning-wustl-fall-2023\"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"files = os.listdir(img_path)\nrandom_files = random.sample(files, 16)\n\nplt.figure(figsize=(10,10))\nfor i in range(16):\n    plt.subplot(4,4,i+1)\n    img = cv2.imread(os.path.join(img_path, random_files[i]))\n    plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))\n    plt.axis(\"off\")\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-06-23T21:25:52.281296Z","iopub.execute_input":"2024-06-23T21:25:52.281682Z","iopub.status.idle":"2024-06-23T21:25:53.841348Z","shell.execute_reply.started":"2024-06-23T21:25:52.281651Z","shell.execute_reply":"2024-06-23T21:25:53.840044Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Img Preprocessing ##","metadata":{}},{"cell_type":"code","source":"def pre_img(df, img_path, size=128):\n    X = []\n    for img in df:\n        img_file = os.path.join(img_path, str(img))\n        img = cv2.imread(img_file)\n        img = cv2.resize(img, (size, size))\n        img = img / 255.0\n        X.append(img)\n    X = np.array(X)\n    return X","metadata":{"execution":{"iopub.status.busy":"2024-06-23T21:39:41.180431Z","iopub.execute_input":"2024-06-23T21:39:41.181263Z","iopub.status.idle":"2024-06-23T21:39:41.188134Z","shell.execute_reply.started":"2024-06-23T21:39:41.181225Z","shell.execute_reply":"2024-06-23T21:39:41.186915Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Özellikleri ve Hedefi Belirle ##","metadata":{}},{"cell_type":"code","source":"X_train = pre_img(train[\"file\"], img_path)\ny_train = train[\"glasses\"]","metadata":{"execution":{"iopub.status.busy":"2024-06-23T21:39:53.687105Z","iopub.execute_input":"2024-06-23T21:39:53.687585Z","iopub.status.idle":"2024-06-23T21:42:22.164957Z","shell.execute_reply.started":"2024-06-23T21:39:53.687552Z","shell.execute_reply":"2024-06-23T21:42:22.160320Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Model Oluştur ve Değerlendir ##","metadata":{}},{"cell_type":"markdown","source":"### Kütüphaneleri İçe Aktar ##","metadata":{}},{"cell_type":"code","source":"from sklearn.metrics import r2_score, mean_squared_error\nfrom sklearn.model_selection import train_test_split\nX_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=.20, random_state=42)\nfrom keras.models import Sequential\nfrom keras.layers import Conv2D, Dense, Flatten, Input, MaxPooling2D, Dropout,BatchNormalization","metadata":{"execution":{"iopub.status.busy":"2024-06-23T21:48:28.508437Z","iopub.execute_input":"2024-06-23T21:48:28.508879Z","iopub.status.idle":"2024-06-23T21:48:35.448022Z","shell.execute_reply.started":"2024-06-23T21:48:28.508842Z","shell.execute_reply":"2024-06-23T21:48:35.447038Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Conv2D, BatchNormalization, MaxPooling2D, Flatten, Dense, Dropout\nfrom tensorflow.keras.callbacks import EarlyStopping\n\nsize=128\nmodel = Sequential()\n\nmodel.add(Conv2D(64, (3, 3), activation='relu', input_shape=(size, size, 3)))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2, 2)))\nmodel.add(Dropout(0.2))\n\nmodel.add(Conv2D(128, (3, 3), activation='relu', padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2, 2)))\nmodel.add(Dropout(0.3))\n\nmodel.add(Flatten())\nmodel.add(Dense(128, activation='relu'))\nmodel.add(Dropout(0.4))\nmodel.add(Dense(32, activation='relu'))\nmodel.add(Dropout(0.3))\nmodel.add(Dense(8, activation='relu'))\nmodel.add(Dense(1, activation='sigmoid'))\n\nmodel.compile(optimizer=\"adam\", loss=\"binary_crossentropy\", metrics=['accuracy'])\n\n# Erken Durdurma\nearly_stopping = EarlyStopping(monitor='val_loss', patience=5, verbose=1)","metadata":{"execution":{"iopub.status.busy":"2024-06-23T21:47:30.380272Z","iopub.execute_input":"2024-06-23T21:47:30.381219Z","iopub.status.idle":"2024-06-23T21:47:30.822097Z","shell.execute_reply.started":"2024-06-23T21:47:30.381179Z","shell.execute_reply":"2024-06-23T21:47:30.820996Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Modeli Eğit ##","metadata":{}},{"cell_type":"code","source":"# Eğitim\nhistory=model.fit(X_train, y_train, validation_data=(X_val, y_val), epochs=100, batch_size=32, callbacks=[early_stopping],verbose=1)","metadata":{"execution":{"iopub.status.busy":"2024-06-23T21:49:54.405350Z","iopub.execute_input":"2024-06-23T21:49:54.405765Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Submission Oluşturma ##","metadata":{}},{"cell_type":"code","source":"X_test = pre_img(test[\"file\"], img_path)\nsubmission = pd.read_csv(\"/kaggle/input/applications-of-deep-learning-wustl-fall-2023/sample_submission.csv\")\nsubmission[\"glasses\"] = model.predict(X_test).round().astype(int)\nsubmission.to_csv(\"submission.csv\", index=False)\nsubmission","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Modeli Kaydet ##","metadata":{}},{"cell_type":"code","source":"model.save(\"model_glass.keras\")","metadata":{},"execution_count":null,"outputs":[]}]}