{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":91498,"databundleVersionId":11655853,"isSourceIdPinned":false,"sourceType":"competition"}],"dockerImageVersionId":30918,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Image Matching Gallery","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd \nimport random\nimport os\nimport cv2\nimport matplotlib.pyplot as plt\nimport requests","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T02:00:10.983482Z","iopub.execute_input":"2025-04-16T02:00:10.983922Z","iopub.status.idle":"2025-04-16T02:00:10.989602Z","shell.execute_reply.started":"2025-04-16T02:00:10.983892Z","shell.execute_reply":"2025-04-16T02:00:10.988276Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df=pd.read_csv('/kaggle/input/image-matching-challenge-2025/train_labels.csv')\nprint(df.columns.tolist())\ndisplay(df[0:2].T)\nprint(len(df))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T02:00:10.997248Z","iopub.execute_input":"2025-04-16T02:00:10.997701Z","iopub.status.idle":"2025-04-16T02:00:11.036463Z","shell.execute_reply.started":"2025-04-16T02:00:10.997654Z","shell.execute_reply":"2025-04-16T02:00:11.035343Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"cols=['dataset','scene','image']\ndf=df[cols]\ndf","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T02:00:11.037648Z","iopub.execute_input":"2025-04-16T02:00:11.038006Z","iopub.status.idle":"2025-04-16T02:00:11.051438Z","shell.execute_reply.started":"2025-04-16T02:00:11.037980Z","shell.execute_reply":"2025-04-16T02:00:11.050294Z"},"_kg_hide-output":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df['dataset'].value_counts()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T02:00:11.053665Z","iopub.execute_input":"2025-04-16T02:00:11.054068Z","iopub.status.idle":"2025-04-16T02:00:11.077086Z","shell.execute_reply.started":"2025-04-16T02:00:11.054035Z","shell.execute_reply":"2025-04-16T02:00:11.075860Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def dataset2show16(df):\n\n    names0 = df['dataset'].value_counts()\n    valid_names = names0[names0 >= 5].index.tolist()\n    names = valid_names\n    dir0='/kaggle/input/image-matching-challenge-2025/train'\n    selected_images = []\n    grouped_images = {}  # Dictionary to store images grouped by name\n    for name in names:\n        paths = df[df['dataset'] == name]['image'].tolist()\n\n        paths2 = random.sample(paths, 5)  # Select 5 random images per individual\n        grouped_images[name] = [os.path.join(dir0,name,p) for p in paths2]\n    \n    fig, axes = plt.subplots(13, 5, figsize=(14,60))\n    \n    for row, (nameid, images) in enumerate(grouped_images.items()):\n        # Set row title\n        axes[row, 0].annotate(nameid, xy=(0, 1), xycoords=\"axes fraction\",fontsize=12, ha=\"left\", va=\"bottom\")\n        \n        for col, path in enumerate(images):\n            img = cv2.imread(path)\n            if img is not None:\n                img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # Convert BGR to RGB for correct colors\n                axes[row, col].imshow(img)\n            axes[row, col].axis(\"off\")\n    \n    #plt.tight_layout()\n    plt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T02:00:11.078482Z","iopub.execute_input":"2025-04-16T02:00:11.078931Z","iopub.status.idle":"2025-04-16T02:00:11.100036Z","shell.execute_reply.started":"2025-04-16T02:00:11.078890Z","shell.execute_reply":"2025-04-16T02:00:11.098754Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"dataset2show16(df)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-16T02:00:11.100895Z","iopub.execute_input":"2025-04-16T02:00:11.101297Z","iopub.status.idle":"2025-04-16T02:00:31.809804Z","shell.execute_reply.started":"2025-04-16T02:00:11.101259Z","shell.execute_reply":"2025-04-16T02:00:31.808470Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}