{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"\n\npip install essential_generators ","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-11-13T04:00:35.207666Z","iopub.execute_input":"2023-11-13T04:00:35.208224Z","iopub.status.idle":"2023-11-13T04:00:50.019385Z","shell.execute_reply.started":"2023-11-13T04:00:35.208185Z","shell.execute_reply":"2023-11-13T04:00:50.017808Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport stegano\nfrom stegano import lsb\nimport os\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom PIL import Image\nimport scipy.spatial.distance as dist\nimport string\nimport random\nfrom essential_generators import DocumentGenerator\nfrom scipy.fftpack import dct\nfrom skimage.io import imread\nfrom tqdm import tqdm","metadata":{"execution":{"iopub.status.busy":"2023-11-13T04:00:50.023209Z","iopub.execute_input":"2023-11-13T04:00:50.023862Z","iopub.status.idle":"2023-11-13T04:00:50.035472Z","shell.execute_reply.started":"2023-11-13T04:00:50.023729Z","shell.execute_reply":"2023-11-13T04:00:50.032723Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cover_path= \"/kaggle/input/alaska2-image-steganalysis/Cover\"\n\ndef get_cover_image(cover_path):\n    cover_image_list=[]\n    fig,axes = plt.subplots(ncols=5, figsize = (20,20) ) \n    \n    for i,img in enumerate(np.random.randint(0,len(os.listdir(cover_path)),5)):\n        img_name=str(img)\n        if len(img_name) <5:\n            img_name=\"0\"*(5-len(img_name))+img_name\n        try:\n            cover_image=plt.imread(cover_path+\"/\"+img_name+\".jpg\")\n            axes[i].imshow(cover_image)\n            axes[i].set_title(\"Cover Image number : {}\".format(img_name))\n        except:\n            img_name=str(int(img_name)+5)\n            cover_image=plt.imread(cover_path+\"/\"+img_name+\".jpg\")\n            axes[i].imshow(cover_image)\n            axes[i].set_title(\"Cover Image number : {}\".format(img_name))  \n        cover_image_list.append(cover_path+\"/\"+img_name+\".jpg\")    \n        \n    return cover_image_list\n\ncover_image_list=get_cover_image(cover_path)","metadata":{"execution":{"iopub.status.busy":"2023-11-13T04:00:50.037387Z","iopub.execute_input":"2023-11-13T04:00:50.039048Z","iopub.status.idle":"2023-11-13T04:00:52.054444Z","shell.execute_reply.started":"2023-11-13T04:00:50.039004Z","shell.execute_reply":"2023-11-13T04:00:52.053056Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cover_final_path=\"/kaggle/input/alaska2-image-steganalysis/Cover\"\njuniward_final_path=\"/kaggle/input/alaska2-image-steganalysis/JUNIWARD\"\ncover_final_path_list=[]\njuniward_final_path_list=[]\npixel_cover=[]\npixel_juniward=[]\n\n\ndef get_train_data(cover_final_path,juniward_final_path):\n    train_df=pd.DataFrame()\n    train_df_2=pd.DataFrame()\n    print(type(train_df))\n    for path in tqdm(os.listdir(cover_final_path)[:7500]):\n        cover_final_path_list.append(cover_final_path+\"/\"+path)\n        im = Image.open(cover_final_path+\"/\"+path)\n        im = im.convert('L')\n        im=im.resize((200,200),1)\n        im=np.array(im)\n        pixel_cover.append(im)\n    train_df[\"Images\"]=cover_final_path_list\n    train_df[\"Label\"]=0\n    \n    for path in tqdm(os.listdir(juniward_final_path)[:7500]):\n        juniward_final_path_list.append(juniward_final_path+\"/\"+path)\n        im = Image.open(juniward_final_path+\"/\"+path)\n        im = im.convert('L')\n        im=im.resize((200,200),1)\n        im=np.array(im)\n        pixel_juniward.append(im)\n    train_df_2[\"Images\"]=juniward_final_path_list\n    train_df_2[\"Label\"]=1\n    \n    train_df=pd.concat([train_df,train_df_2])\n    return train_df,pixel_cover,pixel_juniward\n\n\ntrain_df,pixel_cover,pixel_juniward=get_train_data(cover_final_path,juniward_final_path)\n\nY=train_df[\"Label\"].values\npixel_cover=np.array(pixel_cover)\npixel_juniward=np.array(pixel_juniward)\nX=np.concatenate([pixel_cover,pixel_juniward])\nX=X.reshape(15000,200,200,1)","metadata":{"execution":{"iopub.status.busy":"2023-11-13T04:00:52.056698Z","iopub.execute_input":"2023-11-13T04:00:52.057325Z","iopub.status.idle":"2023-11-13T04:02:49.602497Z","shell.execute_reply.started":"2023-11-13T04:00:52.057289Z","shell.execute_reply":"2023-11-13T04:02:49.600991Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import keras\nfrom keras.models import Sequential\nfrom keras.layers import Dense, Dropout, Flatten\nfrom keras.layers import Conv2D, MaxPooling2D\nfrom keras.layers import BatchNormalization","metadata":{"execution":{"iopub.status.busy":"2023-11-13T04:02:49.606241Z","iopub.execute_input":"2023-11-13T04:02:49.606731Z","iopub.status.idle":"2023-11-13T04:02:49.613657Z","shell.execute_reply.started":"2023-11-13T04:02:49.606691Z","shell.execute_reply":"2023-11-13T04:02:49.612085Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = Sequential()\nmodel.add(Conv2D(128, kernel_size = (3, 3), activation='relu', input_shape=(200,200,1)))\nmodel.add(MaxPooling2D(pool_size=(2,2)))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(64, kernel_size=(3,3), activation='relu'))\nmodel.add(MaxPooling2D(pool_size=(2,2)))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(64, kernel_size=(3,3), activation='relu'))\nmodel.add(MaxPooling2D(pool_size=(2,2)))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(32, kernel_size=(3,3), activation='relu'))\nmodel.add(MaxPooling2D(pool_size=(2,2)))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(16, kernel_size=(3,3), activation='relu'))\nmodel.add(MaxPooling2D(pool_size=(2,2)))\nmodel.add(BatchNormalization())\nmodel.add(Dropout(0.2))\nmodel.add(Flatten())\nmodel.add(Dense(128, activation='relu'))\nmodel.add(Dense(1))\n\nmodel.compile(loss='mean_squared_error', optimizer='adam')\nmodel.summary()\n","metadata":{"execution":{"iopub.status.busy":"2023-11-13T04:02:49.616061Z","iopub.execute_input":"2023-11-13T04:02:49.616575Z","iopub.status.idle":"2023-11-13T04:02:49.983785Z","shell.execute_reply.started":"2023-11-13T04:02:49.616500Z","shell.execute_reply":"2023-11-13T04:02:49.982334Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.fit(X, Y, batch_size = 100, epochs = 20,validation_split=0.2)\n\nfor key in history.history:\n    print(key, history.history[key])","metadata":{"execution":{"iopub.status.busy":"2023-11-13T04:02:49.985992Z","iopub.execute_input":"2023-11-13T04:02:49.986384Z"},"trusted":true},"execution_count":null,"outputs":[]}]}