From 92f89d347cbf0fa5ae394026c26eebf847a9d46a Mon Sep 17 00:00:00 2001 From: Sam Baird Date: Wed, 20 May 2026 21:46:44 +1000 Subject: [PATCH] Added notebook --- ...cial_emotion _recognition_video (1).ipynb} | 290 +++++++++++------- .../image_classification_pipeline.ipynb | 192 +++++++----- 2 files changed, 306 insertions(+), 176 deletions(-) rename AI Guardian/T1-2026-AI/{facial_emotion _recognition_video.ipynb => facial_emotion _recognition_video (1).ipynb} (77%) diff --git a/AI Guardian/T1-2026-AI/facial_emotion _recognition_video.ipynb b/AI Guardian/T1-2026-AI/facial_emotion _recognition_video (1).ipynb similarity index 77% rename from AI Guardian/T1-2026-AI/facial_emotion _recognition_video.ipynb rename to AI Guardian/T1-2026-AI/facial_emotion _recognition_video (1).ipynb index 2e1a80020..86c083fc8 100644 --- a/AI Guardian/T1-2026-AI/facial_emotion _recognition_video.ipynb +++ b/AI Guardian/T1-2026-AI/facial_emotion _recognition_video (1).ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 14, "id": "97898d3a-ffae-41a2-9940-ccedc862f57b", "metadata": {}, "outputs": [], @@ -32,7 +32,8 @@ "from torchvision import datasets, transforms\n", "\n", "\n", - "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")" + "DEVICE = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "\n" ] }, { @@ -45,7 +46,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 15, "id": "ab330acf-e322-412a-983d-26ebd908391e", "metadata": {}, "outputs": [], @@ -245,7 +246,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 16, "id": "5beba27d-19a0-44d6-8682-96219d9e1856", "metadata": {}, "outputs": [], @@ -291,7 +292,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 17, "id": "694f8e5c-c91a-4a7b-a76c-373bd467460b", "metadata": {}, "outputs": [], @@ -316,7 +317,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 18, "id": "07947f9f-d4c8-4476-acf8-599dfc430f83", "metadata": {}, "outputs": [], @@ -354,10 +355,18 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 19, "id": "8fdc8b69-0778-4560-a20c-b570540eae3f", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n" + ] + } + ], "source": [ "from PIL import Image\n", "import torch\n", @@ -386,6 +395,7 @@ "model.load_state_dict(torch.load(\"C:/Users/User/OneDrive/Documents/resNET emotion recognition/best_resnet34.pth\", map_location=device)) #LOADS BEST MODEL\n", "model.to(DEVICE)\n", "model.eval()\n", + "cropping_model.to(DEVICE)\n", "\n", "\n", "def classify_image(image_input):\n", @@ -442,105 +452,112 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 20, "id": "8407c754-d70c-441c-b79e-29faf6f9a045", "metadata": {}, "outputs": [], "source": [ - "from tqdm.notebook import tqdm\n", + "from tqdm import tqdm\n", "import numpy as np\n", "import cv2\n", "import os\n", - "from moviepy.editor import VideoFileClip\n", + "from moviepy import VideoFileClip\n", "\n", - "def classify_video(video_path):\n", "\n", - " frames = extract_frames(video_path)\n", + "def classify_video(video_path):\n", "\n", " cap = cv2.VideoCapture(video_path)\n", "\n", " fps = cap.get(cv2.CAP_PROP_FPS)\n", " width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))\n", " height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))\n", - "\n", - " processed_video = []\n", + " total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))\n", "\n", " output_no_audio = \"processed_no_audio.mp4\"\n", " final_output = \"processed_with_audio.mp4\"\n", "\n", - " out = cv2.VideoWriter(\n", - " output_no_audio,\n", - " cv2.VideoWriter_fourcc(*\"mp4v\"),\n", - " fps,\n", - " (width, height)\n", - " )\n", - " \n", " all_probs = []\n", "\n", - " for frame in tqdm(frames, desc=\"Processing Video\"):\n", - " \n", + " print(\"Analysing frames...\")\n", + "\n", + " for _ in tqdm(range(total_frames), desc=\"Processing Video\"):\n", + " success, frame = cap.read()\n", + "\n", + " if not success:\n", + " break\n", + "\n", " cropped_face, crop_message = process_image(\n", " frame,\n", " cropping_model,\n", " conf_threshold=0.25,\n", " padding_ratio=0.15\n", " )\n", - " \n", + "\n", " if cropped_face is None:\n", " all_probs.append(None)\n", " continue\n", - " \n", - " frame_probs = classify_image(cropped_face)\n", - " \n", - " frame_probs = frame_probs.squeeze()\n", "\n", + " frame_probs = classify_image(cropped_face).squeeze()\n", " all_probs.append(frame_probs)\n", "\n", - " for i in tqdm(range(len(frames)), desc=\"Writing labelled video\"):\n", + " cap.release()\n", + "\n", + " print(\"Writing labelled video...\")\n", "\n", - " current_frame = frames[i].copy()\n", + " cap = cv2.VideoCapture(video_path)\n", + "\n", + " out = cv2.VideoWriter(\n", + " output_no_audio,\n", + " cv2.VideoWriter_fourcc(*\"mp4v\"),\n", + " fps,\n", + " (width, height)\n", + " )\n", + "\n", + " for i in tqdm(range(len(all_probs)), desc=\"Writing labelled video\"):\n", + " success, frame = cap.read()\n", + "\n", + " if not success:\n", + " break\n", + "\n", + " current_frame = frame.copy()\n", "\n", " window_probs = []\n", "\n", " start = max(0, i - 5)\n", - " end = min(len(frames), i + 6)\n", - " \n", + " end = min(len(all_probs), i + 6)\n", + "\n", " for j in range(start, end):\n", - " \n", " if all_probs[j] is not None:\n", " window_probs.append(all_probs[j])\n", "\n", - " if len(window_probs) == 0:\n", - " out.write(current_frame)\n", - " continue\n", - " \n", - " window_probs = np.vstack(window_probs)\n", - " means = window_probs.mean(axis=0)\n", - " pred = np.argmax(means)\n", - " confidence = means[pred]\n", - " \n", - " cv2.putText(\n", - " current_frame,\n", - " f\"{CLASS_NAMES[pred]} Conf: {confidence:.3f}\",\n", - " (30, 50),\n", - " cv2.FONT_HERSHEY_SIMPLEX,\n", - " 1,\n", - " (0, 255, 0),\n", - " 2\n", - " )\n", - " \n", + " if len(window_probs) > 0:\n", + " window_probs = np.vstack(window_probs)\n", + " means = window_probs.mean(axis=0)\n", + "\n", + " pred = np.argmax(means)\n", + " confidence = means[pred]\n", + "\n", + " cv2.putText(\n", + " current_frame,\n", + " f\"{CLASS_NAMES[pred]} Conf: {confidence:.3f}\",\n", + " (30, 50),\n", + " cv2.FONT_HERSHEY_SIMPLEX,\n", + " 1,\n", + " (0, 255, 0),\n", + " 2\n", + " )\n", + "\n", " out.write(current_frame)\n", - " \n", - " out.release()\n", "\n", - " original_video_path = video_path\n", + " cap.release()\n", + " out.release()\n", "\n", - " print(\"\\nAdding audio back to video...\")\n", + " print(\"Adding audio back to video...\")\n", "\n", " processed_clip = VideoFileClip(output_no_audio)\n", - " original_clip = VideoFileClip(original_video_path)\n", + " original_clip = VideoFileClip(video_path)\n", "\n", - " final_clip = processed_clip.set_audio(original_clip.audio)\n", + " final_clip = processed_clip.with_audio(original_clip.audio)\n", "\n", " final_clip.write_videofile(\n", " final_output,\n", @@ -552,14 +569,14 @@ " original_clip.close()\n", " final_clip.close()\n", "\n", - " print(\"\\nDone!\")\n", + " print(\"Done!\")\n", "\n", " return os.path.abspath(final_output)" ] }, { "cell_type": "markdown", - "id": "24facf35", + "id": "d4caf175", "metadata": {}, "source": [ "## APP WHICH PROCESSES EITHER PHOTOS OF VIDEO" @@ -575,45 +592,100 @@ "name": "stdout", "output_type": "stream", "text": [ - "379 frames extracted!\n" + "Analysing frames...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Processing Video: 100%|██████████████████████████████████████████████████████████████| 291/291 [00:37<00:00, 7.71it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Writing labelled video...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Writing labelled video: 100%|████████████████████████████████████████████████████████| 291/291 [00:15<00:00, 18.83it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding audio back to video...\n", + "MoviePy - Building video processed_with_audio.mp4.\n", + "MoviePy - Writing audio in processed_with_audioTEMP_MPY_wvf_snd.mp4\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " " ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "fe6186ede29d41e4aeb24681cda79fd9", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Processing Video: 0%| | 0/379 [00:00" ] @@ -123,7 +144,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "ab330acf-e322-412a-983d-26ebd908391e", "metadata": {}, "outputs": [], @@ -139,9 +160,6 @@ "\n", "\n", "# 1. Settings\n", - "\n", - "folder_path = r\"C:\\Users\\User\\.cache\\kagglehub\\datasets\\shahzadabbas\\expression-in-the-wild-expw-dataset\\versions\\1\\origin\"\n", - "\n", "padding_ratio = 0.15 # 15% padding around the box\n", "\n", "# Confidence threshold to ignore weak detections\n", @@ -176,7 +194,7 @@ " h = max(0, y2 - y1)\n", " area = w * h\n", " conf = confs[i] if confs is not None else 0.6\n", - " score = area * conf\n", + " score = * conf\n", "\n", " if score > best_score:\n", " best_score = score\n", @@ -381,7 +399,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "3cdad49e-fdee-4282-94b3-2e0ae942e9e8", "metadata": {}, "outputs": [], @@ -400,7 +418,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "5beba27d-19a0-44d6-8682-96219d9e1856", "metadata": {}, "outputs": [], @@ -446,7 +464,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "id": "694f8e5c-c91a-4a7b-a76c-373bd467460b", "metadata": {}, "outputs": [], @@ -481,7 +499,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "d16a70d7-ba13-4e68-971a-a89794be6492", "metadata": {}, "outputs": [], @@ -510,7 +528,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "id": "9ee6fc63-0313-4ef1-b5bd-d7bee2124e0a", "metadata": {}, "outputs": [], @@ -530,7 +548,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "id": "2ad3be87-97c6-4c3c-8ebb-518a7c819a95", "metadata": {}, "outputs": [], @@ -595,7 +613,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "id": "20236cb4-ccea-4618-a8ba-e04bd6d98c33", "metadata": {}, "outputs": [], @@ -619,17 +637,24 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "id": "02cd4759-011f-43dd-9551-ccde9f15a5ae", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n" + ] + }, { "data": { "text/plain": [ "" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -640,7 +665,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "id": "7a2ff5a7-54da-4e3e-8b5c-a551c6c47ba2", "metadata": {}, "outputs": [ @@ -666,7 +691,7 @@ "name": "stderr", "output_type": "stream", "text": [ - " \r" + " " ] }, { @@ -676,18 +701,17 @@ "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[13], line 31\u001b[0m\n\u001b[0;32m 28\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mBackbone unfrozen. Switched to fine-tuning.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 30\u001b[0m \u001b[38;5;66;03m# TRAIN \u001b[39;00m\n\u001b[1;32m---> 31\u001b[0m train_loss, train_acc \u001b[38;5;241m=\u001b[39m train_one_epoch(\n\u001b[0;32m 32\u001b[0m model, res_train_loader, criterion, optimizer, device\n\u001b[0;32m 33\u001b[0m )\n\u001b[0;32m 35\u001b[0m \u001b[38;5;66;03m# VALIDATE \u001b[39;00m\n\u001b[0;32m 36\u001b[0m val_loss, val_acc \u001b[38;5;241m=\u001b[39m evaluate(\n\u001b[0;32m 37\u001b[0m model, res_val_loader, criterion, device\n\u001b[0;32m 38\u001b[0m )\n", - "Cell \u001b[1;32mIn[9], line 12\u001b[0m, in \u001b[0;36mtrain_one_epoch\u001b[1;34m(model, loader, criterion, optimizer, device)\u001b[0m\n\u001b[0;32m 8\u001b[0m total \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[0;32m 10\u001b[0m loop \u001b[38;5;241m=\u001b[39m tqdm(loader, desc\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTraining\u001b[39m\u001b[38;5;124m\"\u001b[39m, leave\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m---> 12\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m images, labels \u001b[38;5;129;01min\u001b[39;00m loop:\n\u001b[0;32m 13\u001b[0m images \u001b[38;5;241m=\u001b[39m images\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[0;32m 14\u001b[0m labels \u001b[38;5;241m=\u001b[39m labels\u001b[38;5;241m.\u001b[39mto(device)\n", - "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\tqdm\\std.py:1181\u001b[0m, in \u001b[0;36mtqdm.__iter__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1178\u001b[0m time \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time\n\u001b[0;32m 1180\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 1181\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m obj \u001b[38;5;129;01min\u001b[39;00m iterable:\n\u001b[0;32m 1182\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m obj\n\u001b[0;32m 1183\u001b[0m \u001b[38;5;66;03m# Update and possibly print the progressbar.\u001b[39;00m\n\u001b[0;32m 1184\u001b[0m \u001b[38;5;66;03m# Note: does not call self.update(1) for speed optimisation.\u001b[39;00m\n", - "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\torch\\utils\\data\\dataloader.py:733\u001b[0m, in \u001b[0;36m_BaseDataLoaderIter.__next__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 730\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sampler_iter \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 731\u001b[0m \u001b[38;5;66;03m# TODO(https://github.com/pytorch/pytorch/issues/76750)\u001b[39;00m\n\u001b[0;32m 732\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_reset() \u001b[38;5;66;03m# type: ignore[call-arg]\u001b[39;00m\n\u001b[1;32m--> 733\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_next_data()\n\u001b[0;32m 734\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_num_yielded \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m 735\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\n\u001b[0;32m 736\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_dataset_kind \u001b[38;5;241m==\u001b[39m _DatasetKind\u001b[38;5;241m.\u001b[39mIterable\n\u001b[0;32m 737\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_IterableDataset_len_called \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 738\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_num_yielded \u001b[38;5;241m>\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_IterableDataset_len_called\n\u001b[0;32m 739\u001b[0m ):\n", - "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\torch\\utils\\data\\dataloader.py:1491\u001b[0m, in \u001b[0;36m_MultiProcessingDataLoaderIter._next_data\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1488\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_process_data(data, worker_id)\n\u001b[0;32m 1490\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_shutdown \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_tasks_outstanding \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m-> 1491\u001b[0m idx, data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_data()\n\u001b[0;32m 1492\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_tasks_outstanding \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m 1493\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_dataset_kind \u001b[38;5;241m==\u001b[39m _DatasetKind\u001b[38;5;241m.\u001b[39mIterable:\n\u001b[0;32m 1494\u001b[0m \u001b[38;5;66;03m# Check for _IterableDatasetStopIteration\u001b[39;00m\n", - "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\torch\\utils\\data\\dataloader.py:1453\u001b[0m, in \u001b[0;36m_MultiProcessingDataLoaderIter._get_data\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1449\u001b[0m \u001b[38;5;66;03m# In this case, `self._data_queue` is a `queue.Queue`,. But we don't\u001b[39;00m\n\u001b[0;32m 1450\u001b[0m \u001b[38;5;66;03m# need to call `.task_done()` because we don't use `.join()`.\u001b[39;00m\n\u001b[0;32m 1451\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1452\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m-> 1453\u001b[0m success, data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_try_get_data()\n\u001b[0;32m 1454\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m success:\n\u001b[0;32m 1455\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m data\n", - "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\torch\\utils\\data\\dataloader.py:1284\u001b[0m, in \u001b[0;36m_MultiProcessingDataLoaderIter._try_get_data\u001b[1;34m(self, timeout)\u001b[0m\n\u001b[0;32m 1271\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_try_get_data\u001b[39m(\u001b[38;5;28mself\u001b[39m, timeout\u001b[38;5;241m=\u001b[39m_utils\u001b[38;5;241m.\u001b[39mMP_STATUS_CHECK_INTERVAL):\n\u001b[0;32m 1272\u001b[0m \u001b[38;5;66;03m# Tries to fetch data from `self._data_queue` once for a given timeout.\u001b[39;00m\n\u001b[0;32m 1273\u001b[0m \u001b[38;5;66;03m# This can also be used as inner loop of fetching without timeout, with\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1281\u001b[0m \u001b[38;5;66;03m# Returns a 2-tuple:\u001b[39;00m\n\u001b[0;32m 1282\u001b[0m \u001b[38;5;66;03m# (bool: whether successfully get data, any: data if successful else None)\u001b[39;00m\n\u001b[0;32m 1283\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 1284\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data_queue\u001b[38;5;241m.\u001b[39mget(timeout\u001b[38;5;241m=\u001b[39mtimeout)\n\u001b[0;32m 1285\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (\u001b[38;5;28;01mTrue\u001b[39;00m, data)\n\u001b[0;32m 1286\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 1287\u001b[0m \u001b[38;5;66;03m# At timeout and error, we manually check whether any worker has\u001b[39;00m\n\u001b[0;32m 1288\u001b[0m \u001b[38;5;66;03m# failed. Note that this is the only mechanism for Windows to detect\u001b[39;00m\n\u001b[0;32m 1289\u001b[0m \u001b[38;5;66;03m# worker failures.\u001b[39;00m\n", - "File \u001b[1;32m~\\anaconda3\\Lib\\multiprocessing\\queues.py:113\u001b[0m, in \u001b[0;36mQueue.get\u001b[1;34m(self, block, timeout)\u001b[0m\n\u001b[0;32m 111\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m block:\n\u001b[0;32m 112\u001b[0m timeout \u001b[38;5;241m=\u001b[39m deadline \u001b[38;5;241m-\u001b[39m time\u001b[38;5;241m.\u001b[39mmonotonic()\n\u001b[1;32m--> 113\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_poll(timeout):\n\u001b[0;32m 114\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m Empty\n\u001b[0;32m 115\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_poll():\n", - "File \u001b[1;32m~\\anaconda3\\Lib\\multiprocessing\\connection.py:256\u001b[0m, in \u001b[0;36m_ConnectionBase.poll\u001b[1;34m(self, timeout)\u001b[0m\n\u001b[0;32m 254\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_closed()\n\u001b[0;32m 255\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_readable()\n\u001b[1;32m--> 256\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_poll(timeout)\n", - "File \u001b[1;32m~\\anaconda3\\Lib\\multiprocessing\\connection.py:329\u001b[0m, in \u001b[0;36mPipeConnection._poll\u001b[1;34m(self, timeout)\u001b[0m\n\u001b[0;32m 326\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_got_empty_message \u001b[38;5;129;01mor\u001b[39;00m\n\u001b[0;32m 327\u001b[0m _winapi\u001b[38;5;241m.\u001b[39mPeekNamedPipe(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_handle)[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m0\u001b[39m):\n\u001b[0;32m 328\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m--> 329\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mbool\u001b[39m(wait([\u001b[38;5;28mself\u001b[39m], timeout))\n", - "File \u001b[1;32m~\\anaconda3\\Lib\\multiprocessing\\connection.py:878\u001b[0m, in \u001b[0;36mwait\u001b[1;34m(object_list, timeout)\u001b[0m\n\u001b[0;32m 875\u001b[0m ready_objects\u001b[38;5;241m.\u001b[39madd(o)\n\u001b[0;32m 876\u001b[0m timeout \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m--> 878\u001b[0m ready_handles \u001b[38;5;241m=\u001b[39m _exhaustive_wait(waithandle_to_obj\u001b[38;5;241m.\u001b[39mkeys(), timeout)\n\u001b[0;32m 879\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 880\u001b[0m \u001b[38;5;66;03m# request that overlapped reads stop\u001b[39;00m\n\u001b[0;32m 881\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ov \u001b[38;5;129;01min\u001b[39;00m ov_list:\n", - "File \u001b[1;32m~\\anaconda3\\Lib\\multiprocessing\\connection.py:810\u001b[0m, in \u001b[0;36m_exhaustive_wait\u001b[1;34m(handles, timeout)\u001b[0m\n\u001b[0;32m 808\u001b[0m ready \u001b[38;5;241m=\u001b[39m []\n\u001b[0;32m 809\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m L:\n\u001b[1;32m--> 810\u001b[0m res \u001b[38;5;241m=\u001b[39m _winapi\u001b[38;5;241m.\u001b[39mWaitForMultipleObjects(L, \u001b[38;5;28;01mFalse\u001b[39;00m, timeout)\n\u001b[0;32m 811\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m res \u001b[38;5;241m==\u001b[39m WAIT_TIMEOUT:\n\u001b[0;32m 812\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "Cell \u001b[1;32mIn[13], line 31\u001b[0m\n\u001b[0;32m 28\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mBackbone unfrozen. Switched to fine-tuning.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 30\u001b[0m \u001b[38;5;66;03m# TRAIN \u001b[39;00m\n\u001b[1;32m---> 31\u001b[0m train_loss, train_acc \u001b[38;5;241m=\u001b[39m \u001b[43mtrain_one_epoch\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 32\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mres_train_loader\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcriterion\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moptimizer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdevice\u001b[49m\n\u001b[0;32m 33\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 35\u001b[0m \u001b[38;5;66;03m# VALIDATE \u001b[39;00m\n\u001b[0;32m 36\u001b[0m val_loss, val_acc \u001b[38;5;241m=\u001b[39m evaluate(\n\u001b[0;32m 37\u001b[0m model, res_val_loader, criterion, device\n\u001b[0;32m 38\u001b[0m )\n", + "Cell \u001b[1;32mIn[10], line 12\u001b[0m, in \u001b[0;36mtrain_one_epoch\u001b[1;34m(model, loader, criterion, optimizer, device)\u001b[0m\n\u001b[0;32m 8\u001b[0m total \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[0;32m 10\u001b[0m loop \u001b[38;5;241m=\u001b[39m tqdm(loader, desc\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTraining\u001b[39m\u001b[38;5;124m\"\u001b[39m, leave\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m---> 12\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m images, labels \u001b[38;5;129;01min\u001b[39;00m loop:\n\u001b[0;32m 13\u001b[0m images \u001b[38;5;241m=\u001b[39m images\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[0;32m 14\u001b[0m labels \u001b[38;5;241m=\u001b[39m labels\u001b[38;5;241m.\u001b[39mto(device)\n", + "File \u001b[1;32m~\\Miniconda\\envs\\yolo-test\\lib\\site-packages\\tqdm\\std.py:1181\u001b[0m, in \u001b[0;36mtqdm.__iter__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1178\u001b[0m time \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time\n\u001b[0;32m 1180\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 1181\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m obj \u001b[38;5;129;01min\u001b[39;00m iterable:\n\u001b[0;32m 1182\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m obj\n\u001b[0;32m 1183\u001b[0m \u001b[38;5;66;03m# Update and possibly print the progressbar.\u001b[39;00m\n\u001b[0;32m 1184\u001b[0m \u001b[38;5;66;03m# Note: does not call self.update(1) for speed optimisation.\u001b[39;00m\n", + "File \u001b[1;32m~\\Miniconda\\envs\\yolo-test\\lib\\site-packages\\torch\\utils\\data\\dataloader.py:484\u001b[0m, in \u001b[0;36mDataLoader.__iter__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 482\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_iterator\n\u001b[0;32m 483\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 484\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_iterator\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\Miniconda\\envs\\yolo-test\\lib\\site-packages\\torch\\utils\\data\\dataloader.py:415\u001b[0m, in \u001b[0;36mDataLoader._get_iterator\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 413\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 414\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcheck_worker_number_rationality()\n\u001b[1;32m--> 415\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_MultiProcessingDataLoaderIter\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\Miniconda\\envs\\yolo-test\\lib\\site-packages\\torch\\utils\\data\\dataloader.py:1138\u001b[0m, in \u001b[0;36m_MultiProcessingDataLoaderIter.__init__\u001b[1;34m(self, loader)\u001b[0m\n\u001b[0;32m 1131\u001b[0m w\u001b[38;5;241m.\u001b[39mdaemon \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m 1132\u001b[0m \u001b[38;5;66;03m# NB: Process.start() actually take some time as it needs to\u001b[39;00m\n\u001b[0;32m 1133\u001b[0m \u001b[38;5;66;03m# start a process and pass the arguments over via a pipe.\u001b[39;00m\n\u001b[0;32m 1134\u001b[0m \u001b[38;5;66;03m# Therefore, we only add a worker to self._workers list after\u001b[39;00m\n\u001b[0;32m 1135\u001b[0m \u001b[38;5;66;03m# it started, so that we do not call .join() if program dies\u001b[39;00m\n\u001b[0;32m 1136\u001b[0m \u001b[38;5;66;03m# before it starts, and __del__ tries to join but will get:\u001b[39;00m\n\u001b[0;32m 1137\u001b[0m \u001b[38;5;66;03m# AssertionError: can only join a started process.\u001b[39;00m\n\u001b[1;32m-> 1138\u001b[0m \u001b[43mw\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstart\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1139\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_index_queues\u001b[38;5;241m.\u001b[39mappend(index_queue)\n\u001b[0;32m 1140\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_workers\u001b[38;5;241m.\u001b[39mappend(w)\n", + "File \u001b[1;32m~\\Miniconda\\envs\\yolo-test\\lib\\multiprocessing\\process.py:121\u001b[0m, in \u001b[0;36mBaseProcess.start\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 118\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m _current_process\u001b[38;5;241m.\u001b[39m_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdaemon\u001b[39m\u001b[38;5;124m'\u001b[39m), \\\n\u001b[0;32m 119\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdaemonic processes are not allowed to have children\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 120\u001b[0m _cleanup()\n\u001b[1;32m--> 121\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_popen \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_Popen\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 122\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sentinel \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_popen\u001b[38;5;241m.\u001b[39msentinel\n\u001b[0;32m 123\u001b[0m \u001b[38;5;66;03m# Avoid a refcycle if the target function holds an indirect\u001b[39;00m\n\u001b[0;32m 124\u001b[0m \u001b[38;5;66;03m# reference to the process object (see bpo-30775)\u001b[39;00m\n", + "File \u001b[1;32m~\\Miniconda\\envs\\yolo-test\\lib\\multiprocessing\\context.py:224\u001b[0m, in \u001b[0;36mProcess._Popen\u001b[1;34m(process_obj)\u001b[0m\n\u001b[0;32m 222\u001b[0m \u001b[38;5;129m@staticmethod\u001b[39m\n\u001b[0;32m 223\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_Popen\u001b[39m(process_obj):\n\u001b[1;32m--> 224\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_default_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_context\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mProcess\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_Popen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprocess_obj\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\Miniconda\\envs\\yolo-test\\lib\\multiprocessing\\context.py:336\u001b[0m, in \u001b[0;36mSpawnProcess._Popen\u001b[1;34m(process_obj)\u001b[0m\n\u001b[0;32m 333\u001b[0m \u001b[38;5;129m@staticmethod\u001b[39m\n\u001b[0;32m 334\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_Popen\u001b[39m(process_obj):\n\u001b[0;32m 335\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpopen_spawn_win32\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Popen\n\u001b[1;32m--> 336\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mPopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprocess_obj\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\Miniconda\\envs\\yolo-test\\lib\\multiprocessing\\popen_spawn_win32.py:93\u001b[0m, in \u001b[0;36mPopen.__init__\u001b[1;34m(self, process_obj)\u001b[0m\n\u001b[0;32m 91\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 92\u001b[0m reduction\u001b[38;5;241m.\u001b[39mdump(prep_data, to_child)\n\u001b[1;32m---> 93\u001b[0m \u001b[43mreduction\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdump\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprocess_obj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mto_child\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 94\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 95\u001b[0m set_spawning_popen(\u001b[38;5;28;01mNone\u001b[39;00m)\n", + "File \u001b[1;32m~\\Miniconda\\envs\\yolo-test\\lib\\multiprocessing\\reduction.py:60\u001b[0m, in \u001b[0;36mdump\u001b[1;34m(obj, file, protocol)\u001b[0m\n\u001b[0;32m 58\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mdump\u001b[39m(obj, file, protocol\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[0;32m 59\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m'''Replacement for pickle.dump() using ForkingPickler.'''\u001b[39;00m\n\u001b[1;32m---> 60\u001b[0m \u001b[43mForkingPickler\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfile\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdump\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[1;31mKeyboardInterrupt\u001b[0m: " ] } @@ -768,12 +792,19 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 23, "id": "b12f4ff7-410a-4509-92b4-db24c8dc093b", "metadata": { "scrolled": true }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n" + ] + }, { "data": { "text/plain": [ @@ -926,7 +957,7 @@ ")" ] }, - "execution_count": 14, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -952,12 +983,12 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 24, "id": "11097cef-4cd4-4810-adaa-d66ad9daa920", "metadata": {}, "outputs": [], "source": [ - "from tqdm.notebook import tqdm # use: from tqdm import tqdm if not in notebook\n", + "from tqdm import tqdm \n", "\n", "def test_model(model, dataloader, criterion, device):\n", " model.eval()\n", @@ -1000,18 +1031,11 @@ "metadata": {}, "outputs": [ { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "6fb50f23b907446498e72514613d0342", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Testing: 0%| | 0/48 [00:00<…" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stderr", + "output_type": "stream", + "text": [ + "Testing: 100%|█████████████████████████████████████████████████████████████████████████| 48/48 [00:11<00:00, 4.28it/s]" + ] }, { "name": "stdout", @@ -1020,6 +1044,13 @@ "Test Loss: 0.8088\n", "Test Acc: 0.8389\n" ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] } ], "source": [ @@ -1039,7 +1070,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqsAAAJOCAYAAACQkk7AAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAACkZklEQVR4nOzdB3xTZfcH8N9N0r0HpRTK3nsvEVBARHG8+Lrwr6i4fVVU3Asn7r33Xq/rdaIMWTJk702BMioFSvdKcv+f89SEpBRoME2Te39fP9c2yU16E5Kbc89znnM1Xdd1EBEREREFIUt9bwARERER0ZEwWCUiIiKioMVglYiIiIiCFoNVIiIiIgpaDFaJiIiIKGgxWCUiIiKioMVglYiIiIiCFoNVIiIiIgpaDFaJiIiIKGgxWCWi47Jy5UpcdtllaNGiBSIjIxEbG4uePXviySefxIEDB+r0by9btgxDhgxBQkICNE3D888/7/e/IY87adIkBNr777+v/rYsM2fOPOx2Oelg69at1e1Dhw49rr/x6quvqr/jC9mWI20TEVFdstXpoxORIb311lu47rrr0K5dO9x2223o2LEjKisrsXjxYrz++uuYP38+vv322zr7+5dffjmKi4vx+eefIykpCc2bN/f735Dn0KRJE9SXuLg4vPPOO4cFpLNmzcKWLVvU7cdLgtXU1FRceumltb6PHIjIayL/1kREgcRglYh8IgHLtddeixEjRuC7775DRESE+za57tZbb8WUKVPqdBtWr16NK6+8EqNGjaqzv9G/f3/Up/PPPx+ffPIJXnnlFcTHx7uvlwB2wIABKCgoCMh2yEGIZFRlG+r7NSEic2IZABH55LHHHlPBy5tvvukVqLqEh4fjzDPPdF92Op2qNKB9+/Zq/bS0NFxyySXYuXOn1/0kg9i5c2csWrQIJ554IqKjo9GyZUs8/vjj6jE8h8jtdjtee+0193C5kCF71++eXPfZtm2b+7oZM2aov5eSkoKoqCg0bdoU55xzDkpKSo5aBiBB8llnnaWyuVL60L17d3zwwQc1Dpd/9tlnuOeee5CRkaECveHDh2PDhg21fp0vvPBC9VMexyU/Px9ff/21yizX5MEHH0S/fv2QnJys/qZkQyW4ldIBF8lCr1mzRmVoXa+fKzPt2vaPPvpIHXQ0btxY/Ztt3rz5sDKAffv2ITMzEwMHDlQBrcvatWsRExODiy++uNbPlYjoaBisElGtORwOFej16tVLBSq1IVnYO+64Q2Vdv//+ezz88MMq8ypBjgQ8nnJycnDRRRfh//7v/9S6kjm966678PHHH6vbTz/9dJXZFf/+97/V767LtSVBqzyOBNXvvvuu2hYJiCXAqqioOOL9JNCUbZZA78UXX8Q333yjhsRlKF2C8eruvvtubN++HW+//bYK7Ddt2oQzzjhDvYa1IcGmPEfZRhcJXC0Wi8q6Hum5XX311fjyyy/V9o0ZMwY33HCDes1dpDxDDgJ69Ojhfv2ql2zIa75jxw5V0vHDDz+oA4zqpIxAyjDk4EL+fYUE++eee64K/uW+RER+oRMR1VJOTo6k6PQLLrigVuuvW7dOrX/dddd5Xb9w4UJ1/d133+2+bsiQIeo6uc1Tx44d9ZEjR3pdJ+tdf/31Xtc98MAD6vrq3nvvPXV9VlaWuvzVV1+py8uXLz/qtss68pgu8pwjIiL0HTt2eK03atQoPTo6Wj948KC6/Pvvv6v7nnbaaV7rffnll+r6+fPnH/XvurZ30aJF7sdavXq1uq1Pnz76pZdeqn7v1KmTes2OxOFw6JWVlfpDDz2kp6Sk6E6n033bke7r+nuDBw8+4m3y09MTTzyhrv/222/1cePG6VFRUfrKlSuP+hyJiHzBzCoR1Znff/9d/aw+kadv377o0KEDpk+f7nV9enq6us1T165dVYbSX2ToXrKqV111lRrC37p1a63uJxnlYcOGHZZRlucmGcXqGV7PUgjX8xC+PBfpeNCqVSuVXV21apXKYh6pBMC1jVJuIF0SrFYrwsLCcP/992P//v3Yu3dvrf+ulETUlkywk0y1lC3I6/nSSy+hS5cutb4/EdGxMFglolqToV+pJc3KyqrV+hIkiUaNGh12m9Ryum53kRrS6qRmsrS0FP4iwd+0adPU0Pb111+vLsvywgsvHPV+sq1Heh6u24/2XFz1vb48F6kRlfZgUgYhw+pt27ZV9bw1+fPPP3HKKae4uzX88ccfKriVullf/25Nz/No2ygBe1lZmTrYYK0qEfkbg1UiqjXJ1kl2ccmSJYdNkKqJK2Dbs2fPYbft3r1bBb/+IhOeRHl5udf11etihQR8UospE5YWLFigZtdPmDBB1WAe7bkc6XkIfz4XTxIIynOQYFUC1yORbZdM6o8//ojzzjtP1df27t37uP5mTRPVjkReEwn6JWMtAfvEiROP628SER0Jg1Ui8olMvpGSTmkdVdOEJJkZLoGgOPnkk9VP1wQpF8n4rVu3TgW+/uKa0S4nK/Dk2pYjBd8ye17aQ4mlS5cecV3ZVhlmdwWnLh9++KHKNtdVWyeZkS9D7TI5a9y4cUcNMG02m3pOLpJNlZn9dZWtlsliMvwvf/uXX37B5MmTVRmATO4iIvIX9lklIp9IFlLaRslJAaQrgMz279SpkwpS5cxSMvNdWlBJcCUnDZDaUAlgZBa7zO6XGev33Xefqv28+eab/bZdp512mmrZNH78eDz00EMqcJO2VdnZ2V7rSYZSgk6ps5RZ6zJ87ZpxL/WeR/LAAw+orOVJJ52k6kDlb0kf1J9++kl1A5A60boi3QqORZ7Ps88+i7Fjx6rXXLKcTz/9dI3txaSmVDKxX3zxheoMIFnp46kzlddkzpw5+O2331QJgLS7kpZY8m8g3Qbk7GZERP8Ug1Ui8plkVWUi1HPPPYcnnnhCtZySIWipqZRg6T//+Y97XQlspSZU+n1KBlOCulNPPVVl4WqqUT1e0upJ2lDJcL60vkpMTMQVV1yhAmT56SLD1RJcSaAl2y2niZXgWlpluWo+ayKB97x581RLKhn2lsykTBJ77733fDoTVF2RLLYE3fLvIQcKkpGVfyepzZXgsXo/Vhm+l9sLCwvRrFkzrz60tTF16lT1bygHHp4ZcjlAkEBV2mvNnTtXTWYjIvonNGkJ8I8egYiIiIiojrBmlYiIiIiCFoNVIiIiIgpaDFaJiIiIKGgxWCUiIiKioMVglYiIiIiCFoNVIiIiIgpa7LMaIpxOpzpzTlxcnE+nQiQiIjIr6c4pvYQzMjLUiUnqm5yEpKYz//lDeHi4+7TTRsNgNURIoCpn/CEiIiLfyJnsmjRpUu+BaotmscjZ66iTx09PT0dWVpYhA1YGqyFCMqpiaLOrYbOY+4wwjp059b0JQUGvrJuj85DDkYYqWv1njYKCs24CgZDEzwbseiXm4if3d2h9koyqBKrblzRHfJx/P68FhU4067VN/Q0Gq1RvXEP/EqjaLIef69tMNC2svjchKOgaTz6n8Au5CoPVKnwdDuFno4p+6Ds0GMTGaWrxJyeC5/nVBX6qiYiIiChoMbNKREREFCAO3QmH7v/HNDJmVomIiIgoaDGzSkRERBQgTuhq8fdjGhkzq0REREQUtJhZJSIiIgoQp/rP/49pZAxWiYiIiALEoetq8fdjGhnLAIiIiIgoaDGzSkRERBQgnGDlO2ZWiYiIiChoMbNKREREFCCSBXUws+oTZlaJiIiIKGgxs0pEREQUIKxZ9R0zq0REREQUtJhZJSIiIgoQ9ln1HYNVIiIiogCRc035/wxWxsYyACIiIiIKWsysEhEREQWIow5aVzk4wYqIiIiIqH4ws0pEREQUIA69avH3YxoZM6tEREREFLSYWSUiIiIKEHYD8B0zq0REREQUtJhZJSIiIgoQJzQ4oPn9MY2MwarJHSjNRtbBRSgo/wvljmL0SD8LDWPauG/PKdqI7IKV6vZKZykGNrkE8RFpXo+xOvc37C/Zru5v1cKQFJmBtimDERueglCW59yLbY61KNDzUIFSdLOdiDRLpvt2u16JzY7l2OvciUpUIAoxyLS2Q6b10OtndFn6emzBamSiNdpp3WEmTt2Jrfpa5GA7KlCGCEShkdYcLdABmmbsL47q5LOwRV+FXH0XKlCOOCSiraUHErTQ3gf4+lnIxS4UoxAWWJGIFLRGF8RocTCbMr0Um/WV2I8cOOBANGLRUeuDeC2pvjctKDj1qsXfj2lkDFZNzuGsRFx4GhrHdcbyv74//Ha9UgWf6bFtsSb3txofIyGiITJiOyDSFo9KZxk2H5iHxXu+wpCmV0LTQrfSxAE74rQkZFhbYaV9zmG3b3QsxQHnX+hsG4goLQb7nTlY71iECC0KaZYmMLp8/QB2YStikQAz2o4N2IUt6KT1RQziUYA8rNUXwaaFoSnMc8Ai1umLUKTno5Olnwra9+jbsdQ5CwMspyJSi4YZHEQumqAV4pEEHbo6iFuGORignwKrZp6v2kq9Aov1GUhCGrprJyIcEShFEWwIq+9NoxBmnk8Q1ahBTEu1KH8dfnvjuE7qZ0ll/hEfIzO+m8elBLRNHoQ/dn6AUnsBosMSEapSLRlqOZKD+j5kWFsg2dJQXW5ibY2dzk0ocO43fLBq1+1Ygz/RAb2QhXUwo3x9PxogA6laI3VZMus5+g4U6Adg8BE5Lw7djr36TnSzDEKSVjXq0krrjFzHLuzUt6C11gVm0EM70etyR70PZuMHdRCThAYwi236ekQiGp0sfdzXyWeDDnHUQRmAw+A7ndBNe4WIyspKmIndWYGdhasRZUtApM3Yw1+JWgPkOnehTC+Brusqy1qiFyLFUhW8GNkGLEMK0pGiVQXqZpSopeIA9qJYL1SXC/WDyMc+d/BqFvrf/8nQtycrrDio58Ks7Kja94chHGayD7sRhySsdM7HLOf3WOCcil361vreLApxpgpWp0yZgkGDBiExMREpKSkYPXo0tmzZom7btm2bqjP75ptvcNJJJyE6OhrdunXD/PnzvR7jrbfeQmZmprr9X//6F5599ln1eC6TJk1C9+7d8e6776Jly5aIiIjABx98oP5eeXm512Odc845uOSSS2AEO/KXYerWFzAt60XsK8lCn4xzYdG8v7yMpr21F2K0BMyp/A7TKz/HUvvvaG/tgySLd02v0eTo2SpbJPV4ZtYM7ZCOppivT8F051dYqE9FptYG6VpTmImUPSQgBVuda1Cul0LXndjj3IZ87Fe1vGYkB68bsULVrcZq5iqTKUWxKo+ROlXJNjfRWmKDvgy79W31vWlBl1n192JkpgpWi4uLccstt2DRokWYPn06LBaLCjidzkMdyu655x5MnDgRy5cvR9u2bXHhhRfCbrer2/744w9cc801uOmmm9TtI0aMwKOPPnrY39m8eTO+/PJLfP3112q98847Dw6HA99/f6gmdN++ffjxxx9x2WWX1bitEtgWFBR4LcGsUWxHNfmqb8b5iA5LwvKcH+BwVr1uRrXDuRH5zn3obhuMfrZT0dbaQ9WsSu2qUUkWeSOWozP6wmrwg5Fj+QvZ2IPt6Kz1Qz9thKpd3aFvNOWXcidLf/VzjvN7zHB+hWx9E9K1ZtAM/gV6JBuwHEXIR2f0g9lIll0yq60tXdSEqiZaKzRGS+zSqxJDRMfDVDWrksn09M477yAtLQ1r165FbGysuk4C1dNPP139/uCDD6JTp04q+Gzfvj1eeukljBo1Sq0jJJidN2+eCjo9VVRU4KOPPkKDBofqlMaOHYv33nsP5557rrr8ySefoEmTJhg6dGiN2zp58mT190NFmDVCLTFIQmJkBqZnvYS/ijchI64DjFqnt9mxQnUIaGBprK6THbQMBW93rEOKJR1GJBlVme39J6bLt5L7y+kg9qn6xJMxxjQz4TfpK9Fca+/OpMpEM8kqSc1ehtYcZhKtxaK39WT1uZDhb5lkuMo5D5EmrFVcry9DLnajN4aaZnKZJ5lgJxMOPcVo8aqumao4dU0t/n5MIzNVZlWG/CVolOH5+Ph4tGjRQl2/Y8cO9zpdu3Z1/96oUVXt2d69e9XPDRs2oG/fvl6PWf2yaNasmVegKq688kr89ttv2LVrl7osgeull156xC/2u+66C/n5+e4lOzsboUTiGKfugFFVVelJZzvvfz+5LLcYVTLS0B8j0A/D3YvMfpbhcPndLIGqcKqBt8P//d1RvAnJrHcJVGVG+H49Bw20qgM5swz9VwWqu9ALg1WHEDOSkpASVNVxu0hdtxkPXMh/TJVZPeOMM1S9qdSdZmRkqOH/zp07q0yoS1jYofYari9eV5mA7IyqfxnLddXFxBz+oezRo4eqgf3www8xcuRIrFq1Cj/88MMRt1VqXWUJxISoksqD7sullfkoKN+LMEskosLiUeEoRZm9EOX2InV7ceWBqu2zxiDCFqPuu6doA1KjmyHcEo0yRxGy8v5UX1oNoqsOBkK5d2SpXvW8RalejEJnHmxauPoikpnPGx3L1MQSuSx9Wfc4s9DW2hNGrk+s3qrKolvVJBKz1ealohGy9HVq5rNkkgpxUJUBZCC03/fHY7++R4XoMYhDCYqwybkC0YhDhmae10ImHeYgG90wEPKJKNer6nWlZZOZSmaaam1V6yr5bDREJgpQ1eKug9arvjctaLAbgO9ME6zu378f69atwxtvvIETT6xqMTJ37lyfHkNKAf7880+v6xYvXlzr+19xxRV47rnnVHZ1+PDhKnCub/nlOVi0+0v35fX7Z6qfGXGd0DVtFPYWb8Hq3Cnu21f8VVXy0CppANoknwCLZkNe2U5sz1+CSkeZCmKTopqgX+OxKpgNZdKCaIl9uldfVdHI0gKdbQPQxXaCKgVYbZ+nTgogmYPW1q5oYmldj1tNgdJO64Et+hqs15e6TwrQGK3QUusIs1EnyNBXogyl6sAlTWuiWlZZQrjPsq92omrG+xLM8rq+I3ojA+YpC0nQktEVA7FZX4UsrFX7RTlhSCOtWX1vWtBwwKIW/z6msZkmWE1KSlIz8t988001vC9D/3feeadPj3HDDTdg8ODBqgOAZGlnzJiBX375pdZDnxdddJGqd5XMrmRYg0FKVFOc2qqqBrcmTeI7q+VIIm2x6N3IuxbYKKR/6ojwsUe8XYY7O9mqJpaYWW+t5rpro5Mss3wJt4O5ztxVk4aWpmgIc3VBqG649u/63oSg0UDLUAuRv5jmsFdm/n/++edYsmSJGvq/+eab8dRTT/n0GCeccAJef/11FazKkL60wpLHiYyMrNX9pU5WJnnJZK6zzz77OJ8JERERhSr97wlW/lx0g0+w0vSaii6p1mTi1Pr16zFnzuGn46yJtLvq0KEDXnzxRZ/+jrSuSkhIwPAWN8Bmqfta1mDmyN5d35sQFPTKQ7XWpmaiSV1HZaIh96NyGn1A1Af8bKgSlZn6d2qisiSM6pPre3z6qqaIifPv57W40IlhXXYExfOsC6YpA/CXp59+WgWcMolKSgCk4f+rr756zPsdOHBAdQOQ0oGXX345INtKREREwYUTrHzHYNVHMsHqySefRGFhoWqBJRlSmTh1LD179kReXh6eeOIJtGvXLiDbSkRERBTqGKz6SM5MdTzkdK5ERERkbg7dohb/PiYMjUVORERERBS0mFklIiIiChA596HTz7lCp8HPnMfMKhEREREFLQarRERERAHuBuDvxRezZ89WJzeSU8/LiY2+++47r9ulq+mkSZPU7VFRURg6dCjWrFnjtU55ebk6WVJqaqrqkHTmmWdi586dXuvIxPKLL75YteySRX4/ePDQKd5ri8EqERERUYAnWPl78UVxcbE6udGRWmlK1yM5AZLcvmjRIqSnp6u2ndIJyWXChAn49ttv1QmX5PT1RUVFGD16NByOQ72Ox44di+XLl6uTKMkiv0vA6ivWrBIRERGZyKhRo9RSE8mqPv/887jnnnswZswYdZ30lG/YsCE+/fRTXH311erkA++88w4++ugjDB8+XK3z8ccfIzMzE9OmTcPIkSOxbt06FaAuWLAA/fr1U+vI6eYHDBiADRs2+NTGk5lVIiIiooBOsPL/4jpLluciQ/W+ysrKQk5ODk455RT3dRERERgyZAjmzZunLsup6ysrK73WkZIBOZ29a5358+eroX9XoCr69++vrnOtU1sMVomIiIgMIDMz010fKsvkyZN9fgwJVIVkUj3JZddt8jM8PBxJSUlHXSctLe2wx5frXOvUFssAiIiIiAJE2lY56qh1VXZ2NuLj470yosdLJl5VLw+ofl111depaf3aPE51zKwSERERGUB8fLzXcjzBqkymEtWzn3v37nVnW2WdiooKNdv/aOv89ddfhz1+bm7uYVnbY2GwSkRERGSibgBH06JFCxVoTp061X2dBKazZs3CwIED1eVevXohLCzMa509e/Zg9erV7nVkIpVMxPrzzz/d6yxcuFBd51qntlgGQERERGQiRUVF2Lx5s9ekKmkrlZycjKZNm6q2VI899hjatGmjFvk9OjpataISUg87fvx43HrrrUhJSVH3mzhxIrp06eLuDtChQweceuqpuPLKK/HGG2+o66666irV3sqXTgCCwSoRERFRAGtW6/t0q4sXL8ZJJ53kvnzLLbeon+PGjcP777+P22+/HaWlpbjuuuvUUL/M6P/tt98QFxfnvs9zzz0Hm82G8847T607bNgwdV+r1epe55NPPsGNN97o7hogJw44Um/Xo9F0qXSloCctKORIZniLG2CzHH/BtBE4snfX9yYEBb2yor43ITj4WKhvWBqruhTnoYbkpsfPBux6JWbq36mhZ8+JR/X5Pf7Rsi6IjjsU0PlDSaEDF/dYFRTPsy5w70ZEREREQYtlAEREREQB4qiD1lUOH8sAQg0zq0REREQUtJhZJSIiIgoQp25Ri38fU4eRMbNKREREREGLmVUiIiKiAGHNqu+YWSUiIiKioMXMKhEREVGAONUpVzW/P6aRMVglIiIiCukzWFlgZAxWQ4x9+y5AC4OZ2Ro1rO9NCAr2XTyTl9Bs5v48uFl4tiLFwdfBRbfb63sT6p/BZ8mbBYNVIiIiogBx6Ba1+PsxjczYz46IiIiIQhozq0REREQB4oSmFn8/ppExs0pEREREQYuZVSIiIqIAYc2q74z97IiIiIgopDGzSkRERBTSp1u1wMgYrBIREREFiFPX1OLvxzQyY4fiRERERBTSmFklIiIiChA5Naq/h+2dBs89GvvZEREREVFIY2aViIiIKECcukUt/n5MIzP2syMiIiKikMbMKhEREVGAOKCpxd+PaWTMrBIRERFR0GJmlYiIiChAWLPqOwarRERERAHiqINheweMzdihOBERERGFNGZWiYiIiAKEZQC+M/azIyIiIqKQxswqERERUYA4dIta/P2YRmbsZ0dEREREIY2ZVSIiIqIA0aHB6eduADpPCkBEREREVD+YWSUiIiIKENas+s7Yz46IiIiIQhozq3SYPH0vtjs3oAAHUIEydLWcgDStift2XdexVV+DXfoW2FGJeCSjvaUXYrUEGIVTd2JzwULsKdmAckcxIqwxaBzTAa3i+kLTDtUGFVUewIb8P5BX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IiIiE7Hb7bj33nvRokULREVFoWXLlnjooYfgdDrd6+i6jkmTJiEjI0OtM3ToUKxZs8brccrLy3HDDTcgNTUVMTExOPPMM7Fz506/by+DVSIiIqIAZ1b9vfjiiSeewOuvv46XX34Z69atw5NPPomnnnoKL730knsdue7ZZ59V6yxatAjp6ekYMWIECgsL3etMmDAB3377LT7//HPMnTsXRUVFGD16NBwOB/yJZQBEREREJioDmD9/Ps466yycfvrp6nLz5s3x2WefYfHixe6s6vPPP4977rkHY8aMUdd98MEHaNiwIT799FNcffXVyM/PxzvvvIOPPvoIw4cPV+t8/PHHyMzMxLRp0zBy5Ei/PT9mVomIiIhMZNCgQZg+fTo2btyoLq9YsUJlRk877TR1OSsrCzk5OTjllFPc94mIiMCQIUMwb948dXnJkiWorKz0WkdKBjp37uxex1+YWQ01utSTHKopMSP7rt31vQlBwRIXV9+bEBScRUX1vQnBQdfrewuCg2bsiSY+sVjrewuC4zvTaZ7MakFBgdf1EmDKUt0dd9yhMqPt27eH1WpVw/aPPvooLrzwQnW7BKpCMqme5PL27dvd64SHhyMpKemwdVz39xdmVomIiIgMIDMzEwkJCe5l8uTJNa73xRdfqCF7GdJfunSpGuJ/+umn1U9PWrWDPykPqH5ddbVZx1fMrBIREREFiF4HTfz1v39mZ2cjPj7efX1NWVVx22234c4778QFF1ygLnfp0kVlTCW4HTdunJpMJSRD2qhRI/f99u7d6862yjoVFRXIy8vzyq7KOgMHDvTr82NmlYiIiMgA4uPjvZYjBaslJSWwWLxDQCkHcLWukpZWEoxOnTrVfbsEprNmzXIHor169UJYWJjXOnv27MHq1av9Hqwys0pERERkom4AZ5xxhqpRbdq0KTp16oRly5apNlWXX365ul2G8aUt1WOPPYY2bdqoRX6Pjo7G2LFj1TpSZjB+/HjceuutSElJQXJyMiZOnKiytK7uAP7CYJWIiIjIRF566SXcd999uO6669Swvczil3ZU999/v3ud22+/HaWlpWodGerv168ffvvtN8R5TO597rnnYLPZcN5556l1hw0bhvfff19laf1J06USloKezPCTo5ih2tmwaWEwNb5lFXYDqMJuAH/j56IKuwEcorHSz65XYqbzGzXz3bOW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Kaec4r4uIiICQ4YMUQlLISUDEg96riMlA507d3avU2/BqqSFpT5BJlhJ5C3kd6lfffrpp/26cURERESGnGDl7wVQWc2EhAT3Mnny5Bo3YevWrXjttdfQpk0b/Prrr7jmmmvUHCTpmS8kUBWSSfUkl123yc/w8HAkJSUdcZ2AlgHIhsisf5fi4mL069cPNpvNnVWV36We9eyzz/brBhIRERHRsclE9/j4eK9saE3kpE6SWX3sscfUZcmsyuQpCWAvueQS93qesZ+QJGX166qrzTp1EqxK3QIRERER/UN10cRfr/ohgapnsHokjRo1QseOHb2ukzakX3/9tfpdJlMJyZDKui579+51Z1tlnYqKCjVZyzO7KusMHDgQAQ9Wx40b59c/SkRERET144QTTsCGDRu8rtu4cSOaNWumfm/RooUKRqdOnaqyrkIC01mzZqnJWUL660s3AVnnvPPOU9ft2bMHq1evViWjQXFSAFFaWnrYZKvaRPREREREplSHmdXauvnmm1X2U8oAJND8888/8eabb6pFyDC+tKWS26WuVRb5Xfqxjh07Vq0jNbHSsvTWW29VvVqTk5MxceJEdOnSxd0doN6CValXveOOO/Dll19i//79h93u795aREREROQ/cjIn6Y9611134aGHHlKZVCn5vOiii9zr3H777Soped1116mhfpmr9NtvvyEuLs69znPPPafmLEnAK+sOGzYM77//PqxWqx+3VvrIuqb019L111+P33//XT05KcJ95ZVX1FkQ3njjDTz++ONeT5T8R1pQyFHMUO1s2LSw+t4cCga+fXQN69fdy+t7E4LCqDbscy2cJSX1vQnBQ/O54Y/h2PVKzHR+o3qC1vfIr+t7PPPph2GJivTrYztLy5A98b6geJ51wefM6g8//KBaG8hpt2T2v5x6tXXr1qrO4ZNPPmGwSkRERER+4/Nhl5xeVdLFQqJ3uSwGDRqE2bNn+2/LiIiIiIymDvusGpXPwWrLli2xbds29bu0PZDaVVfG1fOcskRERETkTdPrZjEyn4PVyy67DCtWrFC/S2Huq6++qprOysyy2267rS62kYiIiIhMyueaVQlKXU466SSsX79enW61VatW6NatG4KJ1NV2796dJzX4B7Y41yALa72uC0cEBlvOhBmV6aXYrK/EfuTAAQeiEYuOWh/Ea96nmzO6bH0LtmMD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0aPHYddLA3s5TSkRERER1YzdAAKQWW3RokWNNZq//PILOnbseBybQERERGQSulY3i4H5nFm97bbbcP3116OsrAy6rqtZ7p999plqqP/222/XzVYSERERkSn5HKxedtll6jSlt99+u5rhLmd2aty4MV544QVccMEFdbOVREREREbA1lWB6bN65ZVXqmXfvn1wOp1IS0s7nochIiIiIqq7kwKkpqb+k7sTERERmQonWAUgWJUJVpp25ELerVu3HsdmEBERERH5IVidMGGC1+XKykosW7YMU6ZMUZOviIiIiOgIWLNa98HqTTfdVOP1r7zyChYvXuz7FhARERER+avP6pGMGjUKX3/9tb8ejoiIiMh4/q5Z9ecCZlZr56uvvkJycrK/Ho6IiIjIeFgGUPfBqpxq1XOClZwYICcnB7m5uXj11Vd93wIiIiIiIn8Fq2effbbXZYvFggYNGmDo0KFo3769rw9HREREZB7MrNZtsCpnrmrevDlGjhyJ9PR03/8aEREREVFdTbCy2Wy49tprUV5e7svdiIiIiMjjpAB+n2RlYD53A+jXr5/qq0pEREREFHQ1q9dddx1uvfVW7Ny5E7169UJMTIzX7V27dvXn9hERERGRidU6WL388svx/PPP4/zzz1eXb7zxRvdt0h1AugLIT4fDUTdbSkRERESmU+tg9YMPPsDjjz+OrKysut0iIiIiIqNiN4C6C1YlcyqaNWvm+18hIiIiojqZEKUZPFj1aYKV58kAiIiIiIiCaoJV27ZtjxmwHjhw4J9uEx2NynAb/BDqGDSb384SHNJ0u72+NyEojGo9sL43IShsfKxLfW9CUGh798r63oSgoXMOCTT5zgzGbpvm/hr3mU/f+g8++CASEhJ8/ytERERERHUdrF5wwQVIS0s7nr9DRERERJxgVXc1q6xXJSIiIqKg7wZARERERMeH3QDqMFh1Op3H8fBERERERMeP06qJiIiIAoU1qz5jsEpEREQUICwDqOOTAhARERERBRIzq0RERESBwjIAnzGzSkRERERBi5lVIiIiokBhZtVnzKwSERERUdBiZpWIiIgoQNgNwHfMrBIRERFR0GJmlYiIiChQWLPqM2ZWiYiIiChoMbNKREREFCjMrPqMwSoRERFRgHCCle9YBkBEREREQYuZVSIiIqJAYRmAz5hZJSIiIqKgxcwqERERUYCw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lYiIiChQZMi+LhYfPfvssxg/fjyuuOIKdOjQAc8//zwyMzPx2muvIdiwZjVEuGb62fXK+t4UChKawWuUasvos2BrS+ProOjcR7rZK8tgdnZ7WdDtJ+yoBPQ6eEwABQUFXtdHRESopbqKigosWbIEd955p9f1p5xyCubNm4dgw2A1RBQWFqqfc/GT39/kFKLs9b0BFFTK63sDKOhM+a6+tyCovkMTEhLqdRvCw8ORnp6OuTk/18njx8bGqsyopwceeACTJk06bN19+/bB4XCgYcOGXtfL5ZycHAQbBqshIiMjA9nZ2YiLi4OmafWyDXLEJh8E2Y74+HiYFV+HKnwdqvB1qMLXoQpfh+B6HSSjKoGqfIfWN5nElJWVpbKadfVctWrxQU1ZVU/V16/pMYIBg9UQYbFY0KRJEwQD2fGYeSfswtehCl+HKnwdqvB1qMLXIXheh/rOqFYPWGWpb6mpqbBarYdlUffu3XtYtjUYcIIVERERkYmEh4erVlVTp071ul4uDxw4EMGGmVUiIiIik7nllltw8cUXo3fv3hgwYADefPNN1bbqmmuuQbBhsEq1JrUvUqx9rBoYo+PrUIWvQxW+DlX4OlTh61CFr0PwO//887F//3489NBD2LNnDzp37oyff/4ZzZo1Q7DR9GDq50BERERE5IE1q0REREQUtBisEhEREVHQYrBKREREREGLwSoRERERBS0Gq0T15KWXXkJRURGMzul01vcmUJAw23ze3bt38/3/D/C1IxcGq0T1YM2aNbjppptwww03oLi4GEb1+OOP4z//+Q8qKythdtW/eM0WuImtW7ea5rm/++676NGjBxYuXGiK5+tPd999N1avXq3O3MiAlQSDVfK7999/Hx9//HF9b0ZQ69SpE37//Xd8++23uO666wybYZVTBL/++uu47777TB+wyhevWLp0qfoZjOffrku//PIL2rRpgx9//FE9d6MHcJdddpk6beVVV12lAlYGXbUjnw85i5I0pt+wYQMDVlIYrJJf5efn4+2338aCBQvUZaN/IR0P1453yJAh+O677/DFF1/g/vvvR2FhIYzm//7v//Df//4Xzz77rMqWmD1gnTFjBi666CJs2rQJZtO6dWtcfvnluPTSS/HTTz8ZOmCtqKhQz2/lypXqtJZXXnml2icy6Dq2nj174uGHH0ZsbKx6r6xfv54BKzFY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REREFLRYPU1EREREQYvBKhEREREFLQarRERERBS0GKwSERERUdBisEpEREREQYvBKhEREREFLQarRERERBS0GKwSkWFNmjQJ3bt3d1++9NJLcfbZZwd8O7Zt26ZO77t8+fKAPddg3U4iIl8xWCWigJKAUQIiWcLCwtCyZUtMnDgRxcXFdf63X3jhBbz//vtBGbgNHToUEyZMCMjfIiIKJTxBOhEF3Kmnnor33nsPlZWVmDNnDq644goVrL722muHrSvrSFDrDwkJCX55HCIiChxmVoko4CIiIpCeno7MzEyMHTsWF110Eb777juv4ex3331XZV1lXTkrdH5+Pq666iqkpaUhPj4eJ598MlasWOH1uI8//jgaNmyIuLg4jB8/HmVlZV63Vy8DcDqdeOKJJ9C6dWv1d5o2bYpHH31U3daiRQv1s0ePHirDKplPFwm0O3TogMjISLRv3x6vvvqq19/5888/1f3k9t69e2PZsmX/+DW744470LZtW0RHR6vX5b777lOBfHVvvPGGel1lvXPPPRcHDx70uv1Y205EFGyYWSWiehcVFeUVeG3evBlffvklvv76a1itVnXd6aefjuTkZPz8888qQypB2bBhw7Bx40Z1vaz/wAMP4JVXXsGJJ56Ijz76CC+++KIK7I7krrvuwltvvYXnnnsOgwYNwp49e7B+/Xp3wNm3b19MmzYNnTp1Qnh4uLpe1pe/8/LLL6uAVALRK6+8EjExMRg3bpzKEI8ePVoF0x9//DGysrJw0003/ePXSAJwKWHIyMjAqlWr1N+U626//fbDXrcffvgBBQUFKmC//vrr8cknn9Rq24mIgpJORBRA48aN08866yz35YULF+opKSn6eeedpy4/8MADelhYmL537173OtOnT9fj4+P1srIyr8dq1aqV/sYbb6jfBwwYoF9zzTVet/fr10/v1q1bjX+7oKBAj4iI0N96660atzMrK0uXXeSyZcu8rs/MzNQ//fRTr+sefvhh9feFbE9ycrJeXFzsvv21116r8bE8DRkyRL/pppv02nryySf1Xr16uS/L62a1WvXs7Oz/b+9+XqGL4jiOn2eSLKYQFn5kbKRsSElSSilZKQuUsrZhodiwUVgRpfwHysKPDbERG40FS8mCMgql2Cgp03n6nLq3mTE88/yIU8/7VZi59849597Vd845nyvctru7ayORiL27u8up7x9dMwB8J0ZWAXy57e1tE41GzdvbmxtR7enpMcvLy+H+WCxmysrKwvenp6fm+fnZlJSUpJ3n5eXFXF5eutfn5+dmeHg4bX9ra6s5ODjI2gcd//r66kZnc/Xw8GBubm7ciKVGJAO6jmA9rM7b0NDgpuFT+/G31tfXzdLSkhs91b1Qm1oOkUrLGKqqqtLa1VKHi4sLN0L9q74DgI8oVgF8uY6ODhemUnBK09qZASpNS6dSwVVeXm4ODw/fnauoqOiPlx78LvUjmE5vaWlJ2xcsV9D62n/t+PjYDAwMmOnpadPV1eWKy7W1NbOwsPDp57TWNvibS98BwEcUqwC+nIpRhZpy1dTUZO7v701eXp6pqanJeoxCQyrqhoaGwm16/5Ha2lpXsO7v77unEWQK1qgmk8lwm8JblZWV5urqyoXCsqmvr3frZTXqGxTEn/UjF0dHR260eXJyMtx2fX397rhEImFub2/dFwCJx+MmEom4YFYufQcAH1GsAvBeZ2enm9JWkl/p/bq6OleUKWylbUrcK8SkkJBeKyylUNHZ2dmHASul4ZWwV0BJhWlbW5ub5tdnNFWupw6o2Nzb23NT6zpeI5p6WsHo6Kibgu/u7nZLCU5OTszT05MZGxtzTzdQUalzTE1Nuee1zs/P53Sdaj/zua56aoIKexWiGk1tbm42Ozs7ZmtrK+s16R6oPQWs1M++vj53DvlV3wHAS9+6YhaA/d8DVpkUFEoNRQUUiBoZGbEVFRUugKWw0ODgoE0kEuExs7OztrS01EajUdfOxMTEhwErSSaTdmZmxsZiMXfO6upqOzc3F+5X+ErtKKSkAFRgdXXVNjY22vz8fFtcXGzb29vt5uZmuD8ej7t2tV/HbWxs5BSw0jGZP7ofMj4+7oJourb+/n67uLhoCwsL3923lZUVd48KCgpsb2+vfXx8TGvns74TsALgox/69d0FMwAAAJAN/xQAAAAA3qJYBQAAgLcoVgEAAOAtilUAAAB4i2IVAAAA3qJYBQAAgLcoVgEAAOAtilUAAAB4i2IVAAAA3qJYBQAAgLcoVgEAAOAtilUAAAAYX/0EZ7PZTEyTe1kAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqgAAAJOCAYAAAB7pfXDAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAo/5JREFUeJzs3Qd8E/X7B/DPJW26N5S2UPYesjcCMkRwof7dAxX3FiduXLj3HuD+ufdAEURE9t67QBmljNK9ktz/9XxrYlIKNJjQ5O7z9nWWJNfkkiaX557v831O03VdBxERERFRkLDU9QYQEREREXligEpEREREQYUBKhEREREFFQaoRERERBRUGKASERERUVBhgEpEREREQYUBKhEREREFFQaoRERERBRUGKASERERUVBhgEpEIWXDhg048cQTkZCQAE3T8O233/r1/rds2aLu97333vPr/YaywYMHq4WI6FhhgEpEPtu0aROuvvpqNG/eHJGRkYiPj0f//v3x4osvorS0NKCv6JgxY7BixQo89thj+PDDD9GjRw8YxaWXXqqCY3k9a3odJTiX22V55plnfL7/nTt34qGHHsLSpUv9tMVERIERFqD7JSKD+umnn3D22WcjIiICl1xyCTp27IiKigrMmjULd9xxB1atWoW33norII8tQducOXNw77334oYbbgjIYzRp0kQ9Tnh4OOpCWFgYSkpK8MMPP+Ccc87xuu3jjz9WBwRlZWVHdd8SoE6YMAFNmzZFly5dav17v/3221E9HhHR0WKASkS1lpWVhfPOO08FcdOnT0d6err7tuuvvx4bN25UAWyg7NmzR/1MTEwM2GNIdlKCwLoigb9ko//3v/8dFKB+8sknOPnkk/HVV18dk22RQDk6Oho2m+2YPB4RkQuH+Imo1p566ikUFRXh3Xff9QpOXVq2bImbb77Zfdlut+ORRx5BixYtVOAlmbt77rkH5eXlXr8n159yyikqC9urVy8VIEr5wAcffOBeR4amJTAWkqmVQFJ+zzU07vq3J/kdWc/T1KlTMWDAABXkxsbGok2bNmqbjlSDKgH58ccfj5iYGPW7p59+OtasWVPj40mgLtsk60mt7GWXXaaCvdq64IIL8Msvv+DAgQPu6xYsWKCG+OW26vbv34/bb78dnTp1Us9JSgRGjhyJZcuWudeZMWMGevbsqf4t2+MqFXA9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G9tV1j0BKTAr5z/ZQc/MuYyQyOjCAX0PGsEYAWp1dr1S/QxHRI23S2Z1p2MzorRYRGrRMGO51IzKbxAOG5ItDdDC0gk2rebXykjWYQlSkIYUrQGydAaonliD6ps6zQ0XFxfjkksuQWxsLNLT0/Hss8963e45xC9fhg899BAaN26MiIgIZGRk4KabbnKvu2vXLpx88smIiopSmc5PPvnE6/drGlY/cOCAum7GjBnqcl5eHi688EIVGMv9tGrVCpMnT1a3yX2Krl27qt+RUgSXd955B+3atUNkZCTatm2L1157zet5zJ8/X/2e3N6jRw+VhQ1FEpwKGyK9rrdpke7bjKJ5XA+kR7fGX7s/xK/bX8Hs3P+hSWwXZES3VbdXOEvg0CuRVbhQZVF71ButAtMl+37C/vLtMDIZzv9D/wbT8TXWYjE6oy9iDVRr6SupM41ENDY6lqFSr4BTdyDLsRrlKEGFXgojkv3xOvtCJGr13Vljl2z7ekwv+wzTyz/DXudOdAsfYuiyl5rUs6Sjg7UPuoedgFbWzqo8YonjT8OVOlSXo2ejAHloiU51vSlkAHWaQb3jjjvw559/4rvvvkNqairuueceLF68uMYh9K+++grPP/88Pv30U3To0AE5OTlYtuzfekAJdPfu3auCzfDwcIwbNw65ubk+bc/999+P1atX45dffkG9evWwceNGlJaWuoPMXr164ffff1ePb7PZ1PUff/wxHnjgAbzyyisqCJXg88orr1SlCWPGjEFRURFOOeUUDB8+HB999BGysrJw8803H3FbysvL1eJSUFDg03Oh/yandAN2laxD5+STEBuerDKoa/P/QqQ1Fg1j2qnaOiFlAE3juqp/x9vqI69iF7YVrURyxL8TJowmGnHojeFqklwutmMVFqC7Pti0QapFs6Bz2ECscszFjMovoUFDsiYZJONOHFtrX4AiZz56Rpx40G1p1qZItqSpyWRb7GuwvHIWetpOhNVEQWqapYn731KrKnX9f9t/xH49V02WMqIyvQTrsRRdcbyp/ta+cMKiFn/fp1HVWYAqgdu7776rgrahQ4eq695//300alTzF/u2bduQlpaGYcOGqQBUMqkSMIq1a9eqwFFqViVD6cpqSgbUF/IYEmS67kMysNXLDVJSUtR2uDz44IMq83vmmWe6M60S5L755psqQJVMrtPpVM9VMqgS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iEIfM6iBDVClD2hNZ4xKSEg4YraRiIiIiMjvAar09ty4ceNB10v9afPmzX29OyIiIiLTzOL392JUPgeoV155JW6++WbMmzdPnTZUzqD08ccf4/bbbz9imyUiIiIiU9K1wCwG5XObqbvvvludInTo0KFq4o8M98spOSVAlTMuEREREREd0wBVsqb33nsv7rjjDjXUX1RUhPbt2yM2NpZ/CSIiIqKa8FSnx6ZRv81mU4EpEREREVGdBqgnnHCCyqIeyvTp0//rNhEREREZCk91GuAAtUuXLl6XKysrVaP6lStXYsyYMb7eHRERERHRfwtQD3U2JDmjktSjEhEREVE1rEENbJupQ7noooswadIkf90dEREREZnUUU+Sqm7OnDmIjIz0190RERERGUcgGuvrMCyfA9QzzzzT67Ku69i1axcWLlyI+++/35/bRkRERGQMHOIPbICakJDgddlisaBNmzZ4+OGHceKJJ/p6d0RERERERx+gOhwOXHbZZejUqROSkpJ8+VUiIiIi82IGNXCTpKxWq8qSHjhwwLdHISIiIiIK1Cz+jh07YvPmzb7+GhERERHM3qjf34tR+RygPvroo7j99tvx448/qslRBQUFXgsRERER0TGpQZVJULfddhtGjRqlLp922mlepzyV2fxyWepUiYiIiIgCHqBOmDAB11xzDf7444+jfjAiIiIiIr8FqJIhFYMGDartrxARERGRCqQC0FhfN+5L61ObKc8hfSIiIiKqZQwVgElNGgPUKq1btz5ikLp//37/vvpEREREZCo+ZVClDrX6maToGFOlFgY+ZKoFLcznE6AZjm631/UmBIWRLfvV9SYEhfWPd6rrTQgKre9ZXtebEBR0TlaGJt+V5Qg+5v769olP3/TnnXceUlNTfXsEIiIiIqJABKisPyUiIiI6SpwkFZhG/a5Z/EREREREQZFBdTqdAd0QIiIiIqPiLP4An+qUiIiIiCiQOB2aiIiIKNBYg+oTBqhEREREAcYhft9wiJ+IiIiIggozqERERESBxiF+nzCDSkRERERBhRlUIiIiokBjBtUnzKASERERUVBhBpWIiIgowDiL3zfMoBIRERFRUGEGlYiIiCjQWIPqEwaoRERERIHGANUnHOInIiIioqDCDCoRERFRgHGSlG+YQSUiIiKioMIMKhEREVGgsQbVJ8ygEhEREVFQYQaV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oY5EalFXrlyJTz/9FMGIGVQiIiKiANOcVYu/71NkZ2cjPj4eLkfKnt5www348ccfMXPmTDRq1Mh9fVpampr8dODAAa8sqszil9tc68yfP9/r/lyz/F3r+AMzqEREREQhLD4+3ms5VICq67oKTr/55htMnz4dzZo187q9e/fuCA8Px7Rp09zXSRsqaSvVt29fdVl+rlixArm5ue51pCOAPG779u399pyYQSUiIiIK4RrU2pJhfZmh/91336leqK6aUSkLiIqKUj/Hjh2LcePGqYlTEnTeeOONKiiVGfxC2lJJIHrxxRfjqaeeUvdx3333qfs+UubWFwxQiYiIiEzg9ddfVz8HDx7sdb20krr00kvVv59//nlYLBbVoL+8vFzN0H/ttdfc61qtVlUecO2116rANSYmBmPGjMHDDz/s121lgEpERERkglOd6rXIuEZGRuLVV19Vy6E0adIEP//8MwKJASoRERFRgGm6rhZ/36dRcZIUEREREQUVZlCJiIiITDBJKpQwg0pEREREQYUZVCIiIqJAk2Snnxv1w7gJVGZQiYiIiCi4MINKREREFGCcxe8b1qASERERUVBhBpWIiIjomDTq9/csfhgWA1QiIiKiQGObKZ8wQKWQo1dUwOy0MH50hV5pr+s/BQWRem/NretNCAplp/SC2dkry4Ap39X1ZtB/wG85IiIiokCTFlNaAO7ToDhJioiIiIiCCjOoRERERAHGNlO+YQaViIiIiIIKM6hEREREgcZZ/D5hBpWIiIiIggozqERERESBxgyqTxigEhEREQUaA1SfcIifiIiIiIIKM6hEREREgcZG/T5hBpWIiIiIggozqEREREQBxkb9vmEGlYiIiIiCCjOoRERERIHGWfw+YQaViIiIiIIKM6hEREREgebUpRDV//dpUAxQiYiIiAKNQ/w+4RA/EREREQUVZlCJiIiIAk6vyqL6+z4NihlUIiIiIgoqzKASERERBRprUH3CDCoRERERBRVmUImIiIgCTbWEYpup2mIGlYiIiIiCCjOoRERERIGmO6sWf9+nQTFAJSIiIgo0TpLyCQNUOqIyvRQb9eXYhxw4YEcUYtFB64l4Ldk0r94m5ypkYbXXddGIQz/LSTCyPGcutjjXokDfjwqUobN1AFItjdy3r7TPxS59i9fvpGhp6BY2GEZn1yuxSV+BPfoOVKAccUhE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tV846aSTVPZZPiuSfd60aRODVBNjgEp+zw4ef/zxGDBggBra87ze7FzButRmyiSpUaNG4eOPP8Zrr72G//3vf6pe0whBqut5yqn0ysvLcc4556jnaaYg1fWelyDMFYj17t0b559/vgrW9u7da6qDt2bNmqkgTU6xaPQgVZ6XjI60a9cOs2bNUs95x44dGDt2LIPUGsh7wBXUy77x888/V6fflNdOzhfP4X4Tk1OdEv0XL774ov7ll1/qe/fudV/3wAMP6A0bNtSLiorUZafTyRdZ13WHw6Gffvrp+p133un1evz88896VFSUfu211+r5+fkh/1otXLhQb968uf7VV1/pZWVl6rrPPvtMDwsL02+//Xa9oqJCN4N9+/Z5XZ4+fbres2dP9VPY7XbdTNatW6dfddVVekJCgv7jjz8act+wZ88evW3btvqjjz7q9T7o3Lmz3r59e3327NlqP0DeXnjhBT02Nlb/7bff9A0bNuivvPKKfvzxx+t9+/ZV7xvB181cGKDSf/L999/rd9xxhx4REaGfdtpp+v3336+ulyBr2LBh7stU9UVcXl6ud+vWTX1Ju7iCFAlONU3TzzvvPL20tDTkXzL5cmnXrp16j1QPUu+66y7DB6nyXOXved999+lTpkxxXz9q1Ch9yJAhupG5gs7Nmzfrq1ev1pcsWWKaIDUvL09v06aN+vsL1/tcAtfMzEz1t58xYwaDLQ/yGp177rn6jTfe6PVafvPNN3rHjh31gQMH6ps2bTLce4UOj0P8dNTuvPNOnHnmmaqeUoZj+vXrp9qr9O3bVw3lJiYmqvYynsOdZlK9tEGG/mTShNRY/fzzz/j111/V9VarVf1s0qQJTj31VOzfv1+tFwpcw/U1/W1nzpypntNtt92G3377zT3cL+UMTz31FB599FEYies1cP0cPnw4nn76aTVZRiaMyfD+77//ribFlZaWYsqUKTAief6uYe7TTjtNlbLIsP61116rbm/dujVuv/12NfQtk2Gkm4WRyh1kvye15jIpTsjwtd1uR3JyMjp16qQ6eNx9991qMhXB/RpFRUVh/fr1cDgc7pdl9OjRGDZsGP766y9Vnyp1vUZ6r9ARHCGAJarRmjVr9Kuvvlr/888/va6XIX0Z2rroootU9kiWDz74wHSvoudQlLxG//vf/1QWbdeuXaoU4qyzztIHDx6shvZd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mJFASoIgWWw2G1q2bImHH35YnYI20L7++ms88sgjQRmsNW3aFC+88MIxeSwiolAQVtcbQETmctJJJ2Hy5MkoLy/Hzz//jOuvvx7h4eEYP378QetWVFSoQNYfkpOT/XI/REQUeMygEtExFRERgbS0NDRp0gTXXnsthg0bhu+//95rqPqxxx5DRkYG2rRpo67Pzs7GOeecg8TERBVonn766diyZYv7Ph0OB8aNG6duT0lJwZ133gld170et/oQvwTId911FzIzM9U2STb33XffVfd7wgknqHWSkpJUJlW2SzidTkycOBHNmjVDVFQUOnfujC+//NLrcSTobt26tbpd7sdzO4+GPLexY8e6H1NekxdffLHGdSdMmID69esjPj4e11xzjQrwXWqz7UREwYIZVCKqUxIs7du3z3152rRpKsCaOnWqulxZWYkRI0agb9+++OuvvxAWFoZHH31UZWKXL1+uMqzPPvss3nvvPUyaNAnt2rVTl7/55hsMGTLkkI97ySWXYM6cOXjppZdUsJaVlYW9e/eqgPWrr77CWWedhXXr1qltkW0UEuB99NFHeOONN9CqVSvMnDkTF110kQoKBw0apALpM888U2WFr7rqKixcuBC33Xbbf3p9JLBs1KgRvvjiCxV8z549W913enq6Cto9X7fIyEhVniBB8WWXXabWl2C/NttORBRUdCKiY2TMmDH66aefrv7tdDr1qVOn6hEREfrtt9/uvr1BgwZ6eXm5+3c+/PBDvU2bNmp9F7k9KipK//XXX9Xl9PR0/amnnnLfXllZqTdq1Mj9WGLQoEH6zTffrP69bt06Sa+qx6/JH3/8oW7Py8tzX1dWVqZHR0frs2fP9lp37Nix+vnnn6/+PX78eL19+/Zet991110H3Vd1TZo00Z9//nm9tq6//nr9rLPOcl+W1y05OVkvLi52X/f666/rsbGxusPhqNW21/SciYjqCjOoRHRM/fjjj4iNjVWZUckOXnDBBXjooYfct3fq1Mmr7nTZsmXYuHEj4uLivO6nrKwMmzZtQn5+Pnbt2oXevXu7b5Msa48ePQ4a5ndZunQprFarT5lD2YaSkhIMHz7c63oZRu/atav695o1a7y2Q0jm97969dVXVXZ427ZtKC0tVY/ZpUsXr3UkCxwdHe31uEVFRSqrKz+PtO1ERMGEASoRHVNSl/n666+rIFTqTCWY9BQTE+N1WYKr7t274+OPPz7ovmR4+mi4hux9IdshfvrpJzRs2NDrNqlhDZRPP/0Ut99+uypbkKBTAvWnn34a8+b9fzv375JqFMdx/BjomIIaztHkIjgKtvZHCClCQxLKIwguKTg5Bu5Ci2CT4NT4DEGXqFHEVsWhIZwcT3y/8MjF6ua9F24H7vsFBvb86OT04ev5PD+cXzsA/CkCKoB/SgKoFJJ2lc1mzXA4NAcHB7of9COyH1MC2/Hxsb6Xx1Y9Pj7qtR+RKa1Mb33f15LWtmCCKwWlQDqd1jAnU8zPJq+y/zUofAXu7+/N37i7uzO5XM5UKpXN72RyvE0mzTJdDcK3/F2ZVMueWimWfbV2AHAJLX4ATisUCiaRSGhzX0pSUmaSIlC1WjXz+VzPqdVqptvtmtFoZKbTqYa5Xz3DVJ47WiwWTblc1muCe97c3OhxecKAtPdlO8LLy4tOIGVyKZNMz/PM9fW1hsSnpyfT6/X0vZDm/PPzs2k0GlqwGgwGWt7axWKx0K0HP79eX1+10CRlq9vbWzObzczl5aV5eHh4d718XS9t/8lkok8SaLfb5uLiwuzt7e20dgBwyrftfgXwX5ekfuf4crm0p6enNpFIaKnq8PDQnp2d2dVqtSlFSQFqf3/fxmIxW6/X9fzPSlJivV5bz/O0YBWJROzR0ZHt9/ub451Ox6ZSKRsKhXRdQopaV1dXWtoKh8M2mUzak5MT6/v+5rrxeKz3knXm83m95y4lKTln+yUFMSk4lUolG41G9X87Pz+3zWbTZjKZd59bq9Wy8Xhcy1Hy+ci1ga/WTkkKgEtC8uO7QzIAAAAQ4Ct+AAAAOIWACgAAAKcQUAEAAOAUAioAAACcQkAFAACAUwioAAAAcAoBFQAAAE4hoAIAAMApBFQAAAA4hYAKAAAApxBQAQAA4BQCKgAAAIxL3gCr2HkxST8YzAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -1085,7 +1116,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 19, "id": "c5f890e6-f846-4403-ab59-2e8685e1fc9f", "metadata": {}, "outputs": [], @@ -1095,9 +1126,6 @@ "\n", "def predict_single_image(image):\n", " \n", - " #class_names\n", - " CLASS_NAMES = res_test_dataset.classes\n", - " \n", " #model\n", " device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", " model = EmotionResNet(num_classes=7).to(device)\n", @@ -1126,14 +1154,14 @@ " pred_idx = torch.argmax(probs, dim=1).item()\n", " confidence = probs[0, pred_idx].item()\n", " \n", - " print(f\"Prediction: {CLASS_NAMES[pred_idx]} ({conf:.3f})\")\n", + " print(f\"Prediction: {CLASS_NAMES[pred_idx]} ({confidence:.3f})\")\n", "\n", " return pred_idx, confidence" ] }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 20, "id": "0d2c7d00-8d58-4b13-8e3c-bfe3b2550365", "metadata": {}, "outputs": [ @@ -1141,16 +1169,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "Prediction: happy (0.764)\n", "Prediction: happy (0.764)\n" ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n" + ] } ], "source": [ "image = r\"D:\\fer2013 + affectnet\\DATASET\\test\\angry\\test_1309_aligned.jpg\"\n", - "pred_idx, confidence = predict_single_image(image)\n", - "\n", - "print(f\"Prediction: {CLASS_NAMES[pred_idx]} ({conf:.3f})\")" + "pred_idx, confidence = predict_single_image(image)\n" ] }, { @@ -1163,22 +1195,25 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 25, "id": "bc441131", "metadata": { "scrolled": true }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "Prediction: fearful (0.764)\n", - "Prediction: fearful (0.764)\n", - "Prediction: happy (0.764)\n", - "Prediction: happy (0.764)\n", - "Prediction: happy (0.764)\n", - "Prediction: happy (0.764)\n" + "Prediction: happy (0.847)\n", + "Prediction: happy (0.847)\n" ] } ], @@ -1190,6 +1225,9 @@ "import os\n", "import torch\n", "\n", + "#class_names\n", + "CLASS_NAMES = res_test_dataset.classes\n", + "\n", "\n", "class ImageDropApp:\n", " def __init__(self, root, face_model):\n", @@ -1291,7 +1329,7 @@ " pred_idx, confidence = predict_single_image(result_img)\n", " \n", " \n", - " pred_text = f\"Prediction: {CLASS_NAMES[pred_idx]} ({conf:.3f})\"\n", + " pred_text = f\"Prediction: {CLASS_NAMES[pred_idx]} ({confidence:.3f})\"\n", " \n", " print(pred_text)\n", " self.prediction_label.config(text=pred_text)\n", @@ -1318,6 +1356,14 @@ " app = ImageDropApp(root, face_model)\n", " root.mainloop()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17178d3a-2991-48e5-a5a8-1ebd1af63ceb", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -1336,7 +1382,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.10.20" } }, "nbformat": 4,