{"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":"nvidiaTeslaT4","dataSources":[{"sourceId":87323,"databundleVersionId":9934427,"sourceType":"competition"},{"sourceId":1176433,"sourceType":"datasetVersion","datasetId":667903},{"sourceId":3134515,"sourceType":"datasetVersion","datasetId":1909705},{"sourceId":10256576,"sourceType":"datasetVersion","datasetId":6043869},{"sourceId":11369672,"sourceType":"datasetVersion","datasetId":7117359}],"dockerImageVersionId":30787,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true},"papermill":{"default_parameters":{},"duration":2205.576184,"end_time":"2024-11-09T19:48:52.876377","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2024-11-09T19:12:07.300193","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,math\nimport random,numpy,pandas\nos.environ['CUBLAS_WORKSPACE_CONFIG'] = ':4096:8'","metadata":{"papermill":{"duration":0.912758,"end_time":"2024-11-09T19:12:11.015388","exception":false,"start_time":"2024-11-09T19:12:10.10263","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T13:40:45.673353Z","iopub.execute_input":"2025-04-16T13:40:45.673684Z","iopub.status.idle":"2025-04-16T13:40:48.141077Z","shell.execute_reply.started":"2025-04-16T13:40:45.673644Z","shell.execute_reply":"2025-04-16T13:40:48.140109Z"}},"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\nfrom torch.optim.lr_scheduler import ReduceLROnPlateau\nimport torchvision\nimport torchvision.datasets as dset\nimport torchvision.transforms as transforms\nfrom torchvision.models.feature_extraction import create_feature_extractor\nimport torchvision.utils as vutils\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.animation as animation\nfrom sklearn.metrics import accuracy_score\nfrom sklearn.metrics import r2_score","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","papermill":{"duration":4.886201,"end_time":"2024-11-09T19:12:15.90517","exception":false,"start_time":"2024-11-09T19:12:11.018969","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T13:40:48.142863Z","iopub.execute_input":"2025-04-16T13:40:48.143253Z","iopub.status.idle":"2025-04-16T13:40:55.688352Z","shell.execute_reply.started":"2025-04-16T13:40:48.143222Z","shell.execute_reply":"2025-04-16T13:40:55.687695Z"}},"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 = True\ntorch.backends.cudnn.benchmark = False\ntorch.use_deterministic_algorithms(True)","metadata":{"papermill":{"duration":0.019217,"end_time":"2024-11-09T19:12:15.927909","exception":false,"start_time":"2024-11-09T19:12:15.908692","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T13:40:55.689364Z","iopub.execute_input":"2025-04-16T13:40:55.689793Z","iopub.status.idle":"2025-04-16T13:40:55.707326Z","shell.execute_reply.started":"2025-04-16T13:40:55.689763Z","shell.execute_reply":"2025-04-16T13:40:55.70661Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"workers = 2\nbatch_size = 2\nnz = 100\nnum_epochs = 5\nlr = 0.0001\nbeta1 = 0.5\nngpu=1\nngf,nc = 3,3\nndf = 64\n\ntransform = transforms.Compose([\n    transforms.Resize(256),\n    transforms.RandomRotation(15),\n    transforms.RandomHorizontalFlip(),\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])\ntrain = torchvision.datasets.ImageFolder(root=f'/kaggle/input/deepfake-and-real-images/Dataset/Train',transform=transform)\n\ndataloader = torch.utils.data.DataLoader(train,batch_size=batch_size,shuffle=True,num_workers=2)\n\n#print(len(dataloader),len(testloader))\ndevice = torch.device(\"cuda\" if (torch.cuda.is_available() and ngpu > 0) else \"cpu\")","metadata":{"papermill":{"duration":0.181366,"end_time":"2024-11-09T19:12:16.112449","exception":false,"start_time":"2024-11-09T19:12:15.931083","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T13:40:55.708236Z","iopub.execute_input":"2025-04-16T13:40:55.708475Z","iopub.status.idle":"2025-04-16T13:44:39.935811Z","shell.execute_reply.started":"2025-04-16T13:40:55.70845Z","shell.execute_reply":"2025-04-16T13:44:39.934836Z"}},"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_l(\n            weights=torchvision.models.EfficientNet_V2_L_Weights.DEFAULT\n        )\n        self.model = create_feature_extractor(effnet, ['flatten'])\n        self.nn_fracture = torch.nn.Sequential(\n            torch.nn.Linear(1280, 2)  # For 2-class classification\n        )\n\n    def forward(self, x):\n        x = self.model(x)['flatten']\n        x = self.nn_fracture(x)\n        return x\n","metadata":{"papermill":{"duration":0.011904,"end_time":"2024-11-09T19:12:16.127707","exception":false,"start_time":"2024-11-09T19:12:16.115803","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T13:44:39.937158Z","iopub.execute_input":"2025-04-16T13:44:39.9379Z","iopub.status.idle":"2025-04-16T13:44:39.943459Z","shell.execute_reply.started":"2025-04-16T13:44:39.937851Z","shell.execute_reply":"2025-04-16T13:44:39.942618Z"}},"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(f\"/kaggle/input/fsc-dataset/8.072827768046409e-05 88.0.pth\",weights_only=False,map_location=torch.device('cpu')))","metadata":{"papermill":{"duration":1.021575,"end_time":"2024-11-09T19:12:17.152353","exception":false,"start_time":"2024-11-09T19:12:16.130778","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T13:44:39.945582Z","iopub.execute_input":"2025-04-16T13:44:39.945841Z","iopub.status.idle":"2025-04-16T13:44:47.764109Z","shell.execute_reply.started":"2025-04-16T13:44:39.945817Z","shell.execute_reply":"2025-04-16T13:44:47.763046Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"criterion = nn.BCEWithLogitsLoss()\n\n# CrossEntropyLoss\n# MSELoss\n# L1Loss\n# BCELoss\n# BCEWithLogitsLoss\n\noptimizer = optim.AdamW(EFF_NET.parameters(), lr=lr, betas=(beta1, 0.999))\nscheduler = torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma=0.86)","metadata":{"papermill":{"duration":0.013246,"end_time":"2024-11-09T19:12:17.16962","exception":false,"start_time":"2024-11-09T19:12:17.156374","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T13:44:47.765228Z","iopub.execute_input":"2025-04-16T13:44:47.765495Z","iopub.status.idle":"2025-04-16T13:44:47.774914Z","shell.execute_reply.started":"2025-04-16T13:44:47.765469Z","shell.execute_reply":"2025-04-16T13:44:47.774071Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(dataloader.dataset.classes)\nz_w_=[]\nhigh_rf,i_w,z_k=0,0,0\nhigh_rf_=1\n\nlab={\n    'fake' : 0,\n    'real' : 1\n}\nwhile True:\n    z_,z,z_w=0,0,{}\n    correct=0\n    for i, data in enumerate(dataloader, 0):\n        label = data[1].to(device).float()\n        raw_label=torch.from_numpy(numpy.array([[0,1] if i==1 else [1,0] for i in data[1] ])).float().to(device)\n        raw_output = EFF_NET(data[0].to(device)).float()\n        err_real = criterion(raw_output, raw_label)\n        optimizer.zero_grad()\n        err_real.backward()\n        optimizer.step()\n        \n    z_w_.append(err_real.item())\n    print(f\"EPOCH: {z_k} LOSS_FSC: {err_real.item()}\")\n    raw_output = torch.argmax(raw_output, dim=1).cpu().detach().numpy()\n\n    print(accuracy_score(raw_output, label.cpu().detach().numpy()))\n        \n    if len(z_w_)>=3:\n        #if len([True for i in range(1,4) if z_w_[len(z_w_)-i]<=z_w_[len(z_w_)-3] and z_w_[len(z_w_)-i]>=z_w_[len(z_w_)-4]])==3:\n            z_w_=[]\n            print(optimizer.param_groups[0][\"lr\"])\n            scheduler.step()\n            print(optimizer.param_groups[0][\"lr\"])\n    \n    if err_real.item()<=0.0002:\n        torch.save(EFF_NET.state_dict(),f'/kaggle/working/1.pth')# {z_add}{acc}\n    \n    if z_k==50:\n        break\n    z_k+=1\n    i_w+=1\n    ","metadata":{"papermill":{"duration":2194.25387,"end_time":"2024-11-09T19:48:51.427071","exception":false,"start_time":"2024-11-09T19:12:17.173201","status":"completed"},"tags":[],"trusted":true,"scrolled":true,"execution":{"execution_failed":"2025-04-16T14:13:00.502Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}