Fast Image Retrieval (FIRe) is an open source image retrieval project

Overview

Fast Image Retrieval

Documentation Status

Documentation: https://fast-image-retrieval.readthedocs.io/en/latest/

Introduction

Fast Image Retrieval (FIRe) is an open source image retrieval project release by Center of Image and Signal Processing Lab (CISiP Lab), Universiti Malaya. This framework implements most of the major binary hashing methods, together with different popular backbone networks and public datasets.

Major features

  • One for All

    Herein, we unified (i) various binary hashing methods, (ii) different backbone, and (iii) multiple datasets under a single framework to ease the research and benchmarking in this domain. It supports popular binary hashing methods, e.g. HashNet, GreedyHash, DPN, OrthoHash, etc.

  • Modularity

    We break the framework into parts so that one can easily implement their own method by joining up the components.

License

This project is released under BSD 3-Clause License.

Changelog

Please refer to Changelog for more detail.

Implemented method/backbone/datasets

Backbone

  1. Alexnet
  2. VGG{16}
  3. ResNet{18,34,50,101,152}

Loss (Method)

Supervised

Method Config Template Loss Name
ADSH adsh.yaml adsh
BiHalf bihalf-supervised.yaml bihalf-supervised
Cross Entropy ce.yaml ce
CSQ csq.yaml csq
DBDH dbdh.yaml dbdh
DFH dfh.yaml dfh
DPN dpn.yaml dpn
DPSH dpsh.yaml dpsh
DTSH dtsh.yaml dtsh
GreedyHash greedyhash.yaml greedyhash
HashNet hashnet.yaml hashnet
JMLH jmlh.yaml jmlh
MIHash mihash.yaml mihash
OrthoCos(OrthoHash) orthocos.yaml orthocos
OrthoArc(OrthoHash) orthoarc.yaml orthoarc
SDH sdh.yaml sdh
SDH-C sdhc.yaml sdhc

Unsupervised

Method Config Template Loss Name
BiHalf bihalf.yaml bihalf
CIBHash cibhash.yaml cibhash
GreedyHash greedyhash-unsupervised.yaml greedyhash-unsupervised
SSDH ssdh.yaml ssdh
TBH tbh.yaml tbh

Shallow (Non-Deep learning methods)

Method Config Template Loss Name
ITQ itq.yaml itq
LsH lsh.yaml lsh
PCAHash pca.yaml pca
SH sh.yaml sh

Datasets

Dataset Name in framework
ImageNet100 imagenet
NUS-WIDE nuswide
MS-COCO coco
MIRFLICKR/Flickr25k mirflickr
Stanford Online Product sop
Cars dataset cars
CIFAR10 cifar10

Installation

Please head up to Get Started Docs for guides on setup conda environment and installation.

Tutorials

Please head up to Tutorials Docs for guidance.

Reference

If you find this framework useful in your research, please consider cite this project.

@inproceedings{dpn2020,
  title={Deep Polarized Network for Supervised Learning of Accurate Binary Hashing Codes.},
  author={Fan, Lixin and Ng, Kam Woh and Ju, Ce and Zhang, Tianyu and Chan, Chee Seng},
  booktitle={IJCAI},
  pages={825--831},
  year={2020}
}

@inproceedings{orthohash2021,
  title={One Loss for All: Deep Hashing with a Single Cosine Similarity based Learning Objective},
  author={Hoe, Jiun Tian and Ng, Kam Woh and Zhang, Tianyu and Chan, Chee Seng and Song, Yi-Zhe and Xiang, Tao},
  booktitle={Advances in Neural Information Processing Systems (NeurIPS)},
  year={2021}
}

Contributing

We welcome the contributions to improve this project. Please file your suggestions/issues by creating new issues or send us a pull request for your new changes/improvement/features/fixes.

You might also like...
Alternate Python bindings for the Open Asset Import Library (ASSIMP)
Alternate Python bindings for the Open Asset Import Library (ASSIMP)

Impasse A simple Python wrapper for assimp using cffi to access the library. Requires Python = 3.7. It's a fork of PyAssimp, Assimp's official Python

This is the official source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler.
This is the official source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler.

Freedom to build what you want FreeCAD is an open-source parametric 3D modeler made primarily to design real-life objects of any size. Parametric modeling allows you to easily modify your design by going back into your model history to change its parameters.

3D Model files and source code for rotating turntable. Raspberry Pi, DC servo and PWM modulator required.
3D Model files and source code for rotating turntable. Raspberry Pi, DC servo and PWM modulator required.

3DSimpleTurntable 3D Model files and source code for rotating turntable. Raspberry Pi, DC servo and PWM modulator required. Preview Construction Print

This Github Action automatically creates a GIF from a given web page to display on your project README
This Github Action automatically creates a GIF from a given web page to display on your project README

This Github Action automatically creates a GIF from a given web page to display on your project README

Hello, this project is an example of how to generate a QR Code using python ๐Ÿ˜

Hello, this project is an example of how to generate a QR Code using python ๐Ÿ˜

Python pygame project that turns your images to matrix rain
Python pygame project that turns your images to matrix rain

Matrix-Rain-An-Image This project implements the classic Matrix digital rain effect in python with pygame to build up an image provided with multiple

A python based library to help you create unique generative images based on Rarity for your next NFT Project
A python based library to help you create unique generative images based on Rarity for your next NFT Project

Generative-NFT Generate Unique Images based on Rarity A python based library to help you create unique generative images based on Rarity for your next

Convert bitmap images to seeds for Tiny-83 NFT project.
Convert bitmap images to seeds for Tiny-83 NFT project.

What is this? This tool allows you to convert any 14p high and 22p wide Bitmap (.bmp) to the seed needed for the Tiny-83 NFT project. Project Twitter:

Fuzzware is a project for automated, self-configuring fuzzing of firmware images
Fuzzware is a project for automated, self-configuring fuzzing of firmware images

Fuzzware Fuzzware is a project for automated, self-configuring fuzzing of firmware images. The idea of this project is to configure the memory ranges

Comments
  • A little problem with the inference code

    A little problem with the inference code

    https://github.com/CISiPLab/cisip-FIRe/blob/554d54a4dba71adc87176c1ac0e12f3864bf825f/inference/web.py#L39 I want to ask what is the function of this โ€™code_stringโ€˜ . I initially got an error here, and it works fine when I set it to 'None'. In addition, when I have uploaded a picture, I will terminate the program and refresh the web page, and then re-run it is still the result of uploading the picture last time. Is it that I did not make a correct step?

    opened by Breeze-Zero 2
  • Fix issue #6: HashNet does not update the beta value properly

    Fix issue #6: HashNet does not update the beta value properly

    I've found a bug that the value of beta of HashNet isn't updated, resulting in the beta value staying as its original (default) value for both training and testing.

    https://github.com/CISiPLab/cisip-FIRe/blob/6ff37f7e98103572e4e58f5e501a55363f3508ea/scripts/train_general.py#L121

    This pull request resolves issue #6 which I have opened earlier.

    opened by thaiminhpv 1
  • I want to ask about the getTrainCode gldv2 ?

    I want to ask about the getTrainCode gldv2 ?

    I want to ask how I can get this by myself not using your " /data/jiuntian/delg_pretrained/resnet50_delg_gldv2_pretrained_fixbn.pth, /data/jiuntian/delg_pretrained/embed_delg_gldv2_pretrained.pth " tks !

    opened by nnhhoang 0
  • HashNet does not update the `beta` value properly, resulting in the `beta` value staying as its original (default) value for both training and testing

    HashNet does not update the `beta` value properly, resulting in the `beta` value staying as its original (default) value for both training and testing

    Great work! ๐ŸŽ‰๐Ÿ‘

    I've found a bug that the value of beta of HashNet isn't updated, resulting in the beta value staying as its original (default) value for both training and testing.

    https://github.com/CISiPLab/cisip-FIRe/blob/6ff37f7e98103572e4e58f5e501a55363f3508ea/scripts/train_general.py#L121

    as loss_param['loss_param']['beta'] only updates the params config, but doesn't make changes to running HashNet's beta value.

    opened by thaiminhpv 0
Owner
CISiP Lab
Center of Image and Signal Processing (CISiP) Lab
CISiP Lab
An open source image editor which can manipulate an image in many ways!

Image Editor - An open source image editor which can manipulate an image in many ways! If you need any more modes in repo or I

TroJanzHEX 44 Nov 17, 2022
Open source software for image correlation, distance and analysis

Douglas-Quaid Project Open source software for image correlation, distance and analysis. Strongly related to : Carl-Hauser Problem statement (@CIRCL)

Dominik Dancs 2 May 1, 2022
thumbor is an open-source photo thumbnail service by globo.com

Survey If you use thumbor, please take 1 minute and answer this survey? It's only 2 questions and one is multiple choice!!! thumbor is a smart imaging

Thumbor (by @globocom) 9.3k Dec 31, 2022
thumbor is an open-source photo thumbnail service by globo.com

Survey If you use thumbor, please take 1 minute and answer this survey? It's only 2 questions and one is multiple choice!!! thumbor is a smart imaging

Thumbor (by @globocom) 8.2k Feb 23, 2021
kikuchipy is an open-source Python library for processing and analysis of electron backscatter diffraction (EBSD) patterns

kikuchipy is an open-source Python library for processing and analysis of electron backscatter diffraction (EBSD) patterns. The library builds on the

pyxem 53 Dec 29, 2022
Fast batch image resizer and rotator for JPEG and PNG images.

imgp is a command line image resizer and rotator for JPEG and PNG images.

Terminator X 921 Dec 25, 2022
Simple Python image processing & automatization project for a simple web based game

What is this? Simple Python image processing & automatization project for a simple web based game Made using only Github Copilot (except the color and

SGeri 2 Aug 15, 2022
๐Ÿ‘พ Python project to help you convert any image into a pixel art.

?? Pixel Art Generator Python project to help you convert any image into a pixel art. โš™๏ธ Developer's Guide Things you need to get started with this co

Atul Anand 6 Dec 14, 2022
This is a python project which detects color of an image when you double click on it.

This is a python project which detects color of an image when you double click on it. You have to press ESC button to close the pop-up Image window. There are mainly two library CV2 and Pandas that are used in this project.

Yashwant Kumar Singh 0 Aug 16, 2022
Fill holes in binary 2D & 3D images fast.

Fill holes in binary 2D & 3D images fast.

null 11 Dec 9, 2022