{"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":"markdown","source":"## Import Libs","metadata":{}},{"cell_type":"code","source":"# -*- coding: utf-8 -*-\n\n## Deep leanring \nimport torch.nn as nn\nfrom  torch.utils.data import Dataset,DataLoader\nimport torch\nimport torchvision\n\n# Machine learning\nfrom sklearn.metrics import accuracy_score\n\n# Data agumentation\nimport albumentations as A\nfrom albumentations.pytorch import ToTensorV2\n\nimport pandas as pd\nimport numpy as np\nimport cv2\n\n# 畫圖\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\n# 進度條\nfrom tqdm.notebook import tqdm\n\nfrom time import sleep\nimport warnings\n\nfrom glob import glob\nimport os,sys\n\nsys.path.append('../input/coolshan-coding-utils')\nfrom confusion_matrix_pretty_print import pp_matrix_from_data\nfrom logger import Logger\n\nwarnings.filterwarnings(\"ignore\")","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:08:53.778749Z","iopub.execute_input":"2022-09-11T02:08:53.779245Z","iopub.status.idle":"2022-09-11T02:08:58.140155Z","shell.execute_reply.started":"2022-09-11T02:08:53.779147Z","shell.execute_reply":"2022-09-11T02:08:58.138580Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Process Data","metadata":{}},{"cell_type":"code","source":"#def get_images_to_df(basepath)->pd.DataFrame:\n#    df_cat=pd.DataFrame(columns=['Filepath','Label'])\n#    image_paths=glob(os.path.join(basepath,'cats/*.*'))\n#    df_cat['Filepath']=image_paths\n#    df_cat['Label']=[0]*len(image_paths)\n#    \n#    df_dog=pd.DataFrame(columns=['Filepath','Label'])\n#    image_paths=glob(os.path.join(basepath,'dogs/*.*'))\n#    df_dog['Filepath']=image_paths\n#    df_dog['Label']=[1]*len(image_paths)\n#    return df_cat.append(df_dog)\n\n#train_df = get_images_to_df('../input/cat-and-dogs/dataset/training_set')\n#test_df = get_images_to_df('../input/cat-and-dogs/dataset/test_set')\n    ","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:08:58.144154Z","iopub.execute_input":"2022-09-11T02:08:58.144784Z","iopub.status.idle":"2022-09-11T02:08:58.153856Z","shell.execute_reply.started":"2022-09-11T02:08:58.144750Z","shell.execute_reply":"2022-09-11T02:08:58.149118Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data_df = pd.read_csv('../input/joey-fall-dataset/data_labels.csv')\ndata_df","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:08:58.157851Z","iopub.execute_input":"2022-09-11T02:08:58.158570Z","iopub.status.idle":"2022-09-11T02:08:58.194427Z","shell.execute_reply.started":"2022-09-11T02:08:58.158537Z","shell.execute_reply":"2022-09-11T02:08:58.193159Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Prepare dataframe","metadata":{}},{"cell_type":"code","source":"data_df.iloc[0].filename","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:08:58.198478Z","iopub.execute_input":"2022-09-11T02:08:58.198992Z","iopub.status.idle":"2022-09-11T02:08:58.210294Z","shell.execute_reply.started":"2022-09-11T02:08:58.198944Z","shell.execute_reply":"2022-09-11T02:08:58.208758Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"process_df = pd.DataFrame(columns=['Filepath','Label'])\nimage_path_list=[]\nbasepath = '../input/joey-fall-dataset'\n# Filepath = basepath / flodername / filename\nfor i in range(len(data_df)):\n    filename = data_df.iloc[i].filename\n    flodername = data_df.iloc[i].filename.split('_')[0]\n    filepath = os.path.join(basepath,flodername)#basepath+'/'+filename\n    filepath = os.path.join(filepath,filename)\n    image_path_list.append(filepath)\nprocess_df['Filepath']=image_path_list\nprocess_df['Label'] = data_df.label\nprocess_df","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:08:58.212775Z","iopub.execute_input":"2022-09-11T02:08:58.214695Z","iopub.status.idle":"2022-09-11T02:08:58.338257Z","shell.execute_reply.started":"2022-09-11T02:08:58.214650Z","shell.execute_reply":"2022-09-11T02:08:58.336723Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Split training and validation dataset","metadata":{}},{"cell_type":"code","source":"train_df=process_df.sample(frac=0.8)\n","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:08:58.340313Z","iopub.execute_input":"2022-09-11T02:08:58.340801Z","iopub.status.idle":"2022-09-11T02:08:58.350670Z","shell.execute_reply.started":"2022-09-11T02:08:58.340756Z","shell.execute_reply":"2022-09-11T02:08:58.348838Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df = process_df.sample(frac=0.8)\ntest_df = process_df[~process_df.index.isin(train_df.index)]","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:08:58.352804Z","iopub.execute_input":"2022-09-11T02:08:58.353680Z","iopub.status.idle":"2022-09-11T02:08:58.367594Z","shell.execute_reply.started":"2022-09-11T02:08:58.353636Z","shell.execute_reply":"2022-09-11T02:08:58.365940Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Sample Image and Transforms","metadata":{}},{"cell_type":"code","source":"transform = A.Compose([\n                         A.Resize(224,224,always_apply=True),\n                         #A.CenterCrop(224,224,p=1),\n                         A.ShiftScaleRotate(shift_limit=0.3,scale_limit=0.3,rotate_limit=20,p=1),\n                         #A.RandomBrightnessContrast(brightness_limit=(-0.5,0.5), contrast_limit=(-0.5, 0.5), p=1),\n                         #A.HorizontalFlip(p=1),\n                         #A.Blur(blur_limit=7,p=1)\n                         #A.Normalize(mean=[0.5,0.5,0.5],std=[0.5,0.5,0.5]),\n                         #ToTensorV2()\n                        ])\n# Data augmentation\nimage=cv2.imread(train_df.iloc[0].Filepath)\nimage=image[:,image.shape[1]//2:,:]\nimage = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# cv2 image channel default is BGR not RGB\nimage_aug=transform(image=image)['image']\nplt.imshow(image)\nplt.axis('off')\nplt.show()\nplt.imshow(image_aug)\nplt.axis('off')\nplt.show()\n\n","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:58:43.340293Z","iopub.execute_input":"2022-09-11T02:58:43.340757Z","iopub.status.idle":"2022-09-11T02:58:43.736020Z","shell.execute_reply.started":"2022-09-11T02:58:43.340723Z","shell.execute_reply":"2022-09-11T02:58:43.734669Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Define Config","metadata":{}},{"cell_type":"code","source":"class CFG:\n    def __init__(self):\n        self.lr = 1.5e-4 #2\n        self.epoch=3\n        self.batch_size = 4\n        self.image_size=(256,256) #1\n        self.device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n        print(self.device)\ncfg=CFG()","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:08:58.840448Z","iopub.execute_input":"2022-09-11T02:08:58.841595Z","iopub.status.idle":"2022-09-11T02:08:58.941598Z","shell.execute_reply.started":"2022-09-11T02:08:58.841550Z","shell.execute_reply":"2022-09-11T02:08:58.938024Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Define Dataset and DataLoader","metadata":{}},{"cell_type":"code","source":"class DCDataset(Dataset):\n    def __init__(self,df,transform=None):\n        self.df =  df\n        self.image_paths = df.Filepath.values # to numpy array\n        self.labels=df.Label.values # to numpy array\n        self.transform = transform\n        \n    def read_image(self,path):\n        image=cv2.imread(path)\n        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# cv2 image channel default is BGR not RGB\n        image=image[:,image.shape[1]//2:,:]\n        if self.transform :\n            image = self.transform(image=image)['image']\n        return image\n    \n    # 吐資料\n    def __getitem__(self,idx):\n        image = self.read_image(self.image_paths[idx])\n        \n        return image,self.labels[idx]\n    \n    def __len__(self):\n        return len(self.image_paths)\n\ntransform = A.Compose([\n                         A.Resize(cfg.image_size[0],cfg.image_size[1],always_apply=True),\n                         A.ShiftScaleRotate(shift_limit=0.1,scale_limit=0.2,rotate_limit=0,p=0.5),\n                         A.RandomBrightnessContrast(brightness_limit=(-0.15,0.15), contrast_limit=(-0.15, 0.15), p=0.5),\n                         A.HorizontalFlip(p=0.5),\n                         A.Normalize(mean=[0.5,0.5,0.5],std=[0.5,0.5,0.5]),#不可刪除\n                         ToTensorV2()#不可刪除\n                        ])\ntrain_dataset = DCDataset(train_df,transform)\ntest_dataset = DCDataset(test_df,transform)\n\ntrain_dataloader = DataLoader(train_dataset,\n                              batch_size=cfg.batch_size,\n                              shuffle=True,\n                              num_workers=4,\n                              drop_last=True,\n                              pin_memory=True)\n\ntest_dataloader = DataLoader(test_dataset,\n                              batch_size=cfg.batch_size,\n                              shuffle=False,\n                              num_workers=4,\n                              drop_last=False,\n                              pin_memory=False)","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:08:58.948123Z","iopub.execute_input":"2022-09-11T02:08:58.949831Z","iopub.status.idle":"2022-09-11T02:08:58.966788Z","shell.execute_reply.started":"2022-09-11T02:08:58.949781Z","shell.execute_reply":"2022-09-11T02:08:58.965226Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Define Model, Loss, Optimizer","metadata":{}},{"cell_type":"code","source":"model = torchvision.models.resnet18(pretrained=True)\nmodel.fc = nn.Linear(512, 2)\nmodel = model.to(cfg.device)\n\noptimizer = torch.optim.Adam(model.parameters(),lr=cfg.lr)\nloss_fn = nn.CrossEntropyLoss() #10","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:17:03.658367Z","iopub.execute_input":"2022-09-11T02:17:03.660007Z","iopub.status.idle":"2022-09-11T02:17:10.458393Z","shell.execute_reply.started":"2022-09-11T02:17:03.659944Z","shell.execute_reply":"2022-09-11T02:17:10.456947Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Start Training!","metadata":{}},{"cell_type":"code","source":"def train_one_epoch():\n    model.train()\n    trange = tqdm(train_dataloader,total=len(train_dataloader))\n    for image,label in train_dataloader :\n        image = image.to(cfg.device)# for gpu\n        label = label.to(cfg.device)# for gpu\n        \n        pred = model(image)\n        loss = loss_fn(pred,label)\n        loss.backward()\n        optimizer.step()#update\n        optimizer.zero_grad()\n        \n        ## display\n        pred = pred.cpu().detach()\n        loss = loss.cpu().detach().item()\n        label = label.cpu()\n        \n        pred_category = pred.argmax(axis=1)# get class\n        acc = accuracy_score(pred_category,label)\n        \n        train_logger(loss=loss,acc=acc)\n        avg_log = train_logger.get_current_epoch_avg()\n        \n        trange.set_postfix(loss=avg_log['loss'], acc=avg_log['acc'])\n        trange.update()\n    train_logger.save_epoch()\n        ","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:32:36.886800Z","iopub.execute_input":"2022-09-11T02:32:36.887239Z","iopub.status.idle":"2022-09-11T02:32:36.899043Z","shell.execute_reply.started":"2022-09-11T02:32:36.887206Z","shell.execute_reply":"2022-09-11T02:32:36.897246Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_logger = Logger('Train')\nfor epoch in tqdm(range(cfg.epoch),total=cfg.epoch):\n    train_one_epoch()\n    \nLogger.plot()","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:32:37.356488Z","iopub.execute_input":"2022-09-11T02:32:37.356862Z","iopub.status.idle":"2022-09-11T02:32:48.801084Z","shell.execute_reply.started":"2022-09-11T02:32:37.356830Z","shell.execute_reply":"2022-09-11T02:32:48.799472Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Evaluation","metadata":{}},{"cell_type":"code","source":"def evaluation()->list:\n    pred_list=[]\n    model.eval()\n    trange = tqdm(test_dataloader,total=len(test_dataloader))\n    for image,label in trange :\n        image = image.to(cfg.device)# for gpu\n        label = label.to(cfg.device)# for gpu\n        \n        pred = model(image)\n        \n        pred = pred.cpu().detach()\n        label = label.cpu()\n        \n        pred_list.append(pred)\n    return pred_list\n\n\npred_list = evaluation()\npreds = np.concatenate(pred_list,axis=0)\npreds = preds.argmax(axis=1)\ntest_df['Pred'] = preds\ntest_df.head()","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:09:27.041172Z","iopub.execute_input":"2022-09-11T02:09:27.044499Z","iopub.status.idle":"2022-09-11T02:09:28.488120Z","shell.execute_reply.started":"2022-09-11T02:09:27.044422Z","shell.execute_reply":"2022-09-11T02:09:28.486324Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"acc = accuracy_score(test_df.Pred,test_df.Label)\nprint('Acc: ',acc*100,'%',end='',sep='')","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:09:28.490529Z","iopub.execute_input":"2022-09-11T02:09:28.491729Z","iopub.status.idle":"2022-09-11T02:09:28.503404Z","shell.execute_reply.started":"2022-09-11T02:09:28.491677Z","shell.execute_reply":"2022-09-11T02:09:28.501733Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Confusion Matrix","metadata":{}},{"cell_type":"code","source":"pp_matrix_from_data(test_df.Label,test_df.Pred,columns=['not fall','fall'])","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:09:28.506168Z","iopub.execute_input":"2022-09-11T02:09:28.506696Z","iopub.status.idle":"2022-09-11T02:09:28.913214Z","shell.execute_reply.started":"2022-09-11T02:09:28.506652Z","shell.execute_reply":"2022-09-11T02:09:28.911589Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Check Error","metadata":{}},{"cell_type":"code","source":"error_data = test_df[test_df.Label != test_df.Pred].sample(n=min(len(test_df[test_df.Label != test_df.Pred]),8))\ncorrect_data = test_df[test_df.Label == test_df.Pred].sample(n=8)\nshow_df = pd.concat([error_data,correct_data])\n\nfig,ax = plt.subplots(len(show_df)//4+1,4,figsize=(16,16))\nax = ax.flatten()\nfor i in range(len(show_df)):\n    image=cv2.imread(show_df.iloc[i].Filepath)\n    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n    image=image[:,image.shape[1]//2:,:]\n    ax[i].imshow(image)\n    ax[i].axis('off')\n    ax[i].set_title(f'Label:({show_df.iloc[i].Label})/Pred:({show_df.iloc[i].Pred})',color='green'if show_df.iloc[i].Pred == show_df.iloc[i].Label else 'red')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:09:28.914953Z","iopub.execute_input":"2022-09-11T02:09:28.915515Z","iopub.status.idle":"2022-09-11T02:09:30.207720Z","shell.execute_reply.started":"2022-09-11T02:09:28.915448Z","shell.execute_reply":"2022-09-11T02:09:30.204524Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"torch.save(model.state_dict(),'resnet18_fall.pkl')","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:38:08.098908Z","iopub.execute_input":"2022-09-11T02:38:08.099867Z","iopub.status.idle":"2022-09-11T02:38:08.265850Z","shell.execute_reply.started":"2022-09-11T02:38:08.099824Z","shell.execute_reply":"2022-09-11T02:38:08.264283Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"![image.png](attachment:2eb7b7a0-9052-454c-9e04-7353ff51612c.png)","metadata":{},"attachments":{"2eb7b7a0-9052-454c-9e04-7353ff51612c.png":{"image/png":"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"}}},{"cell_type":"markdown","source":"## Application","metadata":{}},{"cell_type":"code","source":"model = torchvision.models.resnet18()\nmodel.fc = nn.Linear(512, 2)\nmodel.load_state_dict(torch.load('resnet18_fall.pkl'))\nmodel.eval()\nprint()","metadata":{"execution":{"iopub.status.busy":"2022-09-11T02:54:52.992304Z","iopub.execute_input":"2022-09-11T02:54:52.992982Z","iopub.status.idle":"2022-09-11T02:54:53.425598Z","shell.execute_reply.started":"2022-09-11T02:54:52.992933Z","shell.execute_reply":"2022-09-11T02:54:53.424233Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def load_image(path):\n    transform = A.Compose([\n                         A.Resize(224,224,always_apply=True),\n                         A.Normalize(mean=[0.5,0.5,0.5],std=[0.5,0.5,0.5]),\n                         ToTensorV2()\n                        ])\n    # Data augmentation\n    image=cv2.imread(path)\n    image=image[:,image.shape[1]//2:,:]\n    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# cv2 image channel default is BGR not RGB\n    image_aug=transform(image=image)['image']\n    return image_aug\n\nimage = load_image('../input/joey-fall-dataset/fall-02-cam0/fall-02-cam0_106.jpg')\n\npred = model(image[None,:])\npred","metadata":{"execution":{"iopub.status.busy":"2022-09-11T03:07:23.031489Z","iopub.execute_input":"2022-09-11T03:07:23.031920Z","iopub.status.idle":"2022-09-11T03:07:23.134635Z","shell.execute_reply.started":"2022-09-11T03:07:23.031887Z","shell.execute_reply":"2022-09-11T03:07:23.132965Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred.argmax(axis=1)","metadata":{"execution":{"iopub.status.busy":"2022-09-11T03:07:14.614248Z","iopub.execute_input":"2022-09-11T03:07:14.617420Z","iopub.status.idle":"2022-09-11T03:07:14.627794Z","shell.execute_reply.started":"2022-09-11T03:07:14.617373Z","shell.execute_reply":"2022-09-11T03:07:14.626143Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}