diff --git a/Phase 2/task_8.ipynb b/Phase 2/task_8.ipynb index da19b0b..59b7a72 100644 --- a/Phase 2/task_8.ipynb +++ b/Phase 2/task_8.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 140, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -21,7 +21,7 @@ }, { "cell_type": "code", - "execution_count": 141, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -36,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": 142, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -46,14 +46,14 @@ }, { "cell_type": "code", - "execution_count": 143, + "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "image_sim-cm_fd-kmeans-10-semantics.json loaded\n" + "label_sim-cm_fd-lda-10-model.joblib loaded\n" ] } ], @@ -89,28 +89,45 @@ "\n", "match selected_latent_space:\n", " case \"\":\n", - " if os.path.exists(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n", - " data = json.load(open(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n", - " print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json loaded\")\n", - " else:\n", - " print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json does not exist\")\n", + " if selected_dim_reduction_method == \"lda\":\n", + " if os.path.exists(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-model.joblib\") and os.path.exists(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n", + " if os.path.exists(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-model.joblib\"):\n", + " model = load(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-model.joblib\")\n", + " data = json.load(open(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n", + " print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-model.joblib and json loaded\")\n", + " else:\n", + " print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-model.joblib does not exist\")\n", + " else:\n", + " if os.path.exists(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n", + " data = json.load(open(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n", + " print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json loaded\")\n", + " else:\n", + " print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json does not exist\")\n", " case \"cp\":\n", " if os.path.exists(f\"{selected_feature_model}-cp-{k}-semantics.json\"):\n", " data = json.load(open(f\"{selected_feature_model}-cp-{k}-semantics.json\"))\n", " print(f\"{selected_feature_model}-cp-{k}-semantics.json loaded\")\n", - " else: \n", + " else:\n", " print(f\"{selected_feature_model}-cp-{k}-semantics.json does not exist\")\n", " case _:\n", - " if os.path.exists(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n", - " data = json.load(open(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n", - " print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json loaded\")\n", + " if selected_dim_reduction_method == \"lda\":\n", + " if os.path.exists(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-model.joblib\") and os.path.exists(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n", + " model = load(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-model.joblib\")\n", + " data = json.load(open(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n", + " print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-model.joblib loaded\")\n", + " else:\n", + " print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-model.joblib does not exist\")\n", " else:\n", - " print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json does not exist\")\n" + " if os.path.exists(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n", + " data = json.load(open(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n", + " print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json loaded\")\n", + " else:\n", + " print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json does not exist\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ @@ -154,6 +171,18 @@ " comparison_vector.append(math.dist(sim_matrix[int(image_id / 2)], centroid))\n", " else:\n", " comparison_vector.append(math.dist(image_fd, centroid))\n", + " \n", + " case \"lda\":\n", + " comparison_feature_space = np.array(data[\"image-semantic\"])\n", + " if latent_space == \"image_sim\":\n", + " comparison_vector = comparison_feature_space[int(image_id / 2)]\n", + " else:\n", + " fd = np.array(all_images[int(image_id / 2)][selected_feature_model])\n", + " min_value = np.min(fd)\n", + " feature_vectors_shifted = fd - min_value\n", + " comparison_vector = model.transform(feature_vectors_shifted.flatten().reshape(1, -1)).flatten()\n", + " print(comparison_feature_space.shape)\n", + " print(comparison_vector.shape)\n", "\n", " n = len(comparison_feature_space)\n", "\n", @@ -182,7 +211,7 @@ }, { "cell_type": "code", - "execution_count": 144, + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ @@ -224,7 +253,7 @@ }, { "cell_type": "code", - "execution_count": 145, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ @@ -250,6 +279,10 @@ " comparison_feature_space = np.array(data[\"image-semantic\"])\n", " comparison_vector = comparison_feature_space[img_label]\n", "\n", + " case \"lda\":\n", + " comparison_feature_space = np.array(data[\"image-semantic\"])\n", + " comparison_vector = comparison_feature_space[img_label]\n", + "\n", " n = len(comparison_feature_space)\n", " distance = float('inf')\n", " most_similar_label = img_label\n", @@ -257,15 +290,7 @@ " for i in range(n):\n", " if i != img_label:\n", " distances.append({\"label\": i, \"distance\": math.dist(comparison_vector, comparison_feature_space[i])})\n", - " # temp_distance = math.dist(comparison_vector, comparison_feature_space[i])\n", - " # if distance > temp_distance:\n", - " # distance = temp_distance\n", - " # most_similar_label = i\n", "\n", - " # label_images = [x[\"image_id\"] for x in all_images if x[\"true_label\"] == most_similar_label]\n", - " # similar_images = random.sample(label_images, knum)\n", - "\n", - " # print(f\"Most similar label to {img_label} is {most_similar_label}\")\n", " distances = sorted(distances, key=lambda x: x[\"distance\"], reverse=False)[:knum]\n", "\n", " for img in distances:\n", @@ -274,23 +299,23 @@ }, { "cell_type": "code", - "execution_count": 147, + "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'image_id': 2457, 'label': 39, 'distance': 5.400083378408386}\n", - "{'image_id': 2629, 'label': 46, 'distance': 6.360136822031199}\n", - "{'image_id': 1916, 'label': 23, 'distance': 8.279651870400942}\n", - "{'image_id': 1975, 'label': 24, 'distance': 9.305370097143731}\n", - "{'image_id': 3287, 'label': 65, 'distance': 9.696792665660324}\n", - "{'image_id': 292, 'label': 1, 'distance': 10.198675122162054}\n", - "{'image_id': 3965, 'label': 90, 'distance': 11.544874878013612}\n", - "{'image_id': 4018, 'label': 92, 'distance': 12.064116415014514}\n", - "{'image_id': 4307, 'label': 99, 'distance': 14.448284626506538}\n", - "{'image_id': 2329, 'label': 35, 'distance': 14.742475318290913}\n" + "{'label': 19, 'distance': 6.355424425784916e-06}\n", + "{'label': 33, 'distance': 1.2740918489579356e-05}\n", + "{'label': 54, 'distance': 6.85116641512525e-05}\n", + "{'label': 49, 'distance': 8.314856743319156e-05}\n", + "{'label': 28, 'distance': 0.00016883047586624644}\n", + "{'label': 36, 'distance': 0.0002122873813686887}\n", + "{'label': 35, 'distance': 0.00023350326417372972}\n", + "{'label': 44, 'distance': 0.0002406295461878455}\n", + "{'label': 9, 'distance': 0.00024234313765943418}\n", + "{'label': 10, 'distance': 0.0002640071831902495}\n" ] } ],