{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","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":9944324,"sourceType":"datasetVersion","datasetId":6114652},{"sourceId":10068390,"sourceType":"datasetVersion","datasetId":6205456},{"sourceId":10074783,"sourceType":"datasetVersion","datasetId":6210111}],"dockerImageVersionId":30786,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import pandas as pd\n\ndf = pd.read_json('/kaggle/input/dfdc-train/dfdc_train_part_48/metadata.json')\ndf.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-01T11:57:12.18396Z","iopub.execute_input":"2025-01-01T11:57:12.184211Z","iopub.status.idle":"2025-01-01T11:57:13.517586Z","shell.execute_reply.started":"2025-01-01T11:57:12.184178Z","shell.execute_reply":"2025-01-01T11:57:13.516334Z"}},"outputs":[{"execution_count":1,"output_type":"execute_result","data":{"text/plain":"          noagmcpxfb.mp4 alzbizkswy.mp4  xcmkbpzfzw.mp4  uywdjgfgqr.mp4  \\\nlabel               FAKE           REAL            FAKE            FAKE   \nsplit              train          train           train           train   \noriginal  dgtdgrzifi.mp4            NaN  aoqzxlwvmi.mp4  oupjhtodai.mp4   \n\n          fbqwomdehr.mp4  kfnjscqwpr.mp4  hdhosyjdqa.mp4 qzfmctgxcs.mp4  \\\nlabel               FAKE            FAKE            FAKE           REAL   \nsplit              train           train           train          train   \noriginal  xtixietgjp.mp4  xukwfyprsa.mp4  ondrruihyu.mp4            NaN   \n\n          bqylqctsxk.mp4  lhmiyvrent.mp4  ...  fhwgrarnid.mp4  cspnpyohxu.mp4  \\\nlabel               FAKE            FAKE  ...            FAKE            FAKE   \nsplit              train           train  ...           train           train   \noriginal  sudzolvppu.mp4  qvgutokvct.mp4  ...  axnpuuknzw.mp4  jjzveabagf.mp4   \n\n         rkjhxvdnsv.mp4 xojuannegi.mp4 gbflagqcrg.mp4 qzucqrxmaj.mp4  \\\nlabel              REAL           REAL           REAL           REAL   \nsplit             train          train          train          train   \noriginal            NaN            NaN            NaN            NaN   \n\n          lbvpjkfemg.mp4 drxswkgtst.mp4 oqehnuhbwa.mp4 jiqhuhqtdf.mp4  \nlabel               FAKE           REAL           REAL           REAL  \nsplit              train          train          train          train  \noriginal  oqehnuhbwa.mp4            NaN            NaN            NaN  \n\n[3 rows x 2463 columns]","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>noagmcpxfb.mp4</th>\n      <th>alzbizkswy.mp4</th>\n      <th>xcmkbpzfzw.mp4</th>\n      <th>uywdjgfgqr.mp4</th>\n      <th>fbqwomdehr.mp4</th>\n      <th>kfnjscqwpr.mp4</th>\n      <th>hdhosyjdqa.mp4</th>\n      <th>qzfmctgxcs.mp4</th>\n      <th>bqylqctsxk.mp4</th>\n      <th>lhmiyvrent.mp4</th>\n      <th>...</th>\n      <th>fhwgrarnid.mp4</th>\n      <th>cspnpyohxu.mp4</th>\n      <th>rkjhxvdnsv.mp4</th>\n      <th>xojuannegi.mp4</th>\n      <th>gbflagqcrg.mp4</th>\n      <th>qzucqrxmaj.mp4</th>\n      <th>lbvpjkfemg.mp4</th>\n      <th>drxswkgtst.mp4</th>\n      <th>oqehnuhbwa.mp4</th>\n      <th>jiqhuhqtdf.mp4</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>label</th>\n      <td>FAKE</td>\n      <td>REAL</td>\n      <td>FAKE</td>\n      <td>FAKE</td>\n      <td>FAKE</td>\n      <td>FAKE</td>\n      <td>FAKE</td>\n      <td>REAL</td>\n      <td>FAKE</td>\n      <td>FAKE</td>\n      <td>...</td>\n      <td>FAKE</td>\n      <td>FAKE</td>\n      <td>REAL</td>\n      <td>REAL</td>\n      <td>REAL</td>\n      <td>REAL</td>\n      <td>FAKE</td>\n      <td>REAL</td>\n      <td>REAL</td>\n      <td>REAL</td>\n    </tr>\n    <tr>\n      <th>split</th>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>...</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n      <td>train</td>\n    </tr>\n    <tr>\n      <th>original</th>\n      <td>dgtdgrzifi.mp4</td>\n      <td>NaN</td>\n      <td>aoqzxlwvmi.mp4</td>\n      <td>oupjhtodai.mp4</td>\n      <td>xtixietgjp.mp4</td>\n      <td>xukwfyprsa.mp4</td>\n      <td>ondrruihyu.mp4</td>\n      <td>NaN</td>\n      <td>sudzolvppu.mp4</td>\n      <td>qvgutokvct.mp4</td>\n      <td>...</td>\n      <td>axnpuuknzw.mp4</td>\n      <td>jjzveabagf.mp4</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>oqehnuhbwa.mp4</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n    </tr>\n  </tbody>\n</table>\n<p>3 rows × 2463 columns</p>\n</div>"},"metadata":{}}],"execution_count":1},{"cell_type":"code","source":"df = df.transpose()\ndf.reset_index(inplace=True)\ndf.rename(columns={'index': 'URI'}, inplace=True)\ndf.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-01T11:57:13.519864Z","iopub.execute_input":"2025-01-01T11:57:13.52153Z","iopub.status.idle":"2025-01-01T11:57:13.544055Z","shell.execute_reply.started":"2025-01-01T11:57:13.521476Z","shell.execute_reply":"2025-01-01T11:57:13.542814Z"}},"outputs":[{"execution_count":2,"output_type":"execute_result","data":{"text/plain":"              URI label  split        original\n0  noagmcpxfb.mp4  FAKE  train  dgtdgrzifi.mp4\n1  alzbizkswy.mp4  REAL  train             NaN\n2  xcmkbpzfzw.mp4  FAKE  train  aoqzxlwvmi.mp4\n3  uywdjgfgqr.mp4  FAKE  train  oupjhtodai.mp4\n4  fbqwomdehr.mp4  FAKE  train  xtixietgjp.mp4","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>URI</th>\n      <th>label</th>\n      <th>split</th>\n      <th>original</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>noagmcpxfb.mp4</td>\n      <td>FAKE</td>\n      <td>train</td>\n      <td>dgtdgrzifi.mp4</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>alzbizkswy.mp4</td>\n      <td>REAL</td>\n      <td>train</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>xcmkbpzfzw.mp4</td>\n      <td>FAKE</td>\n      <td>train</td>\n      <td>aoqzxlwvmi.mp4</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>uywdjgfgqr.mp4</td>\n      <td>FAKE</td>\n      <td>train</td>\n      <td>oupjhtodai.mp4</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>fbqwomdehr.mp4</td>\n      <td>FAKE</td>\n      <td>train</td>\n      <td>xtixietgjp.mp4</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":2},{"cell_type":"code","source":"df.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-01T11:57:46.008533Z","iopub.execute_input":"2025-01-01T11:57:46.00887Z","iopub.status.idle":"2025-01-01T11:57:46.014665Z","shell.execute_reply.started":"2025-01-01T11:57:46.008839Z","shell.execute_reply":"2025-01-01T11:57:46.01372Z"}},"outputs":[{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"(2463, 4)"},"metadata":{}}],"execution_count":3},{"cell_type":"code","source":"!pip install mtcnn","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-01T11:57:46.713437Z","iopub.execute_input":"2025-01-01T11:57:46.714242Z","iopub.status.idle":"2025-01-01T11:57:56.194116Z","shell.execute_reply.started":"2025-01-01T11:57:46.714192Z","shell.execute_reply":"2025-01-01T11:57:56.193002Z"}},"outputs":[{"name":"stdout","text":"Collecting mtcnn\n  Downloading mtcnn-1.0.0-py3-none-any.whl.metadata (5.8 kB)\nRequirement already satisfied: joblib>=1.4.2 in /opt/conda/lib/python3.10/site-packages (from mtcnn) (1.4.2)\nRequirement already satisfied: lz4>=4.3.3 in /opt/conda/lib/python3.10/site-packages (from mtcnn) (4.3.3)\nDownloading mtcnn-1.0.0-py3-none-any.whl (1.9 MB)\n\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.9/1.9 MB\u001b[0m \u001b[31m23.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m0:01\u001b[0m\n\u001b[?25hInstalling collected packages: mtcnn\nSuccessfully installed mtcnn-1.0.0\n","output_type":"stream"}],"execution_count":4},{"cell_type":"code","source":"import cv2\nimport random\n\ndef frame_extract(path, num_frames=20):\n    \"\"\"\n    Extracts and yields a specified number (num_frames) of consecutive frames from a video, starting from a random position.\n    \n    Args:\n      path (str): Đường dẫn đến file video.\n      num_frames (int, optional): Số lượng frame liên tiếp cần lấy. Mặc định là 20.\n    \n    Yields:\n      numpy.ndarray: Một frame từ video dưới dạng mảng NumPy.\n    \"\"\"\n    \n    vidObj = cv2.VideoCapture(path)\n    \n    if not vidObj.isOpened():\n        raise Exception(\"Không thể mở file video:\", path)\n    \n    total_frames = int(vidObj.get(cv2.CAP_PROP_FRAME_COUNT))\n    \n    if num_frames < 1 or num_frames > total_frames:\n        raise ValueError(f\"Số lượng frame không hợp lệ: {num_frames}. Phải nằm trong khoảng từ 1 đến {total_frames}\")\n    \n    # Chọn ngẫu nhiên một vị trí bắt đầu\n    start_frame = random.randint(0, total_frames - num_frames)\n    \n    # Đặt con trỏ đến vị trí bắt đầu\n    vidObj.set(cv2.CAP_PROP_POS_FRAMES, start_frame)\n    \n    for _ in range(num_frames):\n        success, image = vidObj.read()\n        if success:\n            image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n            yield image","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-01T11:57:56.196185Z","iopub.execute_input":"2025-01-01T11:57:56.196513Z","iopub.status.idle":"2025-01-01T11:57:56.368385Z","shell.execute_reply.started":"2025-01-01T11:57:56.19648Z","shell.execute_reply":"2025-01-01T11:57:56.367496Z"}},"outputs":[],"execution_count":5},{"cell_type":"markdown","source":"### Tiền xử lí dữ liệu","metadata":{}},{"cell_type":"code","source":"import os\nimport cv2\nimport glob\nfrom mtcnn import MTCNN\n\nbase_path = '/kaggle/input/dfdc-train/dfdc_train_part_48'\n\nfor stt, vid in enumerate(df['URI']):\n    path = os.path.join(base_path, vid)\n    out_dir = '/kaggle/working/face_only/'\n    out_path = os.path.join(out_dir,path.split('/')[-1])\n    file_exists = glob.glob(out_path)\n    if(len(file_exists) != 0):\n        print(\"File Already exists: \" , out_path)\n        continue\n    \n    frames = []\n    flag = 0\n    face_all = []\n    frames1 = []\n    out = cv2.VideoWriter(out_path,cv2.VideoWriter_fourcc('M','J','P','G'), 30, (112,112))\n    \n    for idx,frame in enumerate(frame_extract(path)):\n        #if(idx % 3 == 0):\n        detector = MTCNN()\n        if(idx <= 150):\n            frames.append(frame)\n            face_rects = detector.detect_faces(frame)\n            for i, d in enumerate(face_rects):\n                x, y, width, height = face_rects[i]['box']\n                x1, y1, x2, y2 = max(0, x - 10), max(0, y + 10), min(frame.shape[1], x - 10 + width + 20), min(frame.shape[0], y + 10 + height)\n                crop_img = frame[y1:y2, x1:x2]\n            \n                out.write(cv2.resize(crop_img,(112,112)))\n    print(stt, vid)\n    out.release()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-01T11:57:59.866111Z","iopub.execute_input":"2025-01-01T11:57:59.866433Z"},"collapsed":true,"jupyter":{"outputs_hidden":true}},"outputs":[{"name":"stdout","text":"File Already exists:  /kaggle/working/face_only/noagmcpxfb.mp4\nFile Already exists:  /kaggle/working/face_only/alzbizkswy.mp4\nFile Already exists:  /kaggle/working/face_only/xcmkbpzfzw.mp4\nFile Already exists:  /kaggle/working/face_only/uywdjgfgqr.mp4\nFile Already exists:  /kaggle/working/face_only/fbqwomdehr.mp4\nFile Already exists:  /kaggle/working/face_only/kfnjscqwpr.mp4\nFile Already exists:  /kaggle/working/face_only/hdhosyjdqa.mp4\nFile Already exists:  /kaggle/working/face_only/qzfmctgxcs.mp4\nFile Already exists:  /kaggle/working/face_only/bqylqctsxk.mp4\nFile Already exists:  /kaggle/working/face_only/lhmiyvrent.mp4\nFile Already exists:  /kaggle/working/face_only/qdumndmniy.mp4\nFile Already exists:  /kaggle/working/face_only/pvewomynek.mp4\nFile Already exists:  /kaggle/working/face_only/nliofvksed.mp4\nFile Already exists:  /kaggle/working/face_only/fdppujxagz.mp4\nFile Already exists:  /kaggle/working/face_only/uiuritmtkl.mp4\nFile Already exists:  /kaggle/working/face_only/jjioflapll.mp4\nFile Already exists:  /kaggle/working/face_only/saiaojszgp.mp4\nFile Already exists:  /kaggle/working/face_only/ejyhzcuytn.mp4\nFile Already exists:  /kaggle/working/face_only/zmfiveruie.mp4\nFile Already exists:  /kaggle/working/face_only/vemkifcxcn.mp4\nFile Already exists:  /kaggle/working/face_only/yiwyejujhz.mp4\nFile Already exists:  /kaggle/working/face_only/cemtyyxdti.mp4\nFile Already exists:  /kaggle/working/face_only/fdezrogbya.mp4\nFile Already exists:  /kaggle/working/face_only/akpbyalynb.mp4\nFile Already exists:  /kaggle/working/face_only/axyorvscnv.mp4\nFile Already exists:  /kaggle/working/face_only/eswzqomvye.mp4\nFile Already exists:  /kaggle/working/face_only/kgsfkfdltq.mp4\nFile Already exists:  /kaggle/working/face_only/ktwvmsdbam.mp4\nFile Already exists:  /kaggle/working/face_only/ogxclikmst.mp4\nFile Already exists:  /kaggle/working/face_only/xbkvmkozpc.mp4\nFile Already exists:  /kaggle/working/face_only/uyicbkmyef.mp4\nFile Already exists:  /kaggle/working/face_only/yqtadojbpz.mp4\nFile Already exists:  /kaggle/working/face_only/ebzspprfny.mp4\nFile Already exists:  /kaggle/working/face_only/aofjdfbvsf.mp4\nFile Already exists:  /kaggle/working/face_only/wcuavvyokv.mp4\nFile Already exists:  /kaggle/working/face_only/yvowabxoto.mp4\nFile Already exists:  /kaggle/working/face_only/qssqmsbneb.mp4\nFile Already exists:  /kaggle/working/face_only/sudzolvppu.mp4\nFile Already exists:  /kaggle/working/face_only/fllljvuqqa.mp4\nFile Already exists:  /kaggle/working/face_only/weavaatvho.mp4\nFile Already exists:  /kaggle/working/face_only/ncklihamxl.mp4\nFile Already exists:  /kaggle/working/face_only/qxpyekaknf.mp4\nFile Already exists:  /kaggle/working/face_only/uespfgstut.mp4\nFile Already exists:  /kaggle/working/face_only/nyoossxsjk.mp4\nFile Already exists:  /kaggle/working/face_only/pyirqybluh.mp4\nFile Already exists:  /kaggle/working/face_only/ofapaanpkl.mp4\nFile Already exists:  /kaggle/working/face_only/ikacknizqm.mp4\nFile Already exists:  /kaggle/working/face_only/fdgjxunkbg.mp4\nFile Already exists:  /kaggle/working/face_only/oufidacgwf.mp4\nFile Already exists:  /kaggle/working/face_only/ovmopsyelx.mp4\nFile Already exists:  /kaggle/working/face_only/gsxlolioxh.mp4\nFile Already exists:  /kaggle/working/face_only/srsadmspmy.mp4\nFile Already exists:  /kaggle/working/face_only/xwwapswrtn.mp4\nFile Already exists:  /kaggle/working/face_only/aoxjeneofv.mp4\nFile Already exists:  /kaggle/working/face_only/ubeujmdnbg.mp4\nFile Already exists:  /kaggle/working/face_only/rmztfignml.mp4\nFile Already exists:  /kaggle/working/face_only/qarbtmjwhm.mp4\nFile Already exists:  /kaggle/working/face_only/vnwbsatlha.mp4\nFile Already exists:  /kaggle/working/face_only/jinzlsofla.mp4\nFile Already exists:  /kaggle/working/face_only/kifyfzqzjj.mp4\nFile Already exists:  /kaggle/working/face_only/fasyguwpmg.mp4\nFile Already exists:  /kaggle/working/face_only/telhwxhfvz.mp4\nFile Already exists:  /kaggle/working/face_only/dhjromtynd.mp4\nFile Already exists:  /kaggle/working/face_only/asanbqerkb.mp4\nFile Already exists:  /kaggle/working/face_only/uuyyezfcnx.mp4\nFile Already exists:  /kaggle/working/face_only/krlmmmwgnh.mp4\nFile Already exists:  /kaggle/working/face_only/gwrnbskgml.mp4\nFile Already exists:  /kaggle/working/face_only/wtfgfzqlgb.mp4\nFile Already exists:  /kaggle/working/face_only/lpencintgp.mp4\nFile Already exists:  /kaggle/working/face_only/vbwpcarauq.mp4\nFile Already exists:  /kaggle/working/face_only/bzkgdqauwi.mp4\nFile Already exists:  /kaggle/working/face_only/wscclwhfsr.mp4\nFile Already exists:  /kaggle/working/face_only/qhwvegmmkh.mp4\nFile Already exists:  /kaggle/working/face_only/pqcmvupjkq.mp4\nFile Already exists:  /kaggle/working/face_only/pwqcfklfqn.mp4\nFile Already exists:  /kaggle/working/face_only/xtixietgjp.mp4\nFile Already exists:  /kaggle/working/face_only/jfwbtzpwds.mp4\nFile Already exists:  /kaggle/working/face_only/mrerjyjvds.mp4\nFile Already exists:  /kaggle/working/face_only/gtlqonbaur.mp4\nFile Already exists:  /kaggle/working/face_only/wcusakgafv.mp4\nFile Already exists:  /kaggle/working/face_only/dreamznfsd.mp4\nFile Already exists:  /kaggle/working/face_only/qlxtcakhnu.mp4\nFile Already exists:  /kaggle/working/face_only/qiiigtcpft.mp4\nFile Already exists:  /kaggle/working/face_only/gjrkpbhyvs.mp4\nFile Already exists:  /kaggle/working/face_only/mexwrnhhyo.mp4\nFile Already exists:  /kaggle/working/face_only/enuvbqyode.mp4\nFile Already exists:  /kaggle/working/face_only/ujhhksskil.mp4\nFile Already exists:  /kaggle/working/face_only/bfjajtyjzt.mp4\nFile Already exists:  /kaggle/working/face_only/ihgkxfqczm.mp4\nFile Already exists:  /kaggle/working/face_only/vbqpkjauhb.mp4\nFile Already exists:  /kaggle/working/face_only/bosxyhludp.mp4\nFile Already exists:  /kaggle/working/face_only/oekdjsokkb.mp4\nFile Already exists:  /kaggle/working/face_only/tsoqqcbsmx.mp4\nFile Already exists:  /kaggle/working/face_only/efbibsmgpw.mp4\nFile Already exists:  /kaggle/working/face_only/qcvctfwlam.mp4\nFile Already exists:  /kaggle/working/face_only/tfeguxahut.mp4\nFile Already exists:  /kaggle/working/face_only/lovwvifwwo.mp4\nFile Already exists:  /kaggle/working/face_only/qeqhrejxbu.mp4\nFile Already exists:  /kaggle/working/face_only/yljgbwluei.mp4\nFile Already exists:  /kaggle/working/face_only/dcazaskuka.mp4\nFile Already exists:  /kaggle/working/face_only/kgygjjktti.mp4\nFile Already exists:  /kaggle/working/face_only/fbybejwonv.mp4\nFile Already exists:  /kaggle/working/face_only/mwtcwknkuv.mp4\nFile Already exists:  /kaggle/working/face_only/wpxivqyoww.mp4\nFile Already exists:  /kaggle/working/face_only/afvbadakux.mp4\nFile Already exists:  /kaggle/working/face_only/qatpflatwm.mp4\nFile Already exists:  /kaggle/working/face_only/kcsthllhbl.mp4\nFile Already exists:  /kaggle/working/face_only/ahencqpiin.mp4\nFile Already exists:  /kaggle/working/face_only/qqqfrgcnsb.mp4\nFile Already exists:  /kaggle/working/face_only/iscbfzqeyn.mp4\nFile Already exists:  /kaggle/working/face_only/qvrgoabojk.mp4\nFile Already exists:  /kaggle/working/face_only/yrldnkponb.mp4\nFile Already exists:  /kaggle/working/face_only/rnqtslhcka.mp4\nFile Already exists:  /kaggle/working/face_only/imnhgitwer.mp4\nFile Already exists:  /kaggle/working/face_only/hwmybqyceh.mp4\nFile Already exists:  /kaggle/working/face_only/safkdrudrs.mp4\nFile Already exists:  /kaggle/working/face_only/hpjlsodvji.mp4\nFile Already exists:  /kaggle/working/face_only/gkbiiuwvjd.mp4\nFile Already exists:  /kaggle/working/face_only/ibryrelmff.mp4\nFile Already exists:  /kaggle/working/face_only/azwsqmaxmf.mp4\nFile Already exists:  /kaggle/working/face_only/hzrlcndrek.mp4\nFile Already exists:  /kaggle/working/face_only/couyrcwviy.mp4\nFile Already exists:  /kaggle/working/face_only/dslifinjkj.mp4\nFile Already exists:  /kaggle/working/face_only/crwzuxqezo.mp4\nFile Already exists:  /kaggle/working/face_only/lwoxicjdyc.mp4\nFile Already exists:  /kaggle/working/face_only/rtjmzqmhqa.mp4\nFile Already exists:  /kaggle/working/face_only/kicveuizmb.mp4\nFile Already exists:  /kaggle/working/face_only/gsqepibeqs.mp4\nFile Already exists:  /kaggle/working/face_only/kqqehipuno.mp4\nFile Already exists:  /kaggle/working/face_only/dqqgfwcmrn.mp4\nFile Already exists:  /kaggle/working/face_only/ibrdkgckhc.mp4\nFile Already exists:  /kaggle/working/face_only/eddocxyxea.mp4\nFile Already exists:  /kaggle/working/face_only/lxwxleiptt.mp4\nFile Already exists:  /kaggle/working/face_only/ntfnqcgfkg.mp4\nFile Already exists:  /kaggle/working/face_only/zabggtpvjj.mp4\nFile Already exists:  /kaggle/working/face_only/aoyvghuegg.mp4\nFile Already exists:  /kaggle/working/face_only/jcrpwhrpyk.mp4\nFile Already exists:  /kaggle/working/face_only/ektwmkryvm.mp4\nFile Already exists:  /kaggle/working/face_only/qdbiwougrn.mp4\nFile Already exists:  /kaggle/working/face_only/jbxjqnwwhv.mp4\nFile Already exists:  /kaggle/working/face_only/cbiqnvszuw.mp4\nFile Already exists:  /kaggle/working/face_only/zdjggiwdqh.mp4\nFile Already exists:  /kaggle/working/face_only/sbmndrkqmu.mp4\nFile Already exists:  /kaggle/working/face_only/yggflwovqz.mp4\nFile Already exists:  /kaggle/working/face_only/fujwbsqeaf.mp4\nFile Already exists:  /kaggle/working/face_only/lzzqbqakel.mp4\nFile Already exists:  /kaggle/working/face_only/mlhrazrnmx.mp4\nFile Already exists:  /kaggle/working/face_only/iigcoabzxw.mp4\nFile Already exists:  /kaggle/working/face_only/acanmekatk.mp4\nFile Already exists:  /kaggle/working/face_only/okfjnnozuz.mp4\nFile Already exists:  /kaggle/working/face_only/ditgggwqru.mp4\nFile Already exists:  /kaggle/working/face_only/oyllgjgwht.mp4\nFile Already exists:  /kaggle/working/face_only/kisvmxjmeb.mp4\nFile Already exists:  /kaggle/working/face_only/iusachxgqy.mp4\nFile Already exists:  /kaggle/working/face_only/rzyjmjmzdx.mp4\nFile Already exists:  /kaggle/working/face_only/lcjqoxhdvs.mp4\nFile Already exists:  /kaggle/working/face_only/kcigedckrv.mp4\nFile Already exists:  /kaggle/working/face_only/tpiddeudvc.mp4\nFile Already exists:  /kaggle/working/face_only/wulqkgrpgs.mp4\nFile Already exists:  /kaggle/working/face_only/eycfnmrhdt.mp4\nFile Already exists:  /kaggle/working/face_only/rubozrgvgg.mp4\nFile Already exists:  /kaggle/working/face_only/rfywczujdb.mp4\nFile Already exists:  /kaggle/working/face_only/qhanuectob.mp4\nFile Already exists:  /kaggle/working/face_only/lxekhqziuc.mp4\nFile Already exists:  /kaggle/working/face_only/xisljdekrc.mp4\nFile Already exists:  /kaggle/working/face_only/jrjxehotww.mp4\nFile Already exists:  /kaggle/working/face_only/vzjiuuhlgz.mp4\nFile Already exists:  /kaggle/working/face_only/cgcmdddbch.mp4\nFile Already exists:  /kaggle/working/face_only/pqetdjqyji.mp4\nFile Already exists:  /kaggle/working/face_only/bstetrqars.mp4\nFile Already exists:  /kaggle/working/face_only/zhznykzuxe.mp4\nFile Already exists:  /kaggle/working/face_only/jfighqzpzm.mp4\nFile Already exists:  /kaggle/working/face_only/bfzvzyidrj.mp4\nFile Already exists:  /kaggle/working/face_only/ktbrplyuax.mp4\nFile Already exists:  /kaggle/working/face_only/bkyoodlpvw.mp4\nFile Already exists:  /kaggle/working/face_only/ijvicicjwi.mp4\nFile Already exists:  /kaggle/working/face_only/plbrhjitqu.mp4\nFile Already exists:  /kaggle/working/face_only/vmdtkugivw.mp4\nFile Already exists:  /kaggle/working/face_only/csrsxklgle.mp4\nFile Already exists:  /kaggle/working/face_only/psptkqaviq.mp4\nFile Already exists:  /kaggle/working/face_only/etnricjray.mp4\nFile Already exists:  /kaggle/working/face_only/wuprhbkgjh.mp4\nFile Already exists:  /kaggle/working/face_only/idhxsxrljg.mp4\nFile Already exists:  /kaggle/working/face_only/aprylcdijv.mp4\nFile Already exists:  /kaggle/working/face_only/gpbngfqtno.mp4\nFile Already exists:  /kaggle/working/face_only/qylogqsvxq.mp4\nFile Already exists:  /kaggle/working/face_only/fnejwlvvsg.mp4\nFile Already exists:  /kaggle/working/face_only/pscilvlcfe.mp4\nFile Already exists:  /kaggle/working/face_only/neawnhakxq.mp4\nFile Already exists:  /kaggle/working/face_only/cynqzgnnkd.mp4\nFile Already exists:  /kaggle/working/face_only/spelnjjqqo.mp4\nFile Already exists:  /kaggle/working/face_only/uiisqrsxtd.mp4\nFile Already exists:  /kaggle/working/face_only/lllejofvot.mp4\nFile Already exists:  /kaggle/working/face_only/whnhzzpgqz.mp4\nFile Already exists:  /kaggle/working/face_only/cvsobewhsk.mp4\nFile Already exists:  /kaggle/working/face_only/mcvjroxtlf.mp4\nFile Already exists:  /kaggle/working/face_only/yqvstvfjjo.mp4\nFile Already exists:  /kaggle/working/face_only/vbocreoktm.mp4\nFile Already exists:  /kaggle/working/face_only/zcnwdrmdsk.mp4\nFile Already exists:  /kaggle/working/face_only/qunqhwcxzp.mp4\nFile Already exists:  /kaggle/working/face_only/wpxqsgmmgz.mp4\nFile Already exists:  /kaggle/working/face_only/hewhitnasz.mp4\nFile Already exists:  /kaggle/working/face_only/dgtdgrzifi.mp4\nFile Already exists:  /kaggle/working/face_only/guplchrlzb.mp4\nFile Already exists:  /kaggle/working/face_only/dnebeevzpl.mp4\nFile Already exists:  /kaggle/working/face_only/hqeldyhmpu.mp4\nFile Already exists:  /kaggle/working/face_only/fuejnktipj.mp4\nFile Already exists:  /kaggle/working/face_only/moetggyxsc.mp4\nFile Already exists:  /kaggle/working/face_only/eujvhvrzyj.mp4\nFile Already exists:  /kaggle/working/face_only/ocwkmbqfuh.mp4\nFile Already exists:  /kaggle/working/face_only/wpjaljwawc.mp4\nFile Already exists:  /kaggle/working/face_only/odkugnvwoe.mp4\nFile Already exists:  /kaggle/working/face_only/djodnxisaa.mp4\nFile Already exists:  /kaggle/working/face_only/bbdeidcmgb.mp4\nFile Already exists:  /kaggle/working/face_only/viwkdohrpx.mp4\nFile Already exists:  /kaggle/working/face_only/ueoosdrklc.mp4\nFile Already exists:  /kaggle/working/face_only/mhvebxvhsx.mp4\nFile Already exists:  /kaggle/working/face_only/pmwhyvxcvr.mp4\nFile Already exists:  /kaggle/working/face_only/arnoeknrix.mp4\nFile Already exists:  /kaggle/working/face_only/gccddsbvpg.mp4\nFile Already exists:  /kaggle/working/face_only/pxugccqdyw.mp4\nFile Already exists:  /kaggle/working/face_only/mmqwucucjx.mp4\nFile Already exists:  /kaggle/working/face_only/usfowtggox.mp4\nFile Already exists:  /kaggle/working/face_only/hyaoeiownm.mp4\nFile Already exists:  /kaggle/working/face_only/zxoqhqjivy.mp4\nFile Already exists:  /kaggle/working/face_only/nmyhzwggkh.mp4\nFile Already exists:  /kaggle/working/face_only/jlckrvhipl.mp4\nFile Already exists:  /kaggle/working/face_only/qnvjmuhqif.mp4\nFile Already exists:  /kaggle/working/face_only/ottiiobbrh.mp4\nFile Already exists:  /kaggle/working/face_only/buyniyufbw.mp4\nFile Already exists:  /kaggle/working/face_only/xsxwrwvfkg.mp4\nFile Already exists:  /kaggle/working/face_only/sbrjiwfrtg.mp4\nFile Already exists:  /kaggle/working/face_only/wbeplfzuvf.mp4\nFile Already exists:  /kaggle/working/face_only/amwqklteuh.mp4\nFile Already exists:  /kaggle/working/face_only/lhtsqtvtpm.mp4\nFile Already exists:  /kaggle/working/face_only/qqokpshvil.mp4\nFile Already exists:  /kaggle/working/face_only/ovzrybxvgr.mp4\nFile Already exists:  /kaggle/working/face_only/iwrkkcfcob.mp4\nFile Already exists:  /kaggle/working/face_only/cgaoujuasi.mp4\nFile Already exists:  /kaggle/working/face_only/kndtikqylz.mp4\nFile Already exists:  /kaggle/working/face_only/ywaecundmo.mp4\nFile Already exists:  /kaggle/working/face_only/jyqysuhyjb.mp4\nFile Already exists:  /kaggle/working/face_only/gpwufippaw.mp4\nFile Already exists:  /kaggle/working/face_only/bzohuudija.mp4\nFile Already exists:  /kaggle/working/face_only/trnznvybjo.mp4\nFile Already exists:  /kaggle/working/face_only/sejwhhsaok.mp4\nFile Already exists:  /kaggle/working/face_only/qjvzhisszu.mp4\nFile Already exists:  /kaggle/working/face_only/bsdyjymwcg.mp4\nFile Already exists:  /kaggle/working/face_only/ypzbqkypyc.mp4\nFile Already exists:  /kaggle/working/face_only/ueshqvntrl.mp4\nFile Already exists:  /kaggle/working/face_only/mprzzwuowr.mp4\nFile Already exists:  /kaggle/working/face_only/yuypjkvzui.mp4\nFile Already exists:  /kaggle/working/face_only/inuntgvmfo.mp4\nFile Already exists:  /kaggle/working/face_only/iqvfopywpa.mp4\nFile Already exists:  /kaggle/working/face_only/uasrnbxdby.mp4\nFile Already exists:  /kaggle/working/face_only/bkhclbvdis.mp4\nFile Already exists:  /kaggle/working/face_only/fmsxomanga.mp4\nFile Already exists:  /kaggle/working/face_only/rursrvigxm.mp4\nFile Already exists:  /kaggle/working/face_only/bbxuciztza.mp4\nFile Already exists:  /kaggle/working/face_only/jpbwbkobnp.mp4\nFile Already exists:  /kaggle/working/face_only/mukyckrtih.mp4\nFile Already exists:  /kaggle/working/face_only/xyrdxhiiju.mp4\nFile Already exists:  /kaggle/working/face_only/kgobofayxb.mp4\nFile Already exists:  /kaggle/working/face_only/ziexmsthog.mp4\nFile Already exists:  /kaggle/working/face_only/silyramuhb.mp4\nFile Already exists:  /kaggle/working/face_only/dajcyskjxs.mp4\nFile Already exists:  /kaggle/working/face_only/gbvllwqbjl.mp4\nFile Already exists:  /kaggle/working/face_only/tqcddzwrby.mp4\nFile Already exists:  /kaggle/working/face_only/eznfhmennm.mp4\nFile Already exists:  /kaggle/working/face_only/fgnofuaqga.mp4\nFile Already exists:  /kaggle/working/face_only/uhyizbpmzk.mp4\nFile Already exists:  /kaggle/working/face_only/jokhonzxiw.mp4\nFile Already exists:  /kaggle/working/face_only/qhvjhqerbn.mp4\nFile Already exists:  /kaggle/working/face_only/bidulzdkec.mp4\nFile Already exists:  /kaggle/working/face_only/vpcwwzaxmn.mp4\nFile Already exists:  /kaggle/working/face_only/ejtondldnk.mp4\nFile Already exists:  /kaggle/working/face_only/ntzghxinnx.mp4\nFile Already exists:  /kaggle/working/face_only/yylreahcso.mp4\nFile Already exists:  /kaggle/working/face_only/fsvnrnvmfa.mp4\nFile Already exists:  /kaggle/working/face_only/oijocicvxu.mp4\nFile Already exists:  /kaggle/working/face_only/lwaatqeuxv.mp4\nFile Already exists:  /kaggle/working/face_only/owrkhoolbu.mp4\nFile Already exists:  /kaggle/working/face_only/tnnjexhjay.mp4\nFile Already exists:  /kaggle/working/face_only/xqbjizvmfu.mp4\nFile Already exists:  /kaggle/working/face_only/lwqmfcsjvp.mp4\nFile Already exists:  /kaggle/working/face_only/wfuyduebtv.mp4\nFile Already exists:  /kaggle/working/face_only/aoqzxlwvmi.mp4\nFile Already exists:  /kaggle/working/face_only/jqcfzqfmuo.mp4\nFile Already exists:  /kaggle/working/face_only/eodeiyybfk.mp4\nFile Already exists:  /kaggle/working/face_only/vfuixopjaf.mp4\nFile Already exists:  /kaggle/working/face_only/vsohijftmr.mp4\nFile Already exists:  /kaggle/working/face_only/jdqwhvbsbe.mp4\nFile Already exists:  /kaggle/working/face_only/dexmozizsn.mp4\nFile Already exists:  /kaggle/working/face_only/shslgpeisw.mp4\nFile Already exists:  /kaggle/working/face_only/tfnuiwjlxd.mp4\nFile Already exists:  /kaggle/working/face_only/dqmkthhjbx.mp4\nFile Already exists:  /kaggle/working/face_only/afadqgujvi.mp4\nFile Already exists:  /kaggle/working/face_only/gtvszqcyiu.mp4\nFile Already exists:  /kaggle/working/face_only/ylasjinpme.mp4\nFile Already exists:  /kaggle/working/face_only/rpqpopztwh.mp4\nFile Already exists:  /kaggle/working/face_only/vfrlbhvpap.mp4\nFile Already exists:  /kaggle/working/face_only/mekideagof.mp4\nFile Already exists:  /kaggle/working/face_only/vazoblhsmf.mp4\nFile Already exists:  /kaggle/working/face_only/ndlzvtwvke.mp4\nFile Already exists:  /kaggle/working/face_only/oqhzpmqnft.mp4\nFile Already exists:  /kaggle/working/face_only/exxdugnweb.mp4\nFile Already exists:  /kaggle/working/face_only/jxnhuoofmp.mp4\nFile Already exists:  /kaggle/working/face_only/jgjedubejh.mp4\nFile Already exists:  /kaggle/working/face_only/xukwfyprsa.mp4\nFile Already exists:  /kaggle/working/face_only/dazcqddmah.mp4\nFile Already exists:  /kaggle/working/face_only/pfvlgficdf.mp4\nFile Already exists:  /kaggle/working/face_only/zjoonppreb.mp4\nFile Already exists:  /kaggle/working/face_only/tcrjgukmpt.mp4\nFile Already exists:  /kaggle/working/face_only/gnnuktzwwy.mp4\nFile Already exists:  /kaggle/working/face_only/bmfuosxwoc.mp4\nFile Already exists:  /kaggle/working/face_only/lkkandgvbi.mp4\nFile Already exists:  /kaggle/working/face_only/bnlhnkfkrg.mp4\nFile Already exists:  /kaggle/working/face_only/jgwvgzjaeh.mp4\nFile Already exists:  /kaggle/working/face_only/iaaecuquha.mp4\nFile Already exists:  /kaggle/working/face_only/ptqgzekfid.mp4\nFile Already exists:  /kaggle/working/face_only/rcsdwyosav.mp4\nFile Already exists:  /kaggle/working/face_only/cvoikrdglc.mp4\nFile Already exists:  /kaggle/working/face_only/nwrektpeut.mp4\nFile Already exists:  /kaggle/working/face_only/rwsvyxrubl.mp4\nFile Already exists:  /kaggle/working/face_only/cvcznehtwl.mp4\nFile Already exists:  /kaggle/working/face_only/ydyolkfmxc.mp4\nFile Already exists:  /kaggle/working/face_only/eqhltmstho.mp4\nFile Already exists:  /kaggle/working/face_only/ejughyndqp.mp4\nFile Already exists:  /kaggle/working/face_only/vdqritvjfl.mp4\nFile Already exists:  /kaggle/working/face_only/utzsehqspn.mp4\nFile Already exists:  /kaggle/working/face_only/ijgnftkova.mp4\nFile Already exists:  /kaggle/working/face_only/kbhlvljpre.mp4\nFile Already exists:  /kaggle/working/face_only/rgzvjfpwlo.mp4\nFile Already exists:  /kaggle/working/face_only/zbrjspdcit.mp4\nFile Already exists:  /kaggle/working/face_only/oupjhtodai.mp4\nFile Already exists:  /kaggle/working/face_only/ilwecgcnwg.mp4\nFile Already exists:  /kaggle/working/face_only/escubycnrb.mp4\nFile Already exists:  /kaggle/working/face_only/wjhuumhiib.mp4\nFile Already exists:  /kaggle/working/face_only/afjiqyggtd.mp4\nFile Already exists:  /kaggle/working/face_only/mwfatmdvci.mp4\nFile Already exists:  /kaggle/working/face_only/sswhgeqjrt.mp4\nFile Already exists:  /kaggle/working/face_only/zjuqinpzps.mp4\nFile Already exists:  /kaggle/working/face_only/hciwewlauj.mp4\nFile Already exists:  /kaggle/working/face_only/ltigamxmii.mp4\nFile Already exists:  /kaggle/working/face_only/dmzfhikjjo.mp4\nFile Already exists:  /kaggle/working/face_only/yjchlfqxpj.mp4\nFile Already exists:  /kaggle/working/face_only/eyxjlhkadh.mp4\nFile Already exists:  /kaggle/working/face_only/rtjtgxdrcn.mp4\nFile Already exists:  /kaggle/working/face_only/fncnobpzzx.mp4\nFile Already exists:  /kaggle/working/face_only/hofyuwtrcy.mp4\nFile Already exists:  /kaggle/working/face_only/iwnfvkmktq.mp4\nFile Already exists:  /kaggle/working/face_only/lpcqumwcia.mp4\nFile Already exists:  /kaggle/working/face_only/qpuvmliiad.mp4\nFile Already exists:  /kaggle/working/face_only/iahzcxmuck.mp4\nFile Already exists:  /kaggle/working/face_only/lcrtuazjgq.mp4\nFile Already exists:  /kaggle/working/face_only/giuymhlbyo.mp4\nFile Already exists:  /kaggle/working/face_only/ceyewzqnup.mp4\nFile Already exists:  /kaggle/working/face_only/iuxopnkzzc.mp4\nFile Already exists:  /kaggle/working/face_only/bwocxfcknz.mp4\nFile Already exists:  /kaggle/working/face_only/bvkfgeyaif.mp4\nFile Already exists:  /kaggle/working/face_only/cqiscqrtlw.mp4\nFile Already exists:  /kaggle/working/face_only/glttzneqaz.mp4\nFile Already exists:  /kaggle/working/face_only/jdxnotoadb.mp4\nFile Already exists:  /kaggle/working/face_only/gkbbngtnfk.mp4\nFile Already exists:  /kaggle/working/face_only/hzlitwzkhf.mp4\nFile Already exists:  /kaggle/working/face_only/gldpafckwo.mp4\nFile Already exists:  /kaggle/working/face_only/baqledjaon.mp4\nFile Already exists:  /kaggle/working/face_only/kgotoprpim.mp4\nFile Already exists:  /kaggle/working/face_only/tpzcpkffia.mp4\nFile Already exists:  /kaggle/working/face_only/qvgutokvct.mp4\nFile Already exists:  /kaggle/working/face_only/exdxpotzrw.mp4\nFile Already exists:  /kaggle/working/face_only/qhlybfsdsr.mp4\nFile Already exists:  /kaggle/working/face_only/wvvzhovtff.mp4\nFile Already exists:  /kaggle/working/face_only/evirwnkqms.mp4\nFile Already exists:  /kaggle/working/face_only/kircengljw.mp4\nFile Already exists:  /kaggle/working/face_only/dtwmkvalrf.mp4\nFile Already exists:  /kaggle/working/face_only/xlnaxrwvcx.mp4\nFile Already exists:  /kaggle/working/face_only/afqaubpglg.mp4\nFile Already exists:  /kaggle/working/face_only/knafngkgen.mp4\nFile Already exists:  /kaggle/working/face_only/udcpjfvqro.mp4\nFile Already exists:  /kaggle/working/face_only/jovrnujurf.mp4\nFile Already exists:  /kaggle/working/face_only/bqhcjuivwg.mp4\nFile Already exists:  /kaggle/working/face_only/cmlvgoiwvz.mp4\nFile Already exists:  /kaggle/working/face_only/gmhosclfho.mp4\nFile Already exists:  /kaggle/working/face_only/osndijcoyz.mp4\nFile Already exists:  /kaggle/working/face_only/qwrpagiovn.mp4\nFile Already exists:  /kaggle/working/face_only/ambmklrhtt.mp4\nFile Already exists:  /kaggle/working/face_only/gqobzkvpep.mp4\nFile Already exists:  /kaggle/working/face_only/oomtdwuvll.mp4\nFile Already exists:  /kaggle/working/face_only/purmwibzcn.mp4\nFile Already exists:  /kaggle/working/face_only/jhkdzxgiig.mp4\nFile Already exists:  /kaggle/working/face_only/lwmliuhzmf.mp4\nFile Already exists:  /kaggle/working/face_only/llkiunqvzt.mp4\nFile Already exists:  /kaggle/working/face_only/cwoiryhauz.mp4\nFile Already exists:  /kaggle/working/face_only/lhpwfocycv.mp4\nFile Already exists:  /kaggle/working/face_only/zklsugjfap.mp4\nFile Already exists:  /kaggle/working/face_only/jcafibbcdx.mp4\nFile Already exists:  /kaggle/working/face_only/nwrmvgztnf.mp4\nFile Already exists:  /kaggle/working/face_only/rhayeawnsq.mp4\nFile Already exists:  /kaggle/working/face_only/zqppxkzzou.mp4\nFile Already exists:  /kaggle/working/face_only/nkppbhzwqc.mp4\nFile Already exists:  /kaggle/working/face_only/fhzpmudsrj.mp4\nFile Already exists:  /kaggle/working/face_only/yelseuucoz.mp4\nFile Already exists:  /kaggle/working/face_only/pfrribcoce.mp4\nFile Already exists:  /kaggle/working/face_only/vnwouygwjh.mp4\nFile Already exists:  /kaggle/working/face_only/nezdynaehr.mp4\nFile Already exists:  /kaggle/working/face_only/ydkzqxozzx.mp4\nFile Already exists:  /kaggle/working/face_only/oltexwbmjq.mp4\nFile Already exists:  /kaggle/working/face_only/qdvzovpzxz.mp4\nFile Already exists:  /kaggle/working/face_only/fdibsyxhwu.mp4\nFile Already exists:  /kaggle/working/face_only/uutxmgqajd.mp4\nFile Already exists:  /kaggle/working/face_only/uzwhknkitr.mp4\nFile Already exists:  /kaggle/working/face_only/efbkgcgnnk.mp4\nFile Already exists:  /kaggle/working/face_only/yeywbzdmsl.mp4\nFile Already exists:  /kaggle/working/face_only/nnuyijzlju.mp4\nFile Already exists:  /kaggle/working/face_only/iqsxnucxvo.mp4\nFile Already exists:  /kaggle/working/face_only/jhegswpvdq.mp4\nFile Already exists:  /kaggle/working/face_only/adlbyccevz.mp4\nFile Already exists:  /kaggle/working/face_only/wchmfhotgt.mp4\nFile Already exists:  /kaggle/working/face_only/zxuuvcomyw.mp4\nFile Already exists:  /kaggle/working/face_only/rvggegluxf.mp4\nFile Already exists:  /kaggle/working/face_only/nbymxrswmu.mp4\nFile Already exists:  /kaggle/working/face_only/pzdmbizzii.mp4\nFile Already exists:  /kaggle/working/face_only/rlvaxiqant.mp4\nFile Already exists:  /kaggle/working/face_only/hqacfyyvqa.mp4\nFile Already exists:  /kaggle/working/face_only/avujziraao.mp4\nFile Already exists:  /kaggle/working/face_only/mjoafcwkac.mp4\nFile Already exists:  /kaggle/working/face_only/lofdvdkycg.mp4\nFile Already exists:  /kaggle/working/face_only/ondrruihyu.mp4\nFile Already exists:  /kaggle/working/face_only/ndtiurivhc.mp4\nFile Already exists:  /kaggle/working/face_only/hrthfgffnf.mp4\nFile Already exists:  /kaggle/working/face_only/opletbcjvs.mp4\nFile Already exists:  /kaggle/working/face_only/pnhxtiqyef.mp4\nFile Already exists:  /kaggle/working/face_only/tzwitggfhn.mp4\nFile Already exists:  /kaggle/working/face_only/cdjisxdgbq.mp4\nFile Already exists:  /kaggle/working/face_only/lofyajpsll.mp4\nFile Already exists:  /kaggle/working/face_only/cfwdlimdjk.mp4\nFile Already exists:  /kaggle/working/face_only/spkopdnnkf.mp4\nFile Already exists:  /kaggle/working/face_only/nzzhokxgyu.mp4\nFile Already exists:  /kaggle/working/face_only/rapfwfntyj.mp4\nFile Already exists:  /kaggle/working/face_only/wuziejscwj.mp4\nFile Already exists:  /kaggle/working/face_only/sgvgaqcrec.mp4\nFile Already exists:  /kaggle/working/face_only/vtjidnmwxh.mp4\nFile Already exists:  /kaggle/working/face_only/ncmfiprfwc.mp4\nFile Already exists:  /kaggle/working/face_only/azpgkhnbfq.mp4\nFile Already exists:  /kaggle/working/face_only/wzctjlievz.mp4\nFile Already exists:  /kaggle/working/face_only/jzwmxvkgwi.mp4\nFile Already exists:  /kaggle/working/face_only/pnfizwuebk.mp4\nFile Already exists:  /kaggle/working/face_only/ygasktqyov.mp4\nFile Already exists:  /kaggle/working/face_only/iagtuzbrax.mp4\nFile Already exists:  /kaggle/working/face_only/oesmmyhzmi.mp4\nFile Already exists:  /kaggle/working/face_only/eomckefhqz.mp4\nFile Already exists:  /kaggle/working/face_only/pprgcdyzbr.mp4\nFile Already exists:  /kaggle/working/face_only/peqrlhqeuk.mp4\nFile Already exists:  /kaggle/working/face_only/rfbhmfkysx.mp4\nFile Already exists:  /kaggle/working/face_only/nhshcfhcxe.mp4\nFile Already exists:  /kaggle/working/face_only/iqbrblvxvk.mp4\nFile Already exists:  /kaggle/working/face_only/kqepmqpxmo.mp4\nFile Already exists:  /kaggle/working/face_only/luhndqsljl.mp4\nFile Already exists:  /kaggle/working/face_only/ttizjhiwdt.mp4\nFile Already exists:  /kaggle/working/face_only/bjllfiganv.mp4\nFile Already exists:  /kaggle/working/face_only/ofxdydegsc.mp4\nFile Already exists:  /kaggle/working/face_only/jfkwkohdoc.mp4\nFile Already exists:  /kaggle/working/face_only/khokwspqph.mp4\nFile Already exists:  /kaggle/working/face_only/uyhkwtjbwb.mp4\nFile Already exists:  /kaggle/working/face_only/cisyhndlli.mp4\nFile Already exists:  /kaggle/working/face_only/smeawqunuq.mp4\nFile Already exists:  /kaggle/working/face_only/lirclscpfu.mp4\nFile Already exists:  /kaggle/working/face_only/erotdfkdnr.mp4\nFile Already exists:  /kaggle/working/face_only/pnljeroaga.mp4\nFile Already exists:  /kaggle/working/face_only/pnpylbwrxe.mp4\nFile Already exists:  /kaggle/working/face_only/fednyefrrm.mp4\nFile Already exists:  /kaggle/working/face_only/rdtcetmywq.mp4\nFile Already exists:  /kaggle/working/face_only/rtawydpugq.mp4\nFile Already exists:  /kaggle/working/face_only/ajwbewcmwi.mp4\nFile Already exists:  /kaggle/working/face_only/orzltllnmg.mp4\nFile Already exists:  /kaggle/working/face_only/iqhllschqx.mp4\nFile Already exists:  /kaggle/working/face_only/cxgdlbmeqy.mp4\nFile Already exists:  /kaggle/working/face_only/yavswhuxyv.mp4\nFile Already exists:  /kaggle/working/face_only/jhfykjblun.mp4\nFile Already exists:  /kaggle/working/face_only/esacncvhun.mp4\nFile Already exists:  /kaggle/working/face_only/qkromhcvfm.mp4\nFile Already exists:  /kaggle/working/face_only/onxdyexufh.mp4\nFile Already exists:  /kaggle/working/face_only/oxrrtafxaw.mp4\nFile Already exists:  /kaggle/working/face_only/tuqgljzqex.mp4\nFile Already exists:  /kaggle/working/face_only/bhfpmvpmyw.mp4\nFile Already exists:  /kaggle/working/face_only/ywnuerndit.mp4\nFile Already exists:  /kaggle/working/face_only/osflukecxk.mp4\nFile Already exists:  /kaggle/working/face_only/yirsrbjfjm.mp4\nFile Already exists:  /kaggle/working/face_only/ydmhrmqspc.mp4\nFile Already exists:  /kaggle/working/face_only/qxqtwricad.mp4\nFile Already exists:  /kaggle/working/face_only/hrdlenccwv.mp4\nFile Already exists:  /kaggle/working/face_only/mjvxkorliv.mp4\nFile Already exists:  /kaggle/working/face_only/ecpoizyscr.mp4\nFile Already exists:  /kaggle/working/face_only/styfekwufb.mp4\nFile Already exists:  /kaggle/working/face_only/odjtvuqqwr.mp4\nFile Already exists:  /kaggle/working/face_only/qerfvwacdh.mp4\nFile Already exists:  /kaggle/working/face_only/eciwkxuihs.mp4\nFile Already exists:  /kaggle/working/face_only/lhayhvqjmg.mp4\nFile Already exists:  /kaggle/working/face_only/eilxyvmvvn.mp4\nFile Already exists:  /kaggle/working/face_only/ookvttsbqn.mp4\nFile Already exists:  /kaggle/working/face_only/mzybpbboto.mp4\nFile Already exists:  /kaggle/working/face_only/enxazpptrf.mp4\nFile Already exists:  /kaggle/working/face_only/wfsqddoonu.mp4\nFile Already exists:  /kaggle/working/face_only/kjedgbvxmc.mp4\nFile Already exists:  /kaggle/working/face_only/lpbobaovmj.mp4\nFile Already exists:  /kaggle/working/face_only/zjqyiwptph.mp4\nFile Already exists:  /kaggle/working/face_only/lollkigjpp.mp4\nFile Already exists:  /kaggle/working/face_only/hofqokfyvd.mp4\nFile Already exists:  /kaggle/working/face_only/wkoxurxilc.mp4\nFile Already exists:  /kaggle/working/face_only/wovraiwadu.mp4\nFile Already exists:  /kaggle/working/face_only/ycgmovacdu.mp4\nFile Already exists:  /kaggle/working/face_only/tuxkqcphyd.mp4\nFile Already exists:  /kaggle/working/face_only/zyzgthbmcd.mp4\nFile Already exists:  /kaggle/working/face_only/dpcahzyjmo.mp4\nFile Already exists:  /kaggle/working/face_only/czbsjdjmlq.mp4\nFile Already exists:  /kaggle/working/face_only/ayqetwwwjn.mp4\nFile Already exists:  /kaggle/working/face_only/xvnztwkpnw.mp4\nFile Already exists:  /kaggle/working/face_only/kfzuekxbbb.mp4\nFile Already exists:  /kaggle/working/face_only/zhlhmvpugd.mp4\nFile Already exists:  /kaggle/working/face_only/yjvxjpuucr.mp4\nFile Already exists:  /kaggle/working/face_only/mmxzfgnsqy.mp4\nFile Already exists:  /kaggle/working/face_only/jnwgtwdhxe.mp4\nFile Already exists:  /kaggle/working/face_only/epznxyujvz.mp4\nFile Already exists:  /kaggle/working/face_only/vvcvpgbpyw.mp4\nFile Already exists:  /kaggle/working/face_only/pqrbxifkas.mp4\nFile Already exists:  /kaggle/working/face_only/dyzkwqexox.mp4\nFile Already exists:  /kaggle/working/face_only/qqqyeipyhu.mp4\nFile Already exists:  /kaggle/working/face_only/sxucmzlqvu.mp4\nFile Already exists:  /kaggle/working/face_only/jocksapjca.mp4\nFile Already exists:  /kaggle/working/face_only/xiesaacmcb.mp4\nFile Already exists:  /kaggle/working/face_only/phzijipsqo.mp4\nFile Already exists:  /kaggle/working/face_only/kdwmfiatqd.mp4\nFile Already exists:  /kaggle/working/face_only/tlkynujfqr.mp4\nFile Already exists:  /kaggle/working/face_only/lrrptmaseg.mp4\nFile Already exists:  /kaggle/working/face_only/eweohmorwm.mp4\nFile Already exists:  /kaggle/working/face_only/vgdllmzjcw.mp4\nFile Already exists:  /kaggle/working/face_only/lboalepbxp.mp4\nFile Already exists:  /kaggle/working/face_only/pqrjmnwnws.mp4\nFile Already exists:  /kaggle/working/face_only/nizuthbrif.mp4\nFile Already exists:  /kaggle/working/face_only/lxadgjqzbf.mp4\nFile Already exists:  /kaggle/working/face_only/deqdvahbhg.mp4\nFile Already exists:  /kaggle/working/face_only/wazeinvyng.mp4\nFile Already exists:  /kaggle/working/face_only/ebzsbvkutx.mp4\nFile Already exists:  /kaggle/working/face_only/svwpjzdgvv.mp4\nFile Already exists:  /kaggle/working/face_only/ipxsymswgp.mp4\nFile Already exists:  /kaggle/working/face_only/knpxmrizay.mp4\nFile Already exists:  /kaggle/working/face_only/hkfajoookb.mp4\nFile Already exists:  /kaggle/working/face_only/scxrwnofhb.mp4\nFile Already exists:  /kaggle/working/face_only/wymlvlyomw.mp4\nFile Already exists:  /kaggle/working/face_only/epvnrjtjsi.mp4\nFile Already exists:  /kaggle/working/face_only/kytzoyblhx.mp4\nFile Already exists:  /kaggle/working/face_only/tvnhbhcmra.mp4\nFile Already exists:  /kaggle/working/face_only/pbomitcxqq.mp4\nFile Already exists:  /kaggle/working/face_only/dsealbmwme.mp4\nFile Already exists:  /kaggle/working/face_only/bfkzrgovsv.mp4\nFile Already exists:  /kaggle/working/face_only/pazpnfrbbc.mp4\nFile Already exists:  /kaggle/working/face_only/sfjualzaic.mp4\nFile Already exists:  /kaggle/working/face_only/ptqwsbbuxi.mp4\nFile Already exists:  /kaggle/working/face_only/vmxurpilcs.mp4\nFile Already exists:  /kaggle/working/face_only/bavhucvtaq.mp4\nFile Already exists:  /kaggle/working/face_only/jtnyvsvczz.mp4\nFile Already exists:  /kaggle/working/face_only/wjjqqdrxyr.mp4\nFile Already exists:  /kaggle/working/face_only/frruapayul.mp4\nFile Already exists:  /kaggle/working/face_only/ahjgsdsldx.mp4\nFile Already exists:  /kaggle/working/face_only/wxmglytpbf.mp4\nFile Already exists:  /kaggle/working/face_only/alzajhomle.mp4\nFile Already exists:  /kaggle/working/face_only/gqsxnpltxr.mp4\nFile Already exists:  /kaggle/working/face_only/utkfpuuvop.mp4\nFile Already exists:  /kaggle/working/face_only/jibhugdfbs.mp4\nFile Already exists:  /kaggle/working/face_only/jfcsumiude.mp4\nFile Already exists:  /kaggle/working/face_only/fcnosnknhr.mp4\nFile Already exists:  /kaggle/working/face_only/ctbvhwpvhy.mp4\nFile Already exists:  /kaggle/working/face_only/tpuaaqksjs.mp4\nFile Already exists:  /kaggle/working/face_only/hzmellkdvz.mp4\nFile Already exists:  /kaggle/working/face_only/xqaojmjgxt.mp4\nFile Already exists:  /kaggle/working/face_only/qbearsyziz.mp4\nFile Already exists:  /kaggle/working/face_only/eeldudssre.mp4\nFile Already exists:  /kaggle/working/face_only/ydtqmvjoih.mp4\nFile Already exists:  /kaggle/working/face_only/ghqepbcmgb.mp4\nFile Already exists:  /kaggle/working/face_only/smxmfmyhiy.mp4\nFile Already exists:  /kaggle/working/face_only/bfmoopvnho.mp4\nFile Already exists:  /kaggle/working/face_only/vznzbpywab.mp4\nFile Already exists:  /kaggle/working/face_only/ossqgahpqp.mp4\nFile Already exists:  /kaggle/working/face_only/wcursjyswg.mp4\nFile Already exists:  /kaggle/working/face_only/slakzltuxq.mp4\nFile Already exists:  /kaggle/working/face_only/lpjusdgyqv.mp4\nFile Already exists:  /kaggle/working/face_only/mffjwgmdlw.mp4\nFile Already exists:  /kaggle/working/face_only/unhxlmyozc.mp4\nFile Already exists:  /kaggle/working/face_only/eedwyzhipo.mp4\nFile Already exists:  /kaggle/working/face_only/qjpjsbuowe.mp4\nFile Already exists:  /kaggle/working/face_only/dwqbukyujc.mp4\nFile Already exists:  /kaggle/working/face_only/dbeouqereh.mp4\nFile Already exists:  /kaggle/working/face_only/hvajujwuez.mp4\nFile Already exists:  /kaggle/working/face_only/wypdykzzma.mp4\nFile Already exists:  /kaggle/working/face_only/mhxqbhgxgr.mp4\nFile Already exists:  /kaggle/working/face_only/mejxwrvpiu.mp4\nFile Already exists:  /kaggle/working/face_only/vapuddgzcr.mp4\nFile Already exists:  /kaggle/working/face_only/sxnhvmsjje.mp4\nFile Already exists:  /kaggle/working/face_only/uwaazdihiw.mp4\nFile Already exists:  /kaggle/working/face_only/syyqagkkyk.mp4\nFile Already exists:  /kaggle/working/face_only/syemxznzhs.mp4\nFile Already exists:  /kaggle/working/face_only/ewavdsgjyf.mp4\nFile Already exists:  /kaggle/working/face_only/zmrnjhfxed.mp4\nFile Already exists:  /kaggle/working/face_only/vnsxdkjjtk.mp4\nFile Already exists:  /kaggle/working/face_only/idnbymuzkb.mp4\nFile Already exists:  /kaggle/working/face_only/pwwdehqvoc.mp4\nFile Already exists:  /kaggle/working/face_only/ofdolzwedv.mp4\nFile Already exists:  /kaggle/working/face_only/vzomknwbuv.mp4\nFile Already exists:  /kaggle/working/face_only/swujnifgsf.mp4\nFile Already exists:  /kaggle/working/face_only/jmvmumowjq.mp4\nFile Already exists:  /kaggle/working/face_only/bqkmlqpaqw.mp4\nFile Already exists:  /kaggle/working/face_only/ozgcmnllow.mp4\nFile Already exists:  /kaggle/working/face_only/ewrtxhsahr.mp4\nFile Already exists:  /kaggle/working/face_only/gplcznqznv.mp4\nFile Already exists:  /kaggle/working/face_only/ejvutjytwt.mp4\nFile Already exists:  /kaggle/working/face_only/sofgwqaoti.mp4\nFile Already exists:  /kaggle/working/face_only/kqfpeocxls.mp4\nFile Already exists:  /kaggle/working/face_only/njcrpzrbth.mp4\nFile Already exists:  /kaggle/working/face_only/ucmjjvdmzf.mp4\nFile Already exists:  /kaggle/working/face_only/uoznjlqxcj.mp4\nFile Already exists:  /kaggle/working/face_only/vsxthyzjid.mp4\nFile Already exists:  /kaggle/working/face_only/vgiwjhtzcw.mp4\nFile Already exists:  /kaggle/working/face_only/dtzcznnnri.mp4\nFile Already exists:  /kaggle/working/face_only/ghmdirbfiz.mp4\nFile Already exists:  /kaggle/working/face_only/ngmddfsssu.mp4\nFile Already exists:  /kaggle/working/face_only/vjydkkczpi.mp4\nFile Already exists:  /kaggle/working/face_only/sfxmqyoahx.mp4\nFile Already exists:  /kaggle/working/face_only/ptxmbsgifn.mp4\nFile Already exists:  /kaggle/working/face_only/dbxpzfbhsn.mp4\nFile Already exists:  /kaggle/working/face_only/llbticqvai.mp4\nFile Already exists:  /kaggle/working/face_only/jipfjtgrqv.mp4\nFile Already exists:  /kaggle/working/face_only/eorpfyvlok.mp4\nFile Already exists:  /kaggle/working/face_only/zeoqaqnejv.mp4\nFile Already exists:  /kaggle/working/face_only/ypkcxputdw.mp4\nFile Already exists:  /kaggle/working/face_only/fknnakjgzg.mp4\nFile Already exists:  /kaggle/working/face_only/czftcuzylj.mp4\nFile Already exists:  /kaggle/working/face_only/lamylbljvb.mp4\nFile Already exists:  /kaggle/working/face_only/woozbsrgad.mp4\nFile Already exists:  /kaggle/working/face_only/dmfysraiiw.mp4\nFile Already exists:  /kaggle/working/face_only/drunryhskx.mp4\nFile Already exists:  /kaggle/working/face_only/qlbfklnrfc.mp4\nFile Already exists:  /kaggle/working/face_only/cnfcweqfvl.mp4\nFile Already exists:  /kaggle/working/face_only/rzlvyzdosp.mp4\nFile Already exists:  /kaggle/working/face_only/keckgmvewj.mp4\nFile Already exists:  /kaggle/working/face_only/ebmkpusppg.mp4\nFile Already exists:  /kaggle/working/face_only/ievjqsivjx.mp4\nFile Already exists:  /kaggle/working/face_only/fpqcsldjwl.mp4\nFile Already exists:  /kaggle/working/face_only/ymbbsgxpvd.mp4\nFile Already exists:  /kaggle/working/face_only/vpvuklgjyc.mp4\nFile Already exists:  /kaggle/working/face_only/qgenivlwxx.mp4\nFile Already exists:  /kaggle/working/face_only/upphlazxcl.mp4\nFile Already exists:  /kaggle/working/face_only/abbhzhtjru.mp4\nFile Already exists:  /kaggle/working/face_only/cxbsalbmst.mp4\nFile Already exists:  /kaggle/working/face_only/khewuhkxrz.mp4\nFile Already exists:  /kaggle/working/face_only/gfwuebiijb.mp4\nFile Already exists:  /kaggle/working/face_only/axutpjywuu.mp4\nFile Already exists:  /kaggle/working/face_only/loxrvukpvg.mp4\nFile Already exists:  /kaggle/working/face_only/cqvglgkzui.mp4\nFile Already exists:  /kaggle/working/face_only/wyflzszarj.mp4\nFile Already exists:  /kaggle/working/face_only/weexsxqrfz.mp4\nFile Already exists:  /kaggle/working/face_only/uefibkzmxf.mp4\nFile Already exists:  /kaggle/working/face_only/xpdktunzqf.mp4\nFile Already exists:  /kaggle/working/face_only/afuvfbnutt.mp4\nFile Already exists:  /kaggle/working/face_only/uydlsvuore.mp4\nFile Already exists:  /kaggle/working/face_only/rikiylalwk.mp4\nFile Already exists:  /kaggle/working/face_only/lhurhgpffk.mp4\nFile Already exists:  /kaggle/working/face_only/esxqgermfl.mp4\nFile Already exists:  /kaggle/working/face_only/pwhfyhiylv.mp4\nFile Already exists:  /kaggle/working/face_only/xgurqibwmy.mp4\nFile Already exists:  /kaggle/working/face_only/fjdbygjzfi.mp4\nFile Already exists:  /kaggle/working/face_only/ptrminytzx.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"672 iibfhdltcd.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"673 sotclwmskg.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"674 nmupmlzmld.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"675 voghvypasj.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"676 fkneuizzgi.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"677 hfurjnbjvj.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"678 ekvwqojmnz.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"679 eschwpqksb.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"680 kanfyaxyue.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"681 tayacfzhpw.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"682 ppdmldrwmq.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"683 wdjakibrey.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"684 zzkfomgfoj.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"685 joadtqvfwc.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"686 nzzafcoiua.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"687 okiesquksn.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"688 wfqcondnoq.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"689 ahbrmguujk.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"690 isijlzptfp.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"691 kdioikogxu.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"692 trdmmncyhp.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"693 oqmwbfcejq.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"694 qpzzzncyza.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"695 depcrcqwai.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"696 fzvhplfjna.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"697 egfscjuldp.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"698 omotodymgb.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"699 vffcezqrqs.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"700 ivxbutvlwk.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"701 cyfjdftqxg.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"702 uazxeiwcrh.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"703 xktwgzpomg.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"704 jdcoheaygf.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"705 pluqjkqszt.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"706 blzmqourro.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"707 ntdtubxayn.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"708 ohocbeznct.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"709 xpndzhodlh.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"710 waoxgtosrb.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"711 xirkoqnzjk.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"712 utiephcocy.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"713 iyheosista.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"714 fassenuwad.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"715 yazfzhtmlj.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"716 ztaitjogri.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"717 suvvyowajw.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"718 qycjisbrwf.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"719 wqtkesdpqt.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"720 hdvrxlrnyk.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"721 ifdiyylyow.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"722 obzdynopsw.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"723 musytuwwhy.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"724 qywtzjmxlp.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"725 cjiwxfwcit.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"726 cwzzqzmblh.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"727 lltnqnduyw.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"728 nemzrqisrf.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"729 ixcguszlsk.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"730 okxrmnqsjp.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"731 vzbdwilegq.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"732 etwpngxyoo.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"733 atyslhetzg.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"734 webrimfvtt.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"735 ngxfhthyol.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"736 ahhjoedhbf.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"737 avyxflippj.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"738 lbnuxynggy.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"739 ntssjzspmo.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"740 rzjpckpslj.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"741 ftxsiqlwtu.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"742 ujdpypuzmd.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"743 dnxpsqsuil.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"744 cglpyitrzw.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"745 yhsgsyogrl.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"746 wigvufxjlt.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"747 kmflbaixsk.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"748 ihubnfhyuw.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"749 gbinyqapyk.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"750 sivnraghku.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"751 gddtghkyjl.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"752 uwhdqtpvfw.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"753 juzhmqbiwn.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"},{"name":"stdout","text":"754 oggjtmpnrb.mp4\n","output_type":"stream"},{"name":"stderr","text":"OpenCV: FFMPEG: tag 0x47504a4d/'MJPG' is not supported with codec id 7 and format 'mp4 / MP4 (MPEG-4 Part 14)'\nOpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'\n","output_type":"stream"}],"execution_count":null},{"cell_type":"code","source":"import cv2\nimport glob\nerr_vid = []\nfor vid in glob.glob('/kaggle/working/face_only/*.mp4'):\n    cap = cv2.VideoCapture(vid)\n    total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))\n    cap.release()\n\n    if total_frames != 20:\n        err_vid.append(vid.split('/')[-1])\n\nprint(len(err_vid))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-11T09:54:11.58974Z","iopub.execute_input":"2024-12-11T09:54:11.590595Z","iopub.status.idle":"2024-12-11T09:54:12.126435Z","shell.execute_reply.started":"2024-12-11T09:54:11.590554Z","shell.execute_reply":"2024-12-11T09:54:12.125758Z"}},"outputs":[{"name":"stderr","text":"[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5ac7b6f930c0] moov atom not found\n","output_type":"stream"},{"name":"stdout","text":"168\n","output_type":"stream"}],"execution_count":3},{"cell_type":"code","source":"# Loại bỏ các hàng có giá trị cột 'Value' nằm trong remove_list\ndf = df[~df['URI'].isin(err_vid)].reset_index(drop=True)\ndf.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-11T09:54:32.402281Z","iopub.execute_input":"2024-12-11T09:54:32.402576Z","iopub.status.idle":"2024-12-11T09:54:32.422465Z","shell.execute_reply.started":"2024-12-11T09:54:32.402553Z","shell.execute_reply":"2024-12-11T09:54:32.421416Z"}},"outputs":[{"execution_count":4,"output_type":"execute_result","data":{"text/plain":"              URI label  split        original\n0  noagmcpxfb.mp4  FAKE  train  dgtdgrzifi.mp4\n1  xcmkbpzfzw.mp4  FAKE  train  aoqzxlwvmi.mp4\n2  uywdjgfgqr.mp4  FAKE  train  oupjhtodai.mp4\n3  kfnjscqwpr.mp4  FAKE  train  xukwfyprsa.mp4\n4  qzfmctgxcs.mp4  REAL  train             NaN","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>URI</th>\n      <th>label</th>\n      <th>split</th>\n      <th>original</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>noagmcpxfb.mp4</td>\n      <td>FAKE</td>\n      <td>train</td>\n      <td>dgtdgrzifi.mp4</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>xcmkbpzfzw.mp4</td>\n      <td>FAKE</td>\n      <td>train</td>\n      <td>aoqzxlwvmi.mp4</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>uywdjgfgqr.mp4</td>\n      <td>FAKE</td>\n      <td>train</td>\n      <td>oupjhtodai.mp4</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>kfnjscqwpr.mp4</td>\n      <td>FAKE</td>\n      <td>train</td>\n      <td>xukwfyprsa.mp4</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>qzfmctgxcs.mp4</td>\n      <td>REAL</td>\n      <td>train</td>\n      <td>NaN</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":4},{"cell_type":"code","source":"df['label'].value_counts()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-11T09:54:34.425547Z","iopub.execute_input":"2024-12-11T09:54:34.426223Z","iopub.status.idle":"2024-12-11T09:54:34.436252Z","shell.execute_reply.started":"2024-12-11T09:54:34.426189Z","shell.execute_reply":"2024-12-11T09:54:34.435395Z"}},"outputs":[{"execution_count":5,"output_type":"execute_result","data":{"text/plain":"label\nFAKE    1905\nREAL     390\nName: count, dtype: int64"},"metadata":{}}],"execution_count":5},{"cell_type":"code","source":"import torch\nimport torchvision\nfrom torchvision import transforms\nfrom torch.utils.data import DataLoader\nfrom torch.utils.data.dataset import Dataset\n\nclass video_dataset(Dataset):\n    def __init__(self,video_names,labels,sequence_length = 60,transform = None):\n        self.video_names = video_names\n        self.labels = labels\n        self.transform = transform\n        self.count = sequence_length\n    def __len__(self):\n        return len(self.video_names)\n    def __getitem__(self,idx):\n        video_path = self.video_names[idx]\n        frames = []\n        a = int(100/self.count)\n        first_frame = np.random.randint(0,a)\n        temp_video = video_path.split('/')[-1]\n        #print(temp_video)\n        label = self.labels.iloc[(labels.loc[labels[\"URI\"] == temp_video].index.values[0]),1]\n        if(label == 'FAKE'):\n          label = 0\n        if(label == 'REAL'):\n          label = 1\n        for i,frame in enumerate(self.frame_extract(video_path)):\n          frames.append(self.transform(frame))\n          if(len(frames) == self.count):\n            break\n\n        frames = torch.stack(frames)\n        #print(\"length:\" , len(frames), \"label\",label)\n        return frames,label\n    def frame_extract(self,path):\n      vidObj = cv2.VideoCapture(path)\n      success = 1\n      while success:\n          success, image = vidObj.read()\n          if success:\n              yield image","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-11T09:54:36.088119Z","iopub.execute_input":"2024-12-11T09:54:36.088451Z","iopub.status.idle":"2024-12-11T09:54:39.981231Z","shell.execute_reply.started":"2024-12-11T09:54:36.08842Z","shell.execute_reply":"2024-12-11T09:54:39.980472Z"}},"outputs":[],"execution_count":6},{"cell_type":"code","source":"import torch\nimport torchvision\nfrom torchvision import transforms\nfrom torch.utils.data import DataLoader\nfrom torch.utils.data.dataset import Dataset\nimport numpy as np\nimport cv2\n\nclass optical_flow_dataset(Dataset):\n    def __init__(self,video_names,labels,sequence_length = 60,transform = None):\n        self.video_names = video_names\n        self.labels = labels\n        self.transform = transform\n        self.count = sequence_length\n    def __len__(self):\n        return len(self.video_names)\n    def __getitem__(self,idx):\n        video_path = self.video_names[idx]\n        frames = []\n        a = int(100/self.count)\n        first_frame = np.random.randint(0,a)\n        temp_video = video_path.split('/')[-1]\n        #print(temp_video)\n        label = self.labels.iloc[(self.labels.loc[labels[\"URI\"] == temp_video].index.values[0]),1]\n        if(label == 'FAKE'):\n          label = 0\n        if(label == 'REAL'):\n          label = 1\n\n        gray_frames = [cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) for frame in self.frame_extract(video_path)]\n        optical_flows = []\n\n        if len(gray_frames) < 2:\n            raise ValueError(f\"Not enough frames in video {video_path} to calculate optical flow.\")\n\n        for i in range(len(gray_frames) - 1):\n            flow = cv2.calcOpticalFlowFarneback(\n                gray_frames[i], gray_frames[i+1],\n                None, 0.5, 3, 15, 3, 5, 1.2, 0\n            )\n            optical_flows.append(self.transform(self.flow_to_image(flow)))\n\n        optical_flows = torch.stack(optical_flows)\n        return optical_flows,label\n          \n    def flow_to_image(self, flow):\n        # Chuyển đổi hướng và độ lớn thành ảnh màu\n        h, w = flow.shape[:2]\n        flow_image = np.zeros((h, w, 3), dtype=np.uint8)\n        magnitude, angle = cv2.cartToPolar(flow[..., 0], flow[..., 1])\n        \n        # Chuẩn hóa độ lớn\n        magnitude = cv2.normalize(magnitude, None, 0, 255, cv2.NORM_MINMAX)\n        \n        # Biểu diễn hướng dưới dạng màu sắc\n        flow_image[..., 0] = angle * 180 / np.pi / 2  # H channel\n        flow_image[..., 1] = 255                     # S channel\n        flow_image[..., 2] = magnitude               # V channel\n        \n        return cv2.cvtColor(flow_image, cv2.COLOR_HSV2BGR)\n\n    def frame_extract(self,path):\n      vidObj = cv2.VideoCapture(path)\n      success = 1\n      while success:\n          success, image = vidObj.read()\n          if success:\n              yield image","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-11T10:02:01.482384Z","iopub.execute_input":"2024-12-11T10:02:01.482715Z","iopub.status.idle":"2024-12-11T10:02:01.496105Z","shell.execute_reply.started":"2024-12-11T10:02:01.48268Z","shell.execute_reply":"2024-12-11T10:02:01.495056Z"}},"outputs":[],"execution_count":29},{"cell_type":"code","source":"import os\nimport cv2\nimport numpy as np\n\nim_size = 112\nmean = [0.485, 0.456, 0.406]\nstd = [0.229, 0.224, 0.225]\n\n# train_transforms = transforms.Compose([\n#                                         transforms.ToPILImage(),\n#                                         transforms.Resize((im_size,im_size)),\n#                                         transforms.ToTensor(),\n#                                         transforms.Normalize(mean,std)])\ntrain_transforms = transforms.Compose([\n                                        transforms.ToPILImage(),\n                                        transforms.Resize((im_size,im_size)),\n                                        transforms.ToTensor()])\n\nvideo_files = [os.path.join('/kaggle/working/face_only', vid) for vid in df['URI']]\nlabels = df[['URI', 'label']]\ntrain_data = optical_flow_dataset(video_files,labels,sequence_length = 19,transform = train_transforms)\ntrain_loader = DataLoader(train_data,batch_size = 4,shuffle = True,num_workers = 2)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-11T10:02:05.523261Z","iopub.execute_input":"2024-12-11T10:02:05.523591Z","iopub.status.idle":"2024-12-11T10:02:05.535484Z","shell.execute_reply.started":"2024-12-11T10:02:05.523562Z","shell.execute_reply":"2024-12-11T10:02:05.534624Z"}},"outputs":[],"execution_count":30},{"cell_type":"code","source":"import numpy as np\nfrom torch import nn\nfrom torchvision import models\n\nclass Model(nn.Module):\n    def __init__(self, backbone, num_classes,latent_dim= 2048, lstm_layers=1 , hidden_dim = 2048, bidirectional = False):\n        super(Model, self).__init__()\n        # model = models.resnext50_32x4d(pretrained = True) #Residual Network CNN\n        model = backbone\n        self.model = nn.Sequential(*list(model.children())[:-2])\n        self.lstm = nn.LSTM(latent_dim,hidden_dim, lstm_layers,  bidirectional)\n        self.relu = nn.LeakyReLU()\n        self.dp = nn.Dropout(0.4)\n        self.linear1 = nn.Linear(2048,num_classes)\n        self.avgpool = nn.AdaptiveAvgPool2d(1)\n        self.sigmoid = nn.Sigmoid()\n    def forward(self, x):\n        batch_size,seq_length, c, h, w = x.shape\n        x = x.view(batch_size * seq_length, c, h, w)\n        fmap = self.model(x)\n        x = self.avgpool(fmap)\n        x = x.view(batch_size,seq_length, -1)\n        x_lstm,_ = self.lstm(x,None)\n        logits = torch.mean(x_lstm, dim=1) \n        prob = self.sigmoid(self.linear1(logits)) \n        # return fmap,self.dp(self.linear1(torch.mean(x_lstm,dim = 1)))\n        return fmap,prob","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-11T10:02:06.272959Z","iopub.execute_input":"2024-12-11T10:02:06.273749Z","iopub.status.idle":"2024-12-11T10:02:06.280639Z","shell.execute_reply.started":"2024-12-11T10:02:06.273714Z","shell.execute_reply":"2024-12-11T10:02:06.279834Z"}},"outputs":[],"execution_count":31},{"cell_type":"code","source":"from torchvision.models import efficientnet_b0, resnext50_32x4d\nmodel = Model(resnext50_32x4d(pretrained = True), 2).cuda()\na,b = model(torch.from_numpy(np.empty((1,19,3,112,112))).type(torch.cuda.FloatTensor))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-11T10:00:27.165372Z","iopub.execute_input":"2024-12-11T10:00:27.165702Z","iopub.status.idle":"2024-12-11T10:00:28.755509Z","shell.execute_reply.started":"2024-12-11T10:00:27.165674Z","shell.execute_reply":"2024-12-11T10:00:28.754582Z"}},"outputs":[{"name":"stderr","text":"/opt/conda/lib/python3.10/site-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n  warnings.warn(\n/opt/conda/lib/python3.10/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNeXt50_32X4D_Weights.IMAGENET1K_V1`. You can also use `weights=ResNeXt50_32X4D_Weights.DEFAULT` to get the most up-to-date weights.\n  warnings.warn(msg)\n","output_type":"stream"}],"execution_count":25},{"cell_type":"code","source":"from torch.autograd import Variable\nimport time\nimport os\nimport sys\n\ndef train_epoch(epoch, num_epochs, data_loader, model, criterion, optimizer):\n    model.train()\n    losses = AverageMeter()\n    accuracies = AverageMeter()\n    t = []\n    for i, (inputs, targets) in enumerate(data_loader):\n        if torch.cuda.is_available():\n            targets = targets.type(torch.cuda.LongTensor)\n            inputs = inputs.cuda()\n            \n        _,outputs = model(input)        \n        loss = criterion(output, targets.type(torch.cuda.LongTensor))\n        acc = calculate_accuracy(outputs, targets.type(torch.cuda.LongTensor))\n        \n        losses.update(loss.item(), inputs.size(0))\n        accuracies.update(acc, inputs.size(0))\n        \n        optimizer.zero_grad()\n        loss.backward()\n        optimizer.step()\n        sys.stdout.write(\n                \"\\r[Epoch %d/%d] [Batch %d / %d] [Loss: %f, Acc: %.2f%%]\"\n                % (\n                    epoch,\n                    num_epochs,\n                    i,\n                    len(data_loader),\n                    losses.avg,\n                    accuracies.avg))\n    torch.save(model.state_dict(),'/kaggle/working/checkpoint.pt')\n    return losses.avg,accuracies.avg\ndef test(epoch,model, data_loader ,criterion):\n    print('Testing')\n    model.eval()\n    losses = AverageMeter()\n    accuracies = AverageMeter()\n    pred = []\n    true = []\n    count = 0\n    with torch.no_grad():\n        for i, (inputs, targets) in enumerate(data_loader):\n            if torch.cuda.is_available():\n                targets = targets.cuda().type(torch.cuda.FloatTensor)\n                inputs = inputs.cuda()\n            _,outputs = model(inputs)\n            loss = torch.mean(criterion(outputs, targets.type(torch.cuda.LongTensor)))\n            acc = calculate_accuracy(outputs,targets.type(torch.cuda.LongTensor))\n            \n            # _,p = torch.max(outputs,1)\n            # true += (targets.type(torch.cuda.LongTensor)).detach().cpu().numpy().reshape(len(targets)).tolist()\n            # pred += p.detach().cpu().numpy().reshape(len(p)).tolist()\n            losses.update(loss.item(), inputs.size(0))\n            accuracies.update(acc, inputs.size(0))\n            sys.stdout.write(\n                    \"\\r[Batch %d / %d]  [Loss: %f, Acc: %.2f%%]\"\n                    % (\n                        i,\n                        len(data_loader),\n                        losses.avg,\n                        accuracies.avg\n                        )\n                    )\n        print('\\nAccuracy {}'.format(accuracies.avg))\n    # return true,pred,losses.avg,accuracies.avg\n    return losses.avg, accuracies.avg\n    \nclass AverageMeter(object):\n    \"\"\"Computes and stores the average and current value\"\"\"\n    def __init__(self):\n        self.reset()\n    def reset(self):\n        self.val = 0\n        self.avg = 0\n        self.sum = 0\n        self.count = 0\n\n    def update(self, val, n=1):\n        self.val = val\n        self.sum += val * n\n        self.count += n\n        self.avg = self.sum / self.count\ndef calculate_accuracy(outputs, targets):\n    batch_size = targets.size(0)\n\n    preds = (outputs > 0.5).float()\n    correct = preds.eq(targets.view_as(preds)).sum().item()\n    accuracy = 100 * correct / batch_size\n    return accuracy","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-11T10:02:09.568181Z","iopub.execute_input":"2024-12-11T10:02:09.568488Z","iopub.status.idle":"2024-12-11T10:02:09.580549Z","shell.execute_reply.started":"2024-12-11T10:02:09.568461Z","shell.execute_reply":"2024-12-11T10:02:09.579684Z"}},"outputs":[],"execution_count":33},{"cell_type":"code","source":"from sklearn.metrics import confusion_matrix\n\ndef train(model):\n    #learning rate\n    lr = 1e-5#0.001\n    #number of epochs\n    num_epochs = 20\n    \n    optimizer = torch.optim.Adam(model.parameters(), lr= lr,weight_decay = 1e-5)\n    \n    #class_weights = torch.from_numpy(np.asarray([1,15])).type(torch.FloatTensor).cuda()\n    #criterion = nn.CrossEntropyLoss(weight = class_weights).cuda()\n    criterion = nn.CrossEntropyLoss().cuda()\n    train_loss_avg =[]\n    train_accuracy = []\n    test_loss_avg = []\n    test_accuracy = []\n    for epoch in range(1,num_epochs+1):\n        l, acc = train_epoch(epoch,num_epochs,train_loader,model,criterion,optimizer)\n        train_loss_avg.append(l)\n        train_accuracy.append(acc)\n        # true,pred,tl,t_acc = test(epoch,model,train_loader,criterion)\n        tl,t_acc = test(epoch,model,train_loader,criterion)\n        test_loss_avg.append(tl)\n        test_accuracy.append(t_acc)\n    \n        print(f'Epoch: {epoch}')\n        print(f'  Train Loss: {l:.4f}, Train Acc: {acc:.2f}')\n        print(f'  Test Loss: {tl:.4f}, Test Acc: {t_acc:.2f}')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-11T10:02:17.163266Z","iopub.execute_input":"2024-12-11T10:02:17.164219Z","iopub.status.idle":"2024-12-11T10:02:17.170653Z","shell.execute_reply.started":"2024-12-11T10:02:17.164175Z","shell.execute_reply":"2024-12-11T10:02:17.169706Z"}},"outputs":[],"execution_count":34},{"cell_type":"markdown","source":"## Predict","metadata":{}},{"cell_type":"code","source":"import torchvision\nimport torch\n\n\nmodel = Model(torchvision.models.resnext50_32x4d(pretrained = True), 2).cuda()\n\nmodel.load_state_dict(torch.load('/kaggle/working/resnet_checkpoint.pt'))\nmodel.eval() ","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"!pip install git+https://github.com/openai/CLIP.git","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-08T16:22:06.874175Z","iopub.execute_input":"2024-12-08T16:22:06.874903Z","iopub.status.idle":"2024-12-08T16:22:20.60879Z","shell.execute_reply.started":"2024-12-08T16:22:06.874869Z","shell.execute_reply":"2024-12-08T16:22:20.607644Z"},"collapsed":true,"jupyter":{"outputs_hidden":true}},"outputs":[{"name":"stdout","text":"Collecting git+https://github.com/openai/CLIP.git\n  Cloning https://github.com/openai/CLIP.git to /tmp/pip-req-build-3l18sky8\n  Running command git clone --filter=blob:none --quiet https://github.com/openai/CLIP.git /tmp/pip-req-build-3l18sky8\n  Resolved https://github.com/openai/CLIP.git to commit dcba3cb2e2827b402d2701e7e1c7d9fed8a20ef1\n  Preparing metadata (setup.py) ... \u001b[?25ldone\n\u001b[?25hCollecting ftfy (from clip==1.0)\n  Downloading ftfy-6.3.1-py3-none-any.whl.metadata (7.3 kB)\nRequirement already satisfied: packaging in /opt/conda/lib/python3.10/site-packages (from clip==1.0) (21.3)\nRequirement already satisfied: regex in /opt/conda/lib/python3.10/site-packages (from clip==1.0) (2024.5.15)\nRequirement already satisfied: tqdm in /opt/conda/lib/python3.10/site-packages (from clip==1.0) (4.66.4)\nRequirement already satisfied: torch in /opt/conda/lib/python3.10/site-packages (from clip==1.0) (2.4.0)\nRequirement already satisfied: torchvision in /opt/conda/lib/python3.10/site-packages (from clip==1.0) (0.19.0)\nRequirement already satisfied: wcwidth in /opt/conda/lib/python3.10/site-packages (from ftfy->clip==1.0) (0.2.13)\nRequirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /opt/conda/lib/python3.10/site-packages (from packaging->clip==1.0) (3.1.2)\nRequirement already satisfied: filelock in /opt/conda/lib/python3.10/site-packages (from torch->clip==1.0) (3.15.1)\nRequirement already satisfied: typing-extensions>=4.8.0 in /opt/conda/lib/python3.10/site-packages (from torch->clip==1.0) (4.12.2)\nRequirement already satisfied: sympy in /opt/conda/lib/python3.10/site-packages (from torch->clip==1.0) (1.13.3)\nRequirement already satisfied: networkx in /opt/conda/lib/python3.10/site-packages (from torch->clip==1.0) (3.3)\nRequirement already satisfied: jinja2 in /opt/conda/lib/python3.10/site-packages (from torch->clip==1.0) (3.1.4)\nRequirement already satisfied: fsspec in /opt/conda/lib/python3.10/site-packages (from torch->clip==1.0) (2024.6.1)\nRequirement already satisfied: numpy in /opt/conda/lib/python3.10/site-packages (from torchvision->clip==1.0) (1.26.4)\nRequirement already satisfied: pillow!=8.3.*,>=5.3.0 in /opt/conda/lib/python3.10/site-packages (from torchvision->clip==1.0) (10.3.0)\nRequirement already satisfied: MarkupSafe>=2.0 in /opt/conda/lib/python3.10/site-packages (from jinja2->torch->clip==1.0) (2.1.5)\nRequirement already satisfied: mpmath<1.4,>=1.1.0 in /opt/conda/lib/python3.10/site-packages (from sympy->torch->clip==1.0) (1.3.0)\nDownloading ftfy-6.3.1-py3-none-any.whl (44 kB)\n\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.8/44.8 kB\u001b[0m \u001b[31m1.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n\u001b[?25hBuilding wheels for collected packages: clip\n  Building wheel for clip (setup.py) ... \u001b[?25ldone\n\u001b[?25h  Created wheel for clip: filename=clip-1.0-py3-none-any.whl size=1369490 sha256=671a199c868fbf54f3793ac5d5cd3925ee5c6ff30ddae975344263659247f2f0\n  Stored in directory: /tmp/pip-ephem-wheel-cache-racal65u/wheels/da/2b/4c/d6691fa9597aac8bb85d2ac13b112deb897d5b50f5ad9a37e4\nSuccessfully built clip\nInstalling collected packages: ftfy, clip\nSuccessfully installed clip-1.0 ftfy-6.3.1\n","output_type":"stream"}],"execution_count":2},{"cell_type":"code","source":"import clip\nimport torch","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-08T16:22:20.610799Z","iopub.execute_input":"2024-12-08T16:22:20.611065Z","iopub.status.idle":"2024-12-08T16:22:24.960291Z","shell.execute_reply.started":"2024-12-08T16:22:20.611039Z","shell.execute_reply":"2024-12-08T16:22:24.959096Z"}},"outputs":[],"execution_count":3},{"cell_type":"code","source":"device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\nclip_model, preprocess = clip.load(\"ViT-B/32\", device=device)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-08T16:22:24.961723Z","iopub.execute_input":"2024-12-08T16:22:24.962252Z","iopub.status.idle":"2024-12-08T16:22:32.679531Z","shell.execute_reply.started":"2024-12-08T16:22:24.962222Z","shell.execute_reply":"2024-12-08T16:22:32.678814Z"}},"outputs":[{"name":"stderr","text":"100%|████████████████████████████████████████| 338M/338M [00:02<00:00, 136MiB/s]\n","output_type":"stream"}],"execution_count":4},{"cell_type":"code","source":"import cv2\nimport numpy as np\nimport random\nimport matplotlib.pyplot as plt\nfrom PIL import Image\nfrom sklearn.metrics.pairwise import cosine_similarity\n\ndef preprocess_video(vid_path, num_frames=20, transform=None, sequence_length=20):\n    vidObj = cv2.VideoCapture(vid_path)\n    success = 1\n    frames = []\n    embed_vector = []\n    while success:\n        success, image = vidObj.read()\n        if success:\n            image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)  # Chuyển sang RGB\n            image = transform(image)\n            frames.append(image)\n\n            image_np = image.permute(1, 2, 0).cpu().numpy()  # Chuyển Tensor từ (C, H, W) sang (H, W, C)\n            image = preprocess(Image.fromarray((image_np * 255).astype(np.uint8))).unsqueeze(0).to(device)\n\n            with torch.no_grad():\n                image_features = clip_model.encode_image(image)\n                image_features /= image_features.norm(dim=-1, keepdim=True)\n                image_features = np.squeeze(image_features)\n            \n            embed_vector.append(image_features)\n\n    components = []\n    for i in range(len(frames)):\n        if len(components) == 0:\n            components.append([frames[i]])\n            continue\n        \n        new_component = True\n        for component in components:\n            similar = cosine_similarity(component[-1].cpu().numpy().reshape(1, -1), frames[i].cpu().numpy().reshape(1, -1)).squeeze()\n        if similar > 0.85:\n            component.append(frames[i])\n            new_component = False\n            break\n\n        if new_component:\n            components.append([frames[i]])\n    \n    component = max(components, key=len)\n    while len(component) < sequence_length:\n        component.append(component[-1])\n    # return torch.stack(component, dim=0).unsqueeze(0)\n    return component","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-05T14:34:15.24601Z","iopub.execute_input":"2024-12-05T14:34:15.246289Z","iopub.status.idle":"2024-12-05T14:34:15.900549Z","shell.execute_reply.started":"2024-12-05T14:34:15.246261Z","shell.execute_reply":"2024-12-05T14:34:15.899589Z"}},"outputs":[],"execution_count":12},{"cell_type":"code","source":"import numpy as np\n\ndef flow_to_image(flow):\n    # Chuyển đổi hướng và độ lớn thành ảnh màu\n    h, w = flow.shape[:2]\n    flow_image = np.zeros((h, w, 3), dtype=np.uint8)\n    magnitude, angle = cv2.cartToPolar(flow[..., 0], flow[..., 1])\n    \n    # Chuẩn hóa độ lớn\n    magnitude = cv2.normalize(magnitude, None, 0, 255, cv2.NORM_MINMAX)\n    \n    # Biểu diễn hướng dưới dạng màu sắc\n    flow_image[..., 0] = angle * 180 / np.pi / 2  # H channel\n    flow_image[..., 1] = 255                     # S channel\n    flow_image[..., 2] = magnitude               # V channel\n    \n    return cv2.cvtColor(flow_image, cv2.COLOR_HSV2BGR)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-09T12:09:49.338848Z","iopub.execute_input":"2024-12-09T12:09:49.33971Z","iopub.status.idle":"2024-12-09T12:09:49.345214Z","shell.execute_reply.started":"2024-12-09T12:09:49.339678Z","shell.execute_reply":"2024-12-09T12:09:49.344362Z"}},"outputs":[],"execution_count":13},{"cell_type":"markdown","source":"## Resnet optical flow","metadata":{}},{"cell_type":"code","source":"from torchvision.models import efficientnet_b0, resnext50_32x4d\nmodel = Model(resnext50_32x4d(pretrained = True), 2).cuda()\ntrain(model)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-09T12:10:01.418129Z","iopub.execute_input":"2024-12-09T12:10:01.418576Z","iopub.status.idle":"2024-12-09T13:39:39.787208Z","shell.execute_reply.started":"2024-12-09T12:10:01.418543Z","shell.execute_reply":"2024-12-09T13:39:39.786064Z"}},"outputs":[{"name":"stderr","text":"/opt/conda/lib/python3.10/site-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n  warnings.warn(\n/opt/conda/lib/python3.10/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNeXt50_32X4D_Weights.IMAGENET1K_V1`. You can also use `weights=ResNeXt50_32X4D_Weights.DEFAULT` to get the most up-to-date weights.\n  warnings.warn(msg)\n","output_type":"stream"},{"name":"stdout","text":"[Epoch 1/20] [Batch 490 / 491] [Loss: 0.514304, Acc: 83.66%]Testing\n[Batch 490 / 491]  [Loss: 0.413189, Acc: 83.66%]\nAccuracy 83.65580448065172\nEpoch: 1\n  Train Loss: 0.5143, Train Acc: 83.66\n  Test Loss: 0.4132, Test Acc: 83.66\n[Epoch 2/20] [Batch 490 / 491] [Loss: 0.464956, Acc: 83.96%]Testing\n[Batch 490 / 491]  [Loss: 0.298707, Acc: 90.43%]\nAccuracy 90.42769857433808\nEpoch: 2\n  Train Loss: 0.4650, Train Acc: 83.96\n  Test Loss: 0.2987, Test Acc: 90.43\n[Epoch 3/20] [Batch 490 / 491] [Loss: 0.352394, Acc: 89.31%]Testing\n[Batch 490 / 491]  [Loss: 0.139640, Acc: 97.76%]\nAccuracy 97.75967413441956\nEpoch: 3\n  Train Loss: 0.3524, Train Acc: 89.31\n  Test Loss: 0.1396, Test Acc: 97.76\n[Epoch 4/20] [Batch 490 / 491] [Loss: 0.234020, Acc: 95.57%]Testing\n[Batch 490 / 491]  [Loss: 0.046312, Acc: 99.24%]\nAccuracy 99.23625254582485\nEpoch: 4\n  Train Loss: 0.2340, Train Acc: 95.57\n  Test Loss: 0.0463, Test Acc: 99.24\n[Epoch 5/20] [Batch 490 / 491] [Loss: 0.184805, Acc: 97.10%]Testing\n[Batch 490 / 491]  [Loss: 0.025580, Acc: 99.29%]\nAccuracy 99.28716904276986\nEpoch: 5\n  Train Loss: 0.1848, Train Acc: 97.10\n  Test Loss: 0.0256, Test Acc: 99.29\n[Epoch 6/20] [Batch 490 / 491] [Loss: 0.195830, Acc: 97.00%]Testing\n[Batch 490 / 491]  [Loss: 0.037917, Acc: 99.19%]\nAccuracy 99.18533604887983\nEpoch: 6\n  Train Loss: 0.1958, Train Acc: 97.00\n  Test Loss: 0.0379, Test Acc: 99.19\n[Epoch 7/20] [Batch 490 / 491] [Loss: 0.169229, Acc: 98.01%]Testing\n[Batch 490 / 491]  [Loss: 0.032976, Acc: 98.83%]\nAccuracy 98.82892057026477\nEpoch: 7\n  Train Loss: 0.1692, Train Acc: 98.01\n  Test Loss: 0.0330, Test Acc: 98.83\n[Epoch 8/20] [Batch 490 / 491] [Loss: 0.170980, Acc: 98.12%]Testing\n[Batch 490 / 491]  [Loss: 0.019186, Acc: 99.49%]\nAccuracy 99.4908350305499\nEpoch: 8\n  Train Loss: 0.1710, Train Acc: 98.12\n  Test Loss: 0.0192, Test Acc: 99.49\n[Epoch 9/20] [Batch 490 / 491] [Loss: 0.151630, Acc: 98.68%]Testing\n[Batch 490 / 491]  [Loss: 0.006647, Acc: 99.90%]\nAccuracy 99.89816700610999\nEpoch: 9\n  Train Loss: 0.1516, Train Acc: 98.68\n  Test Loss: 0.0066, Test Acc: 99.90\n[Epoch 10/20] [Batch 490 / 491] [Loss: 0.179971, Acc: 98.42%]Testing\n[Batch 490 / 491]  [Loss: 0.032993, Acc: 98.83%]\nAccuracy 98.82892057026477\nEpoch: 10\n  Train Loss: 0.1800, Train Acc: 98.42\n  Test Loss: 0.0330, Test Acc: 98.83\n[Epoch 11/20] [Batch 490 / 491] [Loss: 0.159014, Acc: 98.12%]Testing\n[Batch 490 / 491]  [Loss: 0.023812, Acc: 99.29%]\nAccuracy 99.28716904276986\nEpoch: 11\n  Train Loss: 0.1590, Train Acc: 98.12\n  Test Loss: 0.0238, Test Acc: 99.29\n[Epoch 12/20] [Batch 490 / 491] [Loss: 0.170221, Acc: 98.52%]Testing\n[Batch 490 / 491]  [Loss: 0.021029, Acc: 99.34%]\nAccuracy 99.33808553971487\nEpoch: 12\n  Train Loss: 0.1702, Train Acc: 98.52\n  Test Loss: 0.0210, Test Acc: 99.34\n[Epoch 13/20] [Batch 490 / 491] [Loss: 0.147899, Acc: 98.83%]Testing\n[Batch 490 / 491]  [Loss: 0.011015, Acc: 99.64%]\nAccuracy 99.64358452138492\nEpoch: 13\n  Train Loss: 0.1479, Train Acc: 98.83\n  Test Loss: 0.0110, Test Acc: 99.64\n[Epoch 14/20] [Batch 490 / 491] [Loss: 0.124634, Acc: 99.24%]Testing\n[Batch 490 / 491]  [Loss: 0.011468, Acc: 99.69%]\nAccuracy 99.69450101832994\nEpoch: 14\n  Train Loss: 0.1246, Train Acc: 99.24\n  Test Loss: 0.0115, Test Acc: 99.69\n[Epoch 15/20] [Batch 490 / 491] [Loss: 0.135905, Acc: 99.39%]Testing\n[Batch 490 / 491]  [Loss: 0.006115, Acc: 99.90%]]\nAccuracy 99.89816700610999\nEpoch: 15\n  Train Loss: 0.1359, Train Acc: 99.39\n  Test Loss: 0.0061, Test Acc: 99.90\n[Epoch 16/20] [Batch 490 / 491] [Loss: 0.149718, Acc: 98.57%]Testing\n[Batch 490 / 491]  [Loss: 0.026244, Acc: 99.08%]\nAccuracy 99.08350305498982\nEpoch: 16\n  Train Loss: 0.1497, Train Acc: 98.57\n  Test Loss: 0.0262, Test Acc: 99.08\n[Epoch 17/20] [Batch 490 / 491] [Loss: 0.158459, Acc: 98.07%]Testing\n[Batch 490 / 491]  [Loss: 0.029475, Acc: 98.98%]\nAccuracy 98.98167006109979\nEpoch: 17\n  Train Loss: 0.1585, Train Acc: 98.07\n  Test Loss: 0.0295, Test Acc: 98.98\n[Epoch 18/20] [Batch 490 / 491] [Loss: 0.155477, Acc: 98.98%]Testing\n[Batch 490 / 491]  [Loss: 0.020925, Acc: 99.44%]\nAccuracy 99.43991853360488\nEpoch: 18\n  Train Loss: 0.1555, Train Acc: 98.98\n  Test Loss: 0.0209, Test Acc: 99.44\n[Epoch 19/20] [Batch 490 / 491] [Loss: 0.122339, Acc: 99.44%]Testing\n[Batch 490 / 491]  [Loss: 0.006559, Acc: 99.90%]\nAccuracy 99.89816700610999\nEpoch: 19\n  Train Loss: 0.1223, Train Acc: 99.44\n  Test Loss: 0.0066, Test Acc: 99.90\n[Epoch 20/20] [Batch 490 / 491] [Loss: 0.153818, Acc: 98.88%]Testing\n[Batch 490 / 491]  [Loss: 0.005750, Acc: 99.90%]]\nAccuracy 99.89816700610999\nEpoch: 20\n  Train Loss: 0.1538, Train Acc: 98.88\n  Test Loss: 0.0057, Test Acc: 99.90\n","output_type":"stream"}],"execution_count":14},{"cell_type":"markdown","source":"## Efficientnet optical flow","metadata":{}},{"cell_type":"code","source":"model = Model(efficientnet_b0(pretrained=True), 2, latent_dim=1280).cuda()\ntrain(model)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-09T13:43:27.528757Z","iopub.execute_input":"2024-12-09T13:43:27.529118Z","iopub.status.idle":"2024-12-09T14:42:45.528775Z","shell.execute_reply.started":"2024-12-09T13:43:27.529085Z","shell.execute_reply":"2024-12-09T14:42:45.527603Z"}},"outputs":[{"name":"stderr","text":"/opt/conda/lib/python3.10/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=EfficientNet_B0_Weights.IMAGENET1K_V1`. You can also use `weights=EfficientNet_B0_Weights.DEFAULT` to get the most up-to-date weights.\n  warnings.warn(msg)\nDownloading: \"https://download.pytorch.org/models/efficientnet_b0_rwightman-7f5810bc.pth\" to /root/.cache/torch/hub/checkpoints/efficientnet_b0_rwightman-7f5810bc.pth\n100%|██████████| 20.5M/20.5M [00:00<00:00, 133MB/s] \n","output_type":"stream"},{"name":"stdout","text":"[Epoch 1/20] [Batch 490 / 491] [Loss: 0.529751, Acc: 83.50%]Testing\n[Batch 490 / 491]  [Loss: 0.457822, Acc: 83.66%]\nAccuracy 83.65580448065172\nEpoch: 1\n  Train Loss: 0.5298, Train Acc: 83.50\n  Test Loss: 0.4578, Test Acc: 83.66\n[Epoch 2/20] [Batch 490 / 491] [Loss: 0.495296, Acc: 83.66%]Testing\n[Batch 490 / 491]  [Loss: 0.432057, Acc: 83.66%]\nAccuracy 83.65580448065172\nEpoch: 2\n  Train Loss: 0.4953, Train Acc: 83.66\n  Test Loss: 0.4321, Test Acc: 83.66\n[Epoch 3/20] [Batch 490 / 491] [Loss: 0.492220, Acc: 83.66%]Testing\n[Batch 490 / 491]  [Loss: 0.415751, Acc: 83.66%]\nAccuracy 83.65580448065172\nEpoch: 3\n  Train Loss: 0.4922, Train Acc: 83.66\n  Test Loss: 0.4158, Test Acc: 83.66\n[Epoch 4/20] [Batch 490 / 491] [Loss: 0.479801, Acc: 83.66%]Testing\n[Batch 490 / 491]  [Loss: 0.387472, Acc: 84.98%]\nAccuracy 84.979633401222\nEpoch: 4\n  Train Loss: 0.4798, Train Acc: 83.66\n  Test Loss: 0.3875, Test Acc: 84.98\n[Epoch 5/20] [Batch 490 / 491] [Loss: 0.459652, Acc: 84.01%]Testing\n[Batch 490 / 491]  [Loss: 0.365960, Acc: 85.03%]\nAccuracy 85.03054989816701\nEpoch: 5\n  Train Loss: 0.4597, Train Acc: 84.01\n  Test Loss: 0.3660, Test Acc: 85.03\n[Epoch 6/20] [Batch 490 / 491] [Loss: 0.446094, Acc: 84.37%]Testing\n[Batch 490 / 491]  [Loss: 0.314433, Acc: 86.76%]\nAccuracy 86.76171079429736\nEpoch: 6\n  Train Loss: 0.4461, Train Acc: 84.37\n  Test Loss: 0.3144, Test Acc: 86.76\n[Epoch 7/20] [Batch 490 / 491] [Loss: 0.418572, Acc: 84.52%]Testing\n[Batch 490 / 491]  [Loss: 0.310547, Acc: 88.44%]\nAccuracy 88.44195519348268\nEpoch: 7\n  Train Loss: 0.4186, Train Acc: 84.52\n  Test Loss: 0.3105, Test Acc: 88.44\n[Epoch 8/20] [Batch 490 / 491] [Loss: 0.387726, Acc: 86.05%]Testing\n[Batch 490 / 491]  [Loss: 0.261397, Acc: 90.33%]\nAccuracy 90.32586558044807\nEpoch: 8\n  Train Loss: 0.3877, Train Acc: 86.05\n  Test Loss: 0.2614, Test Acc: 90.33\n[Epoch 9/20] [Batch 490 / 491] [Loss: 0.373287, Acc: 87.17%]Testing\n[Batch 490 / 491]  [Loss: 0.237895, Acc: 92.01%]\nAccuracy 92.00610997963341\nEpoch: 9\n  Train Loss: 0.3733, Train Acc: 87.17\n  Test Loss: 0.2379, Test Acc: 92.01\n[Epoch 10/20] [Batch 490 / 491] [Loss: 0.367194, Acc: 87.42%]Testing\n[Batch 490 / 491]  [Loss: 0.211396, Acc: 93.48%]\nAccuracy 93.48268839103869\nEpoch: 10\n  Train Loss: 0.3672, Train Acc: 87.42\n  Test Loss: 0.2114, Test Acc: 93.48\n[Epoch 11/20] [Batch 490 / 491] [Loss: 0.347593, Acc: 88.49%]Testing\n[Batch 490 / 491]  [Loss: 0.182548, Acc: 93.94%]\nAccuracy 93.94093686354378\nEpoch: 11\n  Train Loss: 0.3476, Train Acc: 88.49\n  Test Loss: 0.1825, Test Acc: 93.94\n[Epoch 12/20] [Batch 490 / 491] [Loss: 0.325383, Acc: 89.31%]Testing\n[Batch 490 / 491]  [Loss: 0.150051, Acc: 96.08%]\nAccuracy 96.07942973523421\nEpoch: 12\n  Train Loss: 0.3254, Train Acc: 89.31\n  Test Loss: 0.1501, Test Acc: 96.08\n[Epoch 13/20] [Batch 490 / 491] [Loss: 0.317214, Acc: 90.78%]Testing\n[Batch 490 / 491]  [Loss: 0.139292, Acc: 96.13%]\nAccuracy 96.13034623217922\nEpoch: 13\n  Train Loss: 0.3172, Train Acc: 90.78\n  Test Loss: 0.1393, Test Acc: 96.13\n[Epoch 14/20] [Batch 490 / 491] [Loss: 0.286640, Acc: 90.94%]Testing\n[Batch 490 / 491]  [Loss: 0.121825, Acc: 97.45%]\nAccuracy 97.45417515274949\nEpoch: 14\n  Train Loss: 0.2866, Train Acc: 90.94\n  Test Loss: 0.1218, Test Acc: 97.45\n[Epoch 15/20] [Batch 490 / 491] [Loss: 0.270757, Acc: 92.92%]Testing\n[Batch 490 / 491]  [Loss: 0.094771, Acc: 98.32%]\nAccuracy 98.31975560081466\nEpoch: 15\n  Train Loss: 0.2708, Train Acc: 92.92\n  Test Loss: 0.0948, Test Acc: 98.32\n[Epoch 16/20] [Batch 490 / 491] [Loss: 0.235848, Acc: 93.89%]Testing\n[Batch 490 / 491]  [Loss: 0.083482, Acc: 98.98%]\nAccuracy 98.98167006109979\nEpoch: 16\n  Train Loss: 0.2358, Train Acc: 93.89\n  Test Loss: 0.0835, Test Acc: 98.98\n[Epoch 17/20] [Batch 490 / 491] [Loss: 0.238639, Acc: 94.35%]Testing\n[Batch 490 / 491]  [Loss: 0.063589, Acc: 98.83%]\nAccuracy 98.82892057026477\nEpoch: 17\n  Train Loss: 0.2386, Train Acc: 94.35\n  Test Loss: 0.0636, Test Acc: 98.83\n[Epoch 18/20] [Batch 490 / 491] [Loss: 0.238499, Acc: 94.09%]Testing\n[Batch 490 / 491]  [Loss: 0.065759, Acc: 99.13%]\nAccuracy 99.13441955193483\nEpoch: 18\n  Train Loss: 0.2385, Train Acc: 94.09\n  Test Loss: 0.0658, Test Acc: 99.13\n[Epoch 19/20] [Batch 490 / 491] [Loss: 0.238793, Acc: 95.47%]Testing\n[Batch 490 / 491]  [Loss: 0.085406, Acc: 98.42%]\nAccuracy 98.42158859470469\nEpoch: 19\n  Train Loss: 0.2388, Train Acc: 95.47\n  Test Loss: 0.0854, Test Acc: 98.42\n[Epoch 20/20] [Batch 490 / 491] [Loss: 0.195194, Acc: 96.13%]Testing\n[Batch 490 / 491]  [Loss: 0.048431, Acc: 99.08%]\nAccuracy 99.08350305498982\nEpoch: 20\n  Train Loss: 0.1952, Train Acc: 96.13\n  Test Loss: 0.0484, Test Acc: 99.08\n","output_type":"stream"}],"execution_count":15},{"cell_type":"markdown","source":"## Mobilenet optical flow","metadata":{}},{"cell_type":"code","source":"model = Model(torchvision.models.mobilenet_v3_large(pretrained=True), 2, latent_dim=960).cuda()\ntrain(model)","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}