{"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceType":"competition","sourceId":87323,"databundleVersionId":9934427},{"sourceType":"datasetVersion","sourceId":10898470,"datasetId":6497042,"databundleVersionId":11267120},{"sourceType":"datasetVersion","sourceId":10343032,"datasetId":6019812,"databundleVersionId":10651617},{"sourceType":"datasetVersion","sourceId":10256576,"datasetId":6043869,"databundleVersionId":10554109},{"sourceType":"datasetVersion","sourceId":11297571,"datasetId":6531517,"databundleVersionId":11717967},{"sourceType":"datasetVersion","sourceId":11287321,"datasetId":6532121,"databundleVersionId":11706537}],"dockerImageVersionId":30787,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true},"papermill":{"default_parameters":{},"duration":373.317579,"end_time":"2024-11-10T09:08:35.450698","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2024-11-10T09:02:22.133119","version":"2.6.0"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import warnings\nwarnings.simplefilter(action='ignore')\n\nimport argparse\nimport os,cv2\nimport random,numpy,pandas\nimport os\nos.environ['CUBLAS_WORKSPACE_CONFIG'] = ':4096:8'  # Must come before torch\n","metadata":{"papermill":{"duration":1.240921,"end_time":"2024-11-10T09:02:26.525009","exception":false,"start_time":"2024-11-10T09:02:25.284088","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:37:44.633800Z","iopub.execute_input":"2025-04-06T12:37:44.634177Z","iopub.status.idle":"2025-04-06T12:37:44.639175Z","shell.execute_reply.started":"2025-04-06T12:37:44.634132Z","shell.execute_reply":"2025-04-06T12:37:44.638193Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import argparse\nimport os\nimport random,numpy\nimport torch\nimport torch.nn as nn\nimport torch.nn.parallel\nimport torch.optim as optim\nimport torch.nn.functional as F\nimport torch.utils.data\nimport torchvision\nimport torchvision.datasets as dset\nimport torchvision.transforms as transforms\nimport torchvision.transforms.functional as TF\nimport torchvision.utils as vutils\nfrom torchvision.models.feature_extraction import create_feature_extractor\nfrom PIL import Image\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.animation as animation","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","papermill":{"duration":5.413151,"end_time":"2024-11-10T09:02:31.943242","exception":false,"start_time":"2024-11-10T09:02:26.530091","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:38:04.178755Z","iopub.execute_input":"2025-04-06T12:38:04.179414Z","iopub.status.idle":"2025-04-06T12:38:04.184767Z","shell.execute_reply.started":"2025-04-06T12:38:04.179379Z","shell.execute_reply":"2025-04-06T12:38:04.183896Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"seed = 999\nprint(\"Random Seed: \", seed)\nrandom.seed(seed)\nnp.random.seed(seed)\ntorch.manual_seed(seed)\ntorch.cuda.manual_seed(seed)\ntorch.cuda.manual_seed_all(seed)  # if you are using multi-GPU.\ntorch.backends.cudnn.deterministic = False\ntorch.backends.cudnn.benchmark = True\ntorch.use_deterministic_algorithms(False)\n","metadata":{"papermill":{"duration":0.029708,"end_time":"2024-11-10T09:02:31.977745","exception":false,"start_time":"2024-11-10T09:02:31.948037","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:38:04.698961Z","iopub.execute_input":"2025-04-06T12:38:04.699317Z","iopub.status.idle":"2025-04-06T12:38:04.706235Z","shell.execute_reply.started":"2025-04-06T12:38:04.699285Z","shell.execute_reply":"2025-04-06T12:38:04.705376Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"ngpu=1\nngf,nc = 3,3\nndf = 64\n\nfsc_test={}\n\ntransform = transforms.Compose([\n    transforms.Resize((450,450)),\n    transforms.RandomRotation(15),\n    transforms.RandomHorizontalFlip(p=0.5),\n    transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.1),\n    transforms.ToTensor(),\n    transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])\n])\nz=['WhatsApp Image 2025-01-08 at 4.06.35 PM.jpeg','WhatsApp Image 2025-01-23 at 3.53.52 PM.jpeg']\nfor i in z:\n    cv2.imwrite(f'/kaggle/working/{i}' ,cv2.cvtColor(cv2.imread(f'/kaggle/input/total-mata/{i}'),cv2.COLOR_BGR2HSV))\n    fsc_test[i]=transform(Image.open(f'/kaggle/working/{i}'))\n\ndevice = torch.device(\"cuda:0\" if (torch.cuda.is_available() and ngpu > 0) else \"cpu\")","metadata":{"papermill":{"duration":4.791815,"end_time":"2024-11-10T09:02:36.777068","exception":false,"start_time":"2024-11-10T09:02:31.985253","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:38:04.723429Z","iopub.execute_input":"2025-04-06T12:38:04.723696Z","iopub.status.idle":"2025-04-06T12:38:04.866593Z","shell.execute_reply.started":"2025-04-06T12:38:04.723671Z","shell.execute_reply":"2025-04-06T12:38:04.865676Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.imshow(cv2.cvtColor(cv2.imread(f'/kaggle/input/total-mata/WhatsApp Image 2025-01-08 at 4.06.35 PM.jpeg'), \n                       cv2.COLOR_BGR2RGB))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:38:04.868383Z","iopub.execute_input":"2025-04-06T12:38:04.868750Z","iopub.status.idle":"2025-04-06T12:38:05.396025Z","shell.execute_reply.started":"2025-04-06T12:38:04.868711Z","shell.execute_reply":"2025-04-06T12:38:05.395158Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.imshow(cv2.imread(f'/kaggle/working/{z[0]}'))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:38:05.893560Z","iopub.execute_input":"2025-04-06T12:38:05.894165Z","iopub.status.idle":"2025-04-06T12:38:06.433533Z","shell.execute_reply.started":"2025-04-06T12:38:05.894130Z","shell.execute_reply":"2025-04-06T12:38:06.432650Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.imshow(cv2.cvtColor(cv2.imread(f'/kaggle/input/total-mata/WhatsApp Image 2025-01-23 at 3.53.52 PM.jpeg'), \n                       cv2.COLOR_BGR2RGB))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:38:07.730211Z","iopub.execute_input":"2025-04-06T12:38:07.731010Z","iopub.status.idle":"2025-04-06T12:38:08.108320Z","shell.execute_reply.started":"2025-04-06T12:38:07.730977Z","shell.execute_reply":"2025-04-06T12:38:08.107395Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.imshow(cv2.imread(f'/kaggle/working/{z[1]}'))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:38:08.109673Z","iopub.execute_input":"2025-04-06T12:38:08.109948Z","iopub.status.idle":"2025-04-06T12:38:08.587470Z","shell.execute_reply.started":"2025-04-06T12:38:08.109916Z","shell.execute_reply":"2025-04-06T12:38:08.586641Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"class EffnetModel(torch.nn.Module):\n    def __init__(self):\n        super().__init__()\n        effnet = torchvision.models.efficientnet_v2_m(weights=torchvision.models.efficientnet.EfficientNet_V2_M_Weights.DEFAULT)\n        self.model = create_feature_extractor(effnet, ['flatten'])\n        self.nn_fracture = torch.nn.Sequential(\n            torch.nn.Linear(1280, 1)\n        )\n    def forward(self, x):\n        x = self.model(x)['flatten']\n        x = self.nn_fracture(x)\n        return x","metadata":{"papermill":{"duration":0.017243,"end_time":"2024-11-10T09:02:36.799751","exception":false,"start_time":"2024-11-10T09:02:36.782508","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:38:08.589196Z","iopub.execute_input":"2025-04-06T12:38:08.589539Z","iopub.status.idle":"2025-04-06T12:38:08.597027Z","shell.execute_reply.started":"2025-04-06T12:38:08.589503Z","shell.execute_reply":"2025-04-06T12:38:08.596057Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"EFF_NET = EffnetModel().float()\nEFF_NET= nn.DataParallel(EFF_NET).to(device)\n#EFF_NET\n#EFF_NET.load_state_dict(torch.load(\"/kaggle/input/d/mafiosoquasar/fake-scene-classification-model-2/0.00015554654237348586 87.0.pth\",weights_only=False,map_location=torch.device('cpu')))","metadata":{"papermill":{"duration":4.475542,"end_time":"2024-11-10T09:02:41.280238","exception":false,"start_time":"2024-11-10T09:02:36.804696","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:38:08.958477Z","iopub.execute_input":"2025-04-06T12:38:08.958822Z","iopub.status.idle":"2025-04-06T12:38:10.272318Z","shell.execute_reply.started":"2025-04-06T12:38:08.958792Z","shell.execute_reply":"2025-04-06T12:38:10.271589Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"fsc_submission=pandas.read_csv(\"/kaggle/input/cidaut-ai-fake-scene-classification-2024/sample_submission.csv\", index_col =\"image\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:38:10.274066Z","iopub.execute_input":"2025-04-06T12:38:10.274443Z","iopub.status.idle":"2025-04-06T12:38:10.288660Z","shell.execute_reply.started":"2025-04-06T12:38:10.274405Z","shell.execute_reply":"2025-04-06T12:38:10.288055Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sub = [0]*len(z)\nfile_ = ['0.00010798667062772438 47.pth']#os.listdir('/kaggle/input/d/mafiosoquasar/fake-scene-classification-model-2/')\n\nfor j in file_:\n    print(j)\n    z_add,z_total=0,0\n    EFF_NET.load_state_dict(torch.load(f\"/kaggle/input/fake-scene-classification-model-2/{j}\", \n                                       weights_only=False, map_location=torch.device('cpu')))\n    for i,j in zip(z,range(len(z))):\n        \n        img=fsc_test[i].reshape((1, 3, 450, 450)).float().to(device)\n        sub[j] += EFF_NET(img).sigmoid().cpu().detach().numpy()[0][0]","metadata":{"trusted":true,"scrolled":true,"execution":{"iopub.status.busy":"2025-04-06T12:38:10.289711Z","iopub.execute_input":"2025-04-06T12:38:10.290463Z","iopub.status.idle":"2025-04-06T12:38:11.559965Z","shell.execute_reply.started":"2025-04-06T12:38:10.290424Z","shell.execute_reply":"2025-04-06T12:38:11.559304Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"submission=pandas.DataFrame({'image' : z, \n                             'label' : 1-numpy.array(sub)})\npandas.DataFrame(submission).to_csv(f\"submission.csv\", index=False)\npandas.DataFrame(submission)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:39:02.078970Z","iopub.execute_input":"2025-04-06T12:39:02.079756Z","iopub.status.idle":"2025-04-06T12:39:02.150158Z","shell.execute_reply.started":"2025-04-06T12:39:02.079722Z","shell.execute_reply":"2025-04-06T12:39:02.149058Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import warnings\nwarnings.simplefilter(action='ignore')\n\nimport os\nimport cv2\nimport random\nimport numpy as np\nimport pandas as pd\nimport torch\nimport torch.nn as nn\nimport torchvision\nfrom torchvision.models.feature_extraction import create_feature_extractor\nfrom torch.utils.data import DataLoader, TensorDataset\nfrom PIL import Image\nimport matplotlib.pyplot as plt\n\n# Set deterministic behavior\nseed = 999\nprint(\"Random Seed: \", seed)\nrandom.seed(seed)\nnp.random.seed(seed)\ntorch.manual_seed(seed)\ntorch.cuda.manual_seed(seed)\ntorch.cuda.manual_seed_all(seed)\ntorch.backends.cudnn.deterministic = True\ntorch.backends.cudnn.benchmark = False\ntorch.use_deterministic_algorithms(False)\n\n# Device setup\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n\n# Show an example image\nplt.imshow(cv2.cvtColor(cv2.imread('/kaggle/input/total-mata/WhatsApp Image 2025-01-08 at 4.06.35 PM.jpeg'), cv2.COLOR_BGR2RGB))\nplt.axis('off')\nplt.show()\n\n# Hyperparameters\nbatch_size = 8\nlearning_rate = 0.00001  # Used if training\n\n# Model class\nclass EffnetModel(nn.Module):\n    def __init__(self):\n        super().__init__()\n        effnet = torchvision.models.efficientnet_v2_m(\n            weights=torchvision.models.EfficientNet_V2_M_Weights.DEFAULT\n        )\n        self.model = create_feature_extractor(effnet, ['flatten'])\n        self.nn_fracture = nn.Sequential(\n            nn.Linear(1280, 1)\n        )\n    def forward(self, x):\n        x = self.model(x)['flatten']\n        x = self.nn_fracture(x)\n        return x\n\n# Initialize model\nEFF_NET = EffnetModel().float()\nEFF_NET = nn.DataParallel(EFF_NET).to(device)\n\n# Load model weights\nmodel_path = \"/kaggle/input/fake-scene-classification-model-2/0.00010798667062772438 47.pth\"\nEFF_NET.load_state_dict(torch.load(model_path, map_location=device))\n\n# Load sample submission to get image names\nsubmission_df = pd.read_csv(\"/kaggle/input/cidaut-ai-fake-scene-classification-2024/sample_submission.csv\", index_col=\"image\")\nz = submission_df.index.tolist()\n\n# Load and preprocess test images\ndef preprocess_image(img_path):\n    img = Image.open(img_path).convert(\"RGB\")\n    transform = torchvision.transforms.Compose([\n        torchvision.transforms.Resize((450, 450)),\n        torchvision.transforms.ToTensor(),\n    ])\n    return transform(img)\n\nfsc_test = []\ntest_image_dir = \"/kaggle/input/cidaut-ai-fake-scene-classification-2024/Test\"\nfor image_name in z:\n    img_path = os.path.join(test_image_dir, image_name)\n    img_tensor = preprocess_image(img_path)\n    fsc_test.append(img_tensor)\n\nfsc_test_tensor = torch.stack(fsc_test)  # Shape: (N, 3, 450, 450)\n\n# Create DataLoader for inference\ntest_dataset = TensorDataset(fsc_test_tensor)\ntest_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False)\n\n# Run inference\nEFF_NET.eval()\nsub = []\n\nwith torch.no_grad():\n    for batch in test_loader:\n        imgs = batch[0].to(device)\n        preds = EFF_NET(imgs).sigmoid().cpu().numpy().flatten()\n        sub.extend(preds)\n\n# Save submission\nsubmission = pd.DataFrame({\n    'image': z,\n    'label': 1 - np.array(sub)\n})\nsubmission.to_csv(\"submission.csv\", index=False)\nprint(submission.head())\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:49:01.174388Z","iopub.execute_input":"2025-04-06T12:49:01.174777Z","iopub.status.idle":"2025-04-06T12:49:08.386102Z","shell.execute_reply.started":"2025-04-06T12:49:01.174746Z","shell.execute_reply":"2025-04-06T12:49:08.385154Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from PIL import Image\nimport torch\nimport torchvision.transforms as transforms\nimport torchvision\n\n# Function to predict a single image\ndef predict_image(image_path, model, device):\n    model.eval()\n    \n    # Define transform\n    transform = transforms.Compose([\n        transforms.Resize((450, 450)),\n        transforms.ToTensor(),\n    ])\n    \n    # Load and preprocess image\n    img = Image.open(image_path).convert(\"RGB\")\n    img_tensor = transform(img).unsqueeze(0).to(device)  # Shape: (1, 3, 450, 450)\n\n    # Forward pass\n    with torch.no_grad():\n        output = model(img_tensor)\n        probability = torch.sigmoid(output).item()\n    \n    print(f\"Predicted probability of being FAKE: {probability:.4f}\")\n    print(f\"Label: {'FAKE' if probability < 0.6 else 'REAL'}\")\n    return probability\n\n# Example usage\nimage_path = ['/kaggle/input/govindan-mata/edit.jpg','/kaggle/input/govindan-mata/edit2.jpg','/kaggle/input/govindan-mata/edit1.jpg','/kaggle/input/govindan-mata/edit3.jpg','/kaggle/input/govindan-mata/edit4.jpg','/kaggle/input/govindan-mata/edit5.jpg']\nfor i in image_path:\n    predict_image(i, EFF_NET, device)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-06T12:51:59.369145Z","iopub.execute_input":"2025-04-06T12:51:59.369749Z","iopub.status.idle":"2025-04-06T12:51:59.646284Z","shell.execute_reply.started":"2025-04-06T12:51:59.369716Z","shell.execute_reply":"2025-04-06T12:51:59.645428Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}