├── README.md ├── VGG16_based_model.ipynb ├── dataset ├── test │ ├── original │ │ ├── AU_TS_H_008.bmp │ │ ├── AU_TS_H_009.bmp │ │ ├── AU_TS_H_010.bmp │ │ ├── AU_TS_H_011.bmp │ │ ├── AU_TS_H_012.bmp │ │ ├── AU_TS_H_013.bmp │ │ └── AU_TS_H_014.bmp │ └── spliced │ │ ├── SP_TT_H_004.bmp │ │ ├── SP_TT_H_005.bmp │ │ ├── SP_TT_H_006.bmp │ │ ├── SP_TT_H_007.bmp │ │ ├── SP_TT_H_008.bmp │ │ └── SP_TT_H_009.bmp ├── train │ ├── original │ │ ├── AU_S_009.bmp │ │ ├── AU_S_010.bmp │ │ ├── AU_S_011.bmp │ │ ├── AU_S_012.bmp │ │ ├── AU_S_013.bmp │ │ ├── AU_S_014.bmp │ │ ├── AU_S_015.bmp │ │ └── AU_S_016.bmp │ └── spliced │ │ ├── SP_TT_H_010.bmp │ │ ├── SP_TT_H_011.bmp │ │ ├── SP_TT_H_012.bmp │ │ ├── SP_TT_H_013.bmp │ │ ├── SP_TT_H_014.bmp │ │ ├── SP_TT_H_015.bmp │ │ ├── SP_TT_H_016.bmp │ │ ├── SP_TT_H_017.bmp │ │ ├── SP_TT_H_018.bmp │ │ └── SP_TT_H_019.bmp └── valid │ ├── original │ ├── AU_S_001.bmp │ ├── AU_S_002.bmp │ ├── AU_S_003.bmp │ ├── AU_S_004.bmp │ ├── AU_S_005.bmp │ └── AU_S_006.bmp │ └── spliced │ ├── SP_S_005.bmp │ ├── SP_S_006.bmp │ ├── SP_S_007.bmp │ ├── SP_S_008.bmp │ └── SP_S_009.bmp └── model └── CNNImageSplicingDetectorModel.json /README.md: -------------------------------------------------------------------------------- 1 | # Detection of Image Tampering using CNN 2 | 3 | This is an implemntation of the CNN model which is based on the VGG16 pretrained model and Fine tunned on our Datset which is The CASIA.v2 and the Columbia Image Splicing Detection Dataset 4 |
5 | 6 | ### Note:
7 | This Model was trained on the Google Colab python notebook in order to be able to run it on the google colab notebook you must edit the path for the dataset and the pretrained model and running the First inside the VGG16_based_model.ipynb to authenticate with the google drive API to load/write files from/to it.
8 | 9 | ### Files structure :
10 | 11 | --VGG16_based_model.ipynb
12 | -- model:
13 | ------CNNImageSplicingDetectorModel.json
14 | ------CNNImageSplicingDetectorModelWeights.h5
15 | -- dataset:
16 | ------test:
17 | ---------original
18 | ------------img1.jpg
19 | ------------img2.jpg
20 | ------------img3.jpg
21 | ---------spliced
22 | ------------img1.jpg
23 | ------------img2.jpg
24 | ------------img3.jpg
25 | ------train:
26 | ---------original
27 | ------------img1.jpg
28 | ------------img2.jpg
29 | ------------img3.jpg
30 | ---------spliced
31 | ------------img1.jpg
32 | ------------img2.jpg
33 | ------------img3.jpg
34 | ------valid:
35 | ---------original
36 | ------------img1.jpg
37 | ------------img2.jpg
38 | ------------img3.jpg
39 | ---------spliced
40 | ------------img1.jpg
41 | ------------img2.jpg
42 | ------------img3.jpg
43 | -------------------------------------------------------------------------------- /VGG16_based_model.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"VGG16_based_model.ipynb","version":"0.3.2","views":{},"default_view":{},"provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"},"accelerator":"GPU"},"cells":[{"metadata":{"id":"BKVkm01ndqdA","colab_type":"text"},"cell_type":"markdown","source":["### Connecting to Google Drive directory"]},{"metadata":{"id":"o_Fos1vciFzK","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":122},"outputId":"2daa8232-6d4a-41f8-8bd1-24e593c290ee","executionInfo":{"status":"ok","timestamp":1532021684618,"user_tz":-120,"elapsed":40435,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["!apt-get install -y -qq software-properties-common python-software-properties module-init-tools\n","!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null\n","!apt-get update -qq 2>&1 > /dev/null\n","!apt-get -y install -qq google-drive-ocamlfuse fuse\n","from google.colab import auth\n","auth.authenticate_user()\n","from oauth2client.client import GoogleCredentials\n","creds = GoogleCredentials.get_application_default()\n","import getpass\n","!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL\n","vcode = getpass.getpass()\n","!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}\n","\n","!mkdir -p drive\n","!google-drive-ocamlfuse drive\n","\n","!ls drive\n"],"execution_count":18,"outputs":[{"output_type":"stream","text":["Please, open the following URL in a web browser: https://accounts.google.com/o/oauth2/auth?client_id=32555940559.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&response_type=code&access_type=offline&approval_prompt=force\r\n","··········\n","Please, open the following URL in a web browser: https://accounts.google.com/o/oauth2/auth?client_id=32555940559.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&response_type=code&access_type=offline&approval_prompt=force\n","Please enter the verification code: Access token retrieved correctly.\n","Colab Documents Google Photos Music Pictures unity\n"],"name":"stdout"}]},{"metadata":{"id":"ufZvOL0ebVu1","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":34},"outputId":"c7052e87-deb7-4a0e-a369-a79b36e4a05b","executionInfo":{"status":"ok","timestamp":1532020808927,"user_tz":-120,"elapsed":9452,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["%matplotlib inline\n","import keras \n","import numpy as np \n","from keras.applications.vgg16 import VGG16\n","from keras.preprocessing.image import load_img\n","from keras.callbacks import ModelCheckpoint\n","import matplotlib.pyplot as plt\n","import itertools\n","from keras.models import Sequential\n","from keras.optimizers import Adam\n","from keras.preprocessing.image import ImageDataGenerator\n","import tensorflow as tf\n","from keras.layers import Dense, Flatten, Dropout\n","from tensorflow.python.client import device_lib\n","# keras library import for Saving and loading model and weights\n","from keras.models import model_from_json\n","from keras.models import load_model\n","from sklearn.metrics import confusion_matrix\n","# import cv2\n"],"execution_count":1,"outputs":[{"output_type":"stream","text":["Using TensorFlow backend.\n"],"name":"stderr"}]},{"metadata":{"id":"PvJ5x85ufbqQ","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":51},"outputId":"7a4c2f57-794b-4487-9109-f16efe13645b","executionInfo":{"status":"ok","timestamp":1532020837878,"user_tz":-120,"elapsed":27267,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["model = VGG16()"],"execution_count":2,"outputs":[{"output_type":"stream","text":["Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels.h5\n","553467904/553467096 [==============================] - 23s 0us/step\n"],"name":"stdout"}]},{"metadata":{"id":"01OiJnGygttp","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":918},"outputId":"45a26c9e-02ec-407a-b91b-9ccb94786408","executionInfo":{"status":"ok","timestamp":1532020838852,"user_tz":-120,"elapsed":924,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["model.summary()\n"],"execution_count":3,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","input_1 (InputLayer) (None, 224, 224, 3) 0 \n","_________________________________________________________________\n","block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n","_________________________________________________________________\n","block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n","_________________________________________________________________\n","block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n","_________________________________________________________________\n","block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n","_________________________________________________________________\n","block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n","_________________________________________________________________\n","block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n","_________________________________________________________________\n","block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n","_________________________________________________________________\n","block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n","_________________________________________________________________\n","block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n","_________________________________________________________________\n","block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n","_________________________________________________________________\n","block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n","_________________________________________________________________\n","block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n","_________________________________________________________________\n","block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n","_________________________________________________________________\n","block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n","_________________________________________________________________\n","block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n","_________________________________________________________________\n","block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n","_________________________________________________________________\n","block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n","_________________________________________________________________\n","block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n","_________________________________________________________________\n","flatten (Flatten) (None, 25088) 0 \n","_________________________________________________________________\n","fc1 (Dense) (None, 4096) 102764544 \n","_________________________________________________________________\n","fc2 (Dense) (None, 4096) 16781312 \n","_________________________________________________________________\n","predictions (Dense) (None, 1000) 4097000 \n","=================================================================\n","Total params: 138,357,544\n","Trainable params: 138,357,544\n","Non-trainable params: 0\n","_________________________________________________________________\n"],"name":"stdout"}]},{"metadata":{"id":"tMCJZF1auOGw","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":34},"outputId":"6154c3c7-8318-4c4f-ef26-fe12d2e61a22","executionInfo":{"status":"ok","timestamp":1532020840756,"user_tz":-120,"elapsed":1239,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["type(model)"],"execution_count":4,"outputs":[{"output_type":"execute_result","data":{"text/plain":["keras.engine.training.Model"]},"metadata":{"tags":[]},"execution_count":4}]},{"metadata":{"id":"4006AMvKuW65","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["\n","newModel = Sequential()\n","\n","for layer in model.layers:\n"," newModel.add(layer)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"8S1mxE8Rx-WS","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":918},"outputId":"bc1ce653-1d30-454c-94fb-166915010c1c","executionInfo":{"status":"ok","timestamp":1532020844484,"user_tz":-120,"elapsed":1507,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["newModel.summary()\n"],"execution_count":6,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","input_1 (InputLayer) (None, 224, 224, 3) 0 \n","_________________________________________________________________\n","block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n","_________________________________________________________________\n","block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n","_________________________________________________________________\n","block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n","_________________________________________________________________\n","block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n","_________________________________________________________________\n","block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n","_________________________________________________________________\n","block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n","_________________________________________________________________\n","block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n","_________________________________________________________________\n","block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n","_________________________________________________________________\n","block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n","_________________________________________________________________\n","block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n","_________________________________________________________________\n","block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n","_________________________________________________________________\n","block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n","_________________________________________________________________\n","block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n","_________________________________________________________________\n","block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n","_________________________________________________________________\n","block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n","_________________________________________________________________\n","block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n","_________________________________________________________________\n","block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n","_________________________________________________________________\n","block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n","_________________________________________________________________\n","flatten (Flatten) (None, 25088) 0 \n","_________________________________________________________________\n","fc1 (Dense) (None, 4096) 102764544 \n","_________________________________________________________________\n","fc2 (Dense) (None, 4096) 16781312 \n","_________________________________________________________________\n","predictions (Dense) (None, 1000) 4097000 \n","=================================================================\n","Total params: 138,357,544\n","Trainable params: 138,357,544\n","Non-trainable params: 0\n","_________________________________________________________________\n"],"name":"stdout"}]},{"metadata":{"id":"rlJ5PEzYyEm4","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":34},"outputId":"a005931c-ecb2-47dc-9f0f-4de8d8184180","executionInfo":{"status":"ok","timestamp":1532020846070,"user_tz":-120,"elapsed":818,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["newModel.layers.pop()"],"execution_count":7,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":7}]},{"metadata":{"id":"wTExDYzxyS7T","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":884},"outputId":"86500b15-3da0-4d00-c1d9-25dfa15e2991","executionInfo":{"status":"ok","timestamp":1532020848442,"user_tz":-120,"elapsed":1773,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["newModel.summary()\n"],"execution_count":8,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","input_1 (InputLayer) (None, 224, 224, 3) 0 \n","_________________________________________________________________\n","block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n","_________________________________________________________________\n","block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n","_________________________________________________________________\n","block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n","_________________________________________________________________\n","block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n","_________________________________________________________________\n","block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n","_________________________________________________________________\n","block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n","_________________________________________________________________\n","block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n","_________________________________________________________________\n","block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n","_________________________________________________________________\n","block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n","_________________________________________________________________\n","block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n","_________________________________________________________________\n","block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n","_________________________________________________________________\n","block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n","_________________________________________________________________\n","block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n","_________________________________________________________________\n","block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n","_________________________________________________________________\n","block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n","_________________________________________________________________\n","block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n","_________________________________________________________________\n","block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n","_________________________________________________________________\n","block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n","_________________________________________________________________\n","flatten (Flatten) (None, 25088) 0 \n","_________________________________________________________________\n","fc1 (Dense) (None, 4096) 102764544 \n","_________________________________________________________________\n","fc2 (Dense) (None, 4096) 16781312 \n","=================================================================\n","Total params: 134,260,544\n","Trainable params: 134,260,544\n","Non-trainable params: 0\n","_________________________________________________________________\n"],"name":"stdout"}]},{"metadata":{"id":"ngKuS3p_yYtd","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["for layer in newModel.layers:\n"," layer.trainable = False"],"execution_count":0,"outputs":[]},{"metadata":{"id":"9DZ29Udkyi57","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["\n","\n","newModel.add(Dense(2, activation='softmax'))"],"execution_count":0,"outputs":[]},{"metadata":{"id":"MKT-Vc1azGh2","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":918},"outputId":"3c8614f7-5a52-4485-bcd9-c843931e631a","executionInfo":{"status":"ok","timestamp":1532020853700,"user_tz":-120,"elapsed":1450,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["newModel.summary()"],"execution_count":11,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","input_1 (InputLayer) (None, 224, 224, 3) 0 \n","_________________________________________________________________\n","block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n","_________________________________________________________________\n","block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n","_________________________________________________________________\n","block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n","_________________________________________________________________\n","block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n","_________________________________________________________________\n","block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n","_________________________________________________________________\n","block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n","_________________________________________________________________\n","block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n","_________________________________________________________________\n","block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n","_________________________________________________________________\n","block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n","_________________________________________________________________\n","block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n","_________________________________________________________________\n","block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n","_________________________________________________________________\n","block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n","_________________________________________________________________\n","block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n","_________________________________________________________________\n","block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n","_________________________________________________________________\n","block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n","_________________________________________________________________\n","block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n","_________________________________________________________________\n","block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n","_________________________________________________________________\n","block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n","_________________________________________________________________\n","flatten (Flatten) (None, 25088) 0 \n","_________________________________________________________________\n","fc1 (Dense) (None, 4096) 102764544 \n","_________________________________________________________________\n","fc2 (Dense) (None, 4096) 16781312 \n","_________________________________________________________________\n","dense_1 (Dense) (None, 2) 2002 \n","=================================================================\n","Total params: 134,262,546\n","Trainable params: 2,002\n","Non-trainable params: 134,260,544\n","_________________________________________________________________\n"],"name":"stdout"}]},{"metadata":{"id":"R0kU2AunzL2f","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["\n","#Compiling Model \n","newModel.compile(Adam(lr=.0001), loss = 'categorical_crossentropy', metrics = ['accuracy'])"],"execution_count":0,"outputs":[]},{"metadata":{"id":"mOL3NK9K1zT3","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["\n","train_path = 'drive/Colab/Bachelor/dataset/train'\n","test_path = 'drive/Colab/Bachelor/dataset/test'\n","valid_path = 'drive/Colab/Bachelor/dataset/valid'"],"execution_count":0,"outputs":[]},{"metadata":{"id":"DVV2rJSzCZym","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":68},"outputId":"a491ef63-2e47-4623-c182-df0845730755","executionInfo":{"status":"ok","timestamp":1532022146314,"user_tz":-120,"elapsed":3047,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["\n","train_batches = ImageDataGenerator().flow_from_directory(train_path, target_size=(224,224), classes=['original', 'spliced'], batch_size=10, shuffle=True)\n","test_batches = ImageDataGenerator().flow_from_directory(test_path , target_size=(224,224), classes=['original', 'spliced'], batch_size=4)\n","valid_batches = ImageDataGenerator().flow_from_directory(valid_path, target_size=(224,224), classes=['original', 'spliced'], batch_size=10, shuffle=True)\n","\n","# imgs, labels = next(train_batches)\n","# labels = (train_batches.class_indices)\n","\n","# print(labels)\n","# plt.imshow(imgs[0])\n","\n"],"execution_count":26,"outputs":[{"output_type":"stream","text":["Found 1817 images belonging to 2 classes.\n","Found 20 images belonging to 2 classes.\n","Found 400 images belonging to 2 classes.\n"],"name":"stdout"}]},{"metadata":{"id":"rLphZErbZTlR","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["# checkpoint\n","filepath=\"drive/Colab/Bachelor/weights.best.hdf5\"\n","checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')\n","callbacks_list = [checkpoint]\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"XRal9u13aeM8","colab_type":"text"},"cell_type":"markdown","source":["### Is GPU Working?\n","\n","####To see if you are currently using the GPU in Colab, you can run the following code in order to cross-check:\n","\n"]},{"metadata":{"id":"ORvvp7Niada3","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":34},"outputId":"1e5fcf92-d599-4d33-baf1-bb653ff5ad82","executionInfo":{"status":"ok","timestamp":1531852089798,"user_tz":-120,"elapsed":595,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["tf.test.gpu_device_name()\n"],"execution_count":21,"outputs":[{"output_type":"execute_result","data":{"text/plain":["'/device:GPU:0'"]},"metadata":{"tags":[]},"execution_count":21}]},{"metadata":{"id":"cWOxid5jaoRJ","colab_type":"text"},"cell_type":"markdown","source":["### Which GPU Am I Using?\n"]},{"metadata":{"id":"2s9eyeDEatvq","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["device_lib.list_local_devices()\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"-OHrURCFa8D2","colab_type":"text"},"cell_type":"markdown","source":["### What about RAM?\n"]},{"metadata":{"id":"GPTA2QsBa_yM","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["!cat /proc/meminfo\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"hYVxfWjRbCs1","colab_type":"text"},"cell_type":"markdown","source":["### What about CPU?\n"]},{"metadata":{"id":"s1ADEIF3bGb8","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["!cat /proc/cpuinfo\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"DK2VWseE1KqB","colab_type":"text"},"cell_type":"markdown","source":["### Testing how many of The gpu RAM we have"]},{"metadata":{"id":"Ve0gngfr1J6I","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":357},"outputId":"c350cb44-b27b-454b-a210-b8d09edba8e8","executionInfo":{"status":"ok","timestamp":1532022323152,"user_tz":-120,"elapsed":10514,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["# memory footprint support libraries/code\n","!ln -sf /opt/bin/nvidia-smi /usr/bin/nvidia-smi\n","!pip install gputil\n","!pip install psutil\n","!pip install humanize\n","import psutil\n","import humanize\n","import os\n","import GPUtil as GPU\n","GPUs = GPU.getGPUs()\n","# XXX: only one GPU on Colab and isn’t guaranteed\n","gpu = GPUs[0]\n","def printm():\n"," process = psutil.Process(os.getpid())\n"," print(\"Gen RAM Free: \" + humanize.naturalsize( psutil.virtual_memory().available ), \" | Proc size: \" + humanize.naturalsize( process.memory_info().rss))\n"," print(\"GPU RAM Free: {0:.0f}MB | Used: {1:.0f}MB | Util {2:3.0f}% | Total {3:.0f}MB\".format(gpu.memoryFree, gpu.memoryUsed, gpu.memoryUtil*100, gpu.memoryTotal))\n","printm()\n"],"execution_count":29,"outputs":[{"output_type":"stream","text":["Collecting gputil\n"," Downloading https://files.pythonhosted.org/packages/45/99/837428d26b47ebd6b66d6e1b180e98ec4a557767a93a81a02ea9d6242611/GPUtil-1.3.0.tar.gz\n","Requirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages (from gputil) (1.14.5)\n","Building wheels for collected packages: gputil\n"," Running setup.py bdist_wheel for gputil ... \u001b[?25l-\b \bdone\n","\u001b[?25h Stored in directory: /content/.cache/pip/wheels/17/0f/04/b79c006972335e35472c0b835ed52bfc0815258d409f560108\n","Successfully built gputil\n","Installing collected packages: gputil\n","Successfully installed gputil-1.3.0\n","Requirement already satisfied: psutil in /usr/local/lib/python3.6/dist-packages (5.4.6)\n","Collecting humanize\n"," Downloading https://files.pythonhosted.org/packages/8c/e0/e512e4ac6d091fc990bbe13f9e0378f34cf6eecd1c6c268c9e598dcf5bb9/humanize-0.5.1.tar.gz\n","Building wheels for collected packages: humanize\n"," Running setup.py bdist_wheel for humanize ... \u001b[?25l-\b \bdone\n","\u001b[?25h Stored in directory: /content/.cache/pip/wheels/69/86/6c/f8b8593bc273ec4b0c653d3827f7482bb2001a2781a73b7f44\n","Successfully built humanize\n","Installing collected packages: humanize\n","Successfully installed humanize-0.5.1\n","Gen RAM Free: 10.6 GB | Proc size: 3.2 GB\n","GPU RAM Free: 501MB | Used: 10938MB | Util 96% | Total 11439MB\n"],"name":"stdout"}]},{"metadata":{"id":"qgrL3iIIayO8","colab_type":"text"},"cell_type":"markdown","source":["#Train The Model"]},{"metadata":{"id":"ktcr5pWg96S4","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["newModel.fit_generator(train_batches, steps_per_epoch=182, validation_data=valid_batches, validation_steps=40, epochs=100, callbacks=callbacks_list, verbose=2)\n","\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"mp9JV3_gq8sP","colab_type":"text"},"cell_type":"markdown","source":["## Resuming Training from a checkpoint"]},{"metadata":{"id":"Zcoq3tj0rB0C","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["newModel.load_weights(\"drive/Colab/Bachelor/weights.best.hdf5\")\n","newModel.fit_generator(train_batches, steps_per_epoch=182, validation_data=valid_batches, validation_steps=40, epochs=100, callbacks=callbacks_list, verbose=2)\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"khtIduvq85c8","colab_type":"text"},"cell_type":"markdown","source":["## Saving The Model"]},{"metadata":{"id":"cPPhoTEb88w_","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["# newModel.save('drive/Colab/Bachelor/CNNImageSplicingDetectorModel.h5') # creates a HDF5 file 'my_model.h5'\n","\n","\n","\n","\n","# serialize model to JSON\n","# the keras model which is trained is defined as 'model' in this example\n","model_json = newModel.to_json()\n","\n","\n","with open(\"drive/Colab/Bachelor/CNNImageSplicingDetectorModel.json\", \"w\") as json_file:\n"," json_file.write(model_json)\n","\n","# serialize weights to HDF5\n","newModel.save_weights(\"drive/Colab/Bachelor/CNNImageSplicingDetectorModelWeights.h5\")\n","\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"7NLJuVMZ4SHd","colab_type":"text"},"cell_type":"markdown","source":["## Making a predection with our Model"]},{"metadata":{"id":"3D9vJ4DTE0sE","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["def plot_confusion_matrix(cm, classes,\n"," normalize=False,\n"," title='Confusion matrix',\n"," cmap=plt.cm.Blues):\n"," \"\"\"\n"," This function prints and plots the confusion matrix.\n"," Normalization can be applied by setting `normalize=True`.\n"," \"\"\"\n"," if normalize:\n"," cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n"," print(\"Normalized confusion matrix\")\n"," else:\n"," print('Confusion matrix, without normalization')\n","\n"," print(cm)\n","\n"," plt.imshow(cm, interpolation='nearest', cmap=cmap)\n"," plt.title(title)\n"," plt.colorbar()\n"," tick_marks = np.arange(len(classes))\n"," plt.xticks(tick_marks, classes, rotation=45)\n"," plt.yticks(tick_marks, classes)\n","\n"," fmt = '.2f' if normalize else 'd'\n"," thresh = cm.max() / 2.\n"," for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n"," plt.text(j, i, format(cm[i, j], fmt),\n"," horizontalalignment=\"center\",\n"," color=\"white\" if cm[i, j] > thresh else \"black\")\n","\n"," plt.tight_layout()\n"," plt.ylabel('True label')\n"," plt.xlabel('Predicted label')\n","\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"2ozqWwzYPRxi","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["newModel.summary()"],"execution_count":0,"outputs":[]},{"metadata":{"id":"93XDEhR-E1gK","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"base_uri":"https://localhost:8080/","height":34},"outputId":"a2399c86-b185-4a66-f864-ca8bf72a0717","executionInfo":{"status":"ok","timestamp":1531831312228,"user_tz":-120,"elapsed":1755,"user":{"displayName":"Moustafa Mahmoud","photoUrl":"//lh3.googleusercontent.com/-W8qOa4TKGUM/AAAAAAAAAAI/AAAAAAAAXmY/zCfVgZD1VrY/s50-c-k-no/photo.jpg","userId":"110695426940081736535"}}},"cell_type":"code","source":["\n","\n","test_imgs, test_labels = next(test_batches)\n","\n","\n","test_labels = test_labels[:,0]\n","\n","test_labels\n","\n"],"execution_count":74,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([1., 0., 0., 1.], dtype=float32)"]},"metadata":{"tags":[]},"execution_count":74}]},{"metadata":{"id":"YO5MvOxgPQnT","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["\n","predections = newModel.predict_generator(test_batches, steps=1, verbose=0)\n","\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"8xqp7trLPrXP","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["print (test_labels)\n","print (np.round(predections[:,0]))\n","\n","cn = confusion_matrix(test_labels, np.round(predections[:,0]))\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"SkXFhiDpPsE2","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["cn_plot_labels = ['original', 'spliced']\n","\n","\n","plot_confusion_matrix(cn , cn_plot_labels, title='Confusion matrix')"],"execution_count":0,"outputs":[]}]} -------------------------------------------------------------------------------- /dataset/test/original/AU_TS_H_008.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/original/AU_TS_H_008.bmp -------------------------------------------------------------------------------- /dataset/test/original/AU_TS_H_009.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/original/AU_TS_H_009.bmp -------------------------------------------------------------------------------- /dataset/test/original/AU_TS_H_010.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/original/AU_TS_H_010.bmp -------------------------------------------------------------------------------- /dataset/test/original/AU_TS_H_011.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/original/AU_TS_H_011.bmp -------------------------------------------------------------------------------- /dataset/test/original/AU_TS_H_012.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/original/AU_TS_H_012.bmp -------------------------------------------------------------------------------- /dataset/test/original/AU_TS_H_013.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/original/AU_TS_H_013.bmp -------------------------------------------------------------------------------- /dataset/test/original/AU_TS_H_014.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/original/AU_TS_H_014.bmp -------------------------------------------------------------------------------- /dataset/test/spliced/SP_TT_H_004.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/spliced/SP_TT_H_004.bmp -------------------------------------------------------------------------------- /dataset/test/spliced/SP_TT_H_005.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/spliced/SP_TT_H_005.bmp -------------------------------------------------------------------------------- /dataset/test/spliced/SP_TT_H_006.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/spliced/SP_TT_H_006.bmp -------------------------------------------------------------------------------- /dataset/test/spliced/SP_TT_H_007.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/spliced/SP_TT_H_007.bmp -------------------------------------------------------------------------------- /dataset/test/spliced/SP_TT_H_008.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/spliced/SP_TT_H_008.bmp -------------------------------------------------------------------------------- /dataset/test/spliced/SP_TT_H_009.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/test/spliced/SP_TT_H_009.bmp -------------------------------------------------------------------------------- /dataset/train/original/AU_S_009.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/original/AU_S_009.bmp -------------------------------------------------------------------------------- /dataset/train/original/AU_S_010.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/original/AU_S_010.bmp -------------------------------------------------------------------------------- /dataset/train/original/AU_S_011.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/original/AU_S_011.bmp -------------------------------------------------------------------------------- /dataset/train/original/AU_S_012.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/original/AU_S_012.bmp -------------------------------------------------------------------------------- /dataset/train/original/AU_S_013.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/original/AU_S_013.bmp -------------------------------------------------------------------------------- /dataset/train/original/AU_S_014.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/original/AU_S_014.bmp -------------------------------------------------------------------------------- /dataset/train/original/AU_S_015.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/original/AU_S_015.bmp -------------------------------------------------------------------------------- /dataset/train/original/AU_S_016.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/original/AU_S_016.bmp -------------------------------------------------------------------------------- /dataset/train/spliced/SP_TT_H_010.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/spliced/SP_TT_H_010.bmp -------------------------------------------------------------------------------- /dataset/train/spliced/SP_TT_H_011.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/spliced/SP_TT_H_011.bmp -------------------------------------------------------------------------------- /dataset/train/spliced/SP_TT_H_012.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/spliced/SP_TT_H_012.bmp -------------------------------------------------------------------------------- /dataset/train/spliced/SP_TT_H_013.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/spliced/SP_TT_H_013.bmp -------------------------------------------------------------------------------- /dataset/train/spliced/SP_TT_H_014.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/spliced/SP_TT_H_014.bmp -------------------------------------------------------------------------------- /dataset/train/spliced/SP_TT_H_015.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/spliced/SP_TT_H_015.bmp -------------------------------------------------------------------------------- /dataset/train/spliced/SP_TT_H_016.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/spliced/SP_TT_H_016.bmp -------------------------------------------------------------------------------- /dataset/train/spliced/SP_TT_H_017.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/spliced/SP_TT_H_017.bmp -------------------------------------------------------------------------------- /dataset/train/spliced/SP_TT_H_018.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/spliced/SP_TT_H_018.bmp -------------------------------------------------------------------------------- /dataset/train/spliced/SP_TT_H_019.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/train/spliced/SP_TT_H_019.bmp -------------------------------------------------------------------------------- /dataset/valid/original/AU_S_001.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/valid/original/AU_S_001.bmp -------------------------------------------------------------------------------- /dataset/valid/original/AU_S_002.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/valid/original/AU_S_002.bmp -------------------------------------------------------------------------------- /dataset/valid/original/AU_S_003.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/valid/original/AU_S_003.bmp -------------------------------------------------------------------------------- /dataset/valid/original/AU_S_004.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/valid/original/AU_S_004.bmp -------------------------------------------------------------------------------- /dataset/valid/original/AU_S_005.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/valid/original/AU_S_005.bmp -------------------------------------------------------------------------------- /dataset/valid/original/AU_S_006.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/valid/original/AU_S_006.bmp -------------------------------------------------------------------------------- /dataset/valid/spliced/SP_S_005.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/valid/spliced/SP_S_005.bmp -------------------------------------------------------------------------------- /dataset/valid/spliced/SP_S_006.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/valid/spliced/SP_S_006.bmp -------------------------------------------------------------------------------- /dataset/valid/spliced/SP_S_007.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/valid/spliced/SP_S_007.bmp -------------------------------------------------------------------------------- /dataset/valid/spliced/SP_S_008.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/valid/spliced/SP_S_008.bmp -------------------------------------------------------------------------------- /dataset/valid/spliced/SP_S_009.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MostafaMhmod/image-Splicing-Detection/07ecb24d4f6b985ae4afa826d8189af54f8ddacb/dataset/valid/spliced/SP_S_009.bmp -------------------------------------------------------------------------------- /model/CNNImageSplicingDetectorModel.json: -------------------------------------------------------------------------------- 1 | {"class_name": "Sequential", "config": [{"class_name": "InputLayer", "config": {"batch_input_shape": [null, 224, 224, 3], "dtype": "float32", "sparse": false, "name": "input_1"}}, {"class_name": "Conv2D", "config": {"name": "block1_conv1", "trainable": false, "filters": 64, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Conv2D", "config": {"name": "block1_conv2", "trainable": false, "filters": 64, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "MaxPooling2D", "config": {"name": "block1_pool", "trainable": false, "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}}, {"class_name": "Conv2D", "config": {"name": "block2_conv1", "trainable": false, "filters": 128, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Conv2D", "config": {"name": "block2_conv2", "trainable": false, "filters": 128, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "MaxPooling2D", "config": {"name": "block2_pool", "trainable": false, "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}}, {"class_name": "Conv2D", "config": {"name": "block3_conv1", "trainable": false, "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Conv2D", "config": {"name": "block3_conv2", "trainable": false, "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Conv2D", "config": {"name": "block3_conv3", "trainable": false, "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "MaxPooling2D", "config": {"name": "block3_pool", "trainable": false, "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}}, {"class_name": "Conv2D", "config": {"name": "block4_conv1", "trainable": false, "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Conv2D", "config": {"name": "block4_conv2", "trainable": false, "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Conv2D", "config": {"name": "block4_conv3", "trainable": false, "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "MaxPooling2D", "config": {"name": "block4_pool", "trainable": false, "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}}, {"class_name": "Conv2D", "config": {"name": "block5_conv1", "trainable": false, "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Conv2D", "config": {"name": "block5_conv2", "trainable": false, "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Conv2D", "config": {"name": "block5_conv3", "trainable": false, "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "MaxPooling2D", "config": {"name": "block5_pool", "trainable": false, "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}}, {"class_name": "Flatten", "config": {"name": "flatten", "trainable": false, "data_format": "channels_last"}}, {"class_name": "Dense", "config": {"name": "fc1", "trainable": false, "units": 4096, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Dense", "config": {"name": "fc2", "trainable": false, "units": 4096, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Dense", "config": {"name": "dense_1", "trainable": true, "units": 2, "activation": "softmax", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}], "keras_version": "2.1.6", "backend": "tensorflow"} --------------------------------------------------------------------------------