{"id":22378007,"url":"https://github.com/tonywu71/fast-reverse-image-search","last_synced_at":"2026-05-01T01:31:43.919Z","repository":{"id":104026780,"uuid":"345631318","full_name":"tonywu71/fast-reverse-image-search","owner":"tonywu71","description":"Fast reverse image search engine. Based on a custom fine-tuned version of ResNet-50 on the BAM! dataset. Similar image retrieval is performed using Locally Sensitive Hashing (LSH).","archived":false,"fork":false,"pushed_at":"2023-09-28T13:08:15.000Z","size":56310,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-26T18:24:55.953Z","etag":null,"topics":["cnn","image-search","lsh","resnet","tensorflow"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tonywu71.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-03-08T11:23:03.000Z","updated_at":"2023-09-28T13:08:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"adb33da2-4a8c-4277-b787-3f385c16e15a","html_url":"https://github.com/tonywu71/fast-reverse-image-search","commit_stats":null,"previous_names":["tonywu71/fast-reverse-image-engine"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tonywu71/fast-reverse-image-search","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonywu71%2Ffast-reverse-image-search","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonywu71%2Ffast-reverse-image-search/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonywu71%2Ffast-reverse-image-search/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonywu71%2Ffast-reverse-image-search/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tonywu71","download_url":"https://codeload.github.com/tonywu71/fast-reverse-image-search/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonywu71%2Ffast-reverse-image-search/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32482460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cnn","image-search","lsh","resnet","tensorflow"],"created_at":"2024-12-04T22:16:46.638Z","updated_at":"2026-05-01T01:31:43.903Z","avatar_url":"https://github.com/tonywu71.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fast reverse image search engine\n\n---\n## English 🇬🇧\n\n### Context\n\n- While the Internet made it easier to share information, image theft has become a real plague.\n    - Example: real estate market → malicious people can easily reuse your photos\n    - Sometimes not just copy → slight changes like watermark\n- Can be extended to tackle another problem: counterfeiting → big loss of revenues for brands (especially luxury)\n\n## Solution\n\nWe decided to go with a 2-step solution involving fine-tuning ResNet-50 on the BAM! dataset and using a random vector LSH strategy for search.\n\n## Results\n\n- 88% accuracy on the validation split of BAM! for the classification task\n- The approximate LSH-based image retrieval takes a few seconds against about an hour using the naive exact search.\n\n\n---\n## French 🇫🇷\n\n- While the Internet made it easier to share information, image theft has become a real plague.\n    - Example: real estate market → malicious people can easily reuse your photos\n    - Sometimes not just copy → slight changes like watermark\n- Can be extended to tackle another problem: counterfeiting → big loss of revenues for brands (especially luxury)\n\nNous avons implémenté un moteur de recherche d'images inversée, c'est-à-dire que pour une image donnée, l'algorithme renvoie les images les plus similaires qu'il possède dans la base de données. L'objectif a été de fournir le modèle le plus précis possible tout en imposant une grande performance en terme de vitesse.\n\nIl est divisé en trois grandes parties :\n\n- la gestion de la base de données,\n- la formation au modèle\n- un serveur web pour mettre le tout en place.\n\n\n## Extrait du rapport inclus dans le repository\n\n![extrait_rapport](ressources/extrait_rapport.png)\n\n\n\n## Setup\n\nLe dossier data gère la base de données et le fichier data.py contient les\nprincipaux des fonctions pour travailler avec la base de données en sql.\n Le fichier `DataGen.py` sert à de créer un générateur de données keras pour\npouvoir gérer la base de données plus efficacement.\n\nDans le dossier feature_extractor, il contient les principaux fichiers pour la\nentrainement création de notre modèle de feature extraction.\nDans le carnet Jupyter `Train_Classification_model.ipynb` détaille les étapes\nde la création du modèle.\n\nDans le dossier web se trouve la page HTML créée.\n\nPour plus d'informations techniques sur les travaux, veuillez lire l'article\nécrit dans le dossier 'article'.\n\nInitialisez le serveur web : Le serveur web nommé `index.py` ne peut être que\ninitialisé si tous les prérequis qui se trouvent dans le fichier\n`requirements.txt` sont satisfaits.\n\nSi toutes les conditions sont remplies, l'initialisation du serveur web\nil suffit d'exécuter le fichier setup.py pour que les fichiers nécessaires\nsont telechargés (comme par exemple les poids des modèles) et il suffit ensuite\nde utilisez la commande `python3 index.py` pour que le serveur se démarre\nà l'adresse `localhost` à la porte `80`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonywu71%2Ffast-reverse-image-search","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftonywu71%2Ffast-reverse-image-search","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonywu71%2Ffast-reverse-image-search/lists"}