All Projects → muggin → Cbir System

muggin / Cbir System

Content-Based Image Retrieval system (KTH DD2476 Project)

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Cbir System

towhee
Towhee is a framework that is dedicated to making neural data processing pipelines simple and fast.
Stars: ✭ 821 (+9022.22%)
Mutual labels:  feature-extraction, image-retrieval
mildnet
Visual Similarity research at Fynd. Contains code to reproduce 2 of our research papers.
Stars: ✭ 76 (+744.44%)
Mutual labels:  feature-extraction, image-retrieval
Fscrawler
Elasticsearch File System Crawler (FS Crawler)
Stars: ✭ 906 (+9966.67%)
Mutual labels:  elasticsearch
Cogstack Pipeline
Distributed, fault tolerant batch processing for Natural Language Applications and Search, using remote partitioning
Stars: ✭ 26 (+188.89%)
Mutual labels:  elasticsearch
Milog
Milog 是一基于 Ruby on Rails 的个人博客网站
Stars: ✭ 24 (+166.67%)
Mutual labels:  elasticsearch
Elasticsearch Readonlyrest Plugin
Free Elasticsearch security plugin and Kibana security plugin: super-easy Kibana multi-tenancy, Encryption, Authentication, Authorization, Auditing
Stars: ✭ 917 (+10088.89%)
Mutual labels:  elasticsearch
Fxt
A large scale feature extraction tool for text-based machine learning
Stars: ✭ 25 (+177.78%)
Mutual labels:  feature-extraction
Hugo Elasticsearch
Generate Elasticsearch indexes for Hugo static sites by parsing front matter
Stars: ✭ 19 (+111.11%)
Mutual labels:  elasticsearch
Spring Boot Elasticsearch Lire Docker
Spring-boot+ElasticSearch+LIRE+SwaggerUI RESTful.
Stars: ✭ 7 (-22.22%)
Mutual labels:  elasticsearch
Docker Fscrawler
Dockerfile for https://github.com/dadoonet/fscrawler
Stars: ✭ 24 (+166.67%)
Mutual labels:  elasticsearch
Databook
A facebook for data
Stars: ✭ 26 (+188.89%)
Mutual labels:  elasticsearch
Elastic Muto
Easy expressive search queries for Elasticsearch
Stars: ✭ 24 (+166.67%)
Mutual labels:  elasticsearch
Docker Kibana
Kibana Docker image including search-guard
Stars: ✭ 22 (+144.44%)
Mutual labels:  elasticsearch
Esx
A client for the Elasticsearch with Ecto, written in Elixir
Stars: ✭ 25 (+177.78%)
Mutual labels:  elasticsearch
Kafka Connect Elasticsearch Source
Kafka Connect Elasticsearch Source
Stars: ✭ 22 (+144.44%)
Mutual labels:  elasticsearch
Openshift Elasticsearch Plugin
Stars: ✭ 26 (+188.89%)
Mutual labels:  elasticsearch
Odsc 2020 nlp
Repository for ODSC talk related to Deep Learning NLP
Stars: ✭ 20 (+122.22%)
Mutual labels:  elasticsearch
Kafka Connect Elastic Sink
Kafka connect Elastic sink connector, with just in time index/delete behaviour.
Stars: ✭ 23 (+155.56%)
Mutual labels:  elasticsearch
Cnnimageretrieval Pytorch
CNN Image Retrieval in PyTorch: Training and evaluating CNNs for Image Retrieval in PyTorch
Stars: ✭ 931 (+10244.44%)
Mutual labels:  image-retrieval
Elasticsearchjsonld
Generate JSON-LD @contexts from ElasticSearch JSON Mappings
Stars: ✭ 7 (-22.22%)
Mutual labels:  elasticsearch

Content Based Image Retrieval Systems

The goal of this project was to implement a simple Content-Based Image Retrieval system from scratch. The system is based on two feature extractors, one using 2D color histograms and the other based on the VGG16 convolutional neural network. The system is backed by ElasticSearch. The final report is available here.

This project was carried out as part of the DD2476 "Search Engines & Information Retrieval" course at KTH Royal Institute of Technology.

Contributors

  • Antoine Broyelle (github: antoinebrl)
  • Andreas Drangel (github: iwut)
  • Wojciech Kryściński (github: muggin)
  • Safir Najafi (github: SafirN)

File organization

src directory - holds most of the code

  • feature_extractors - packages holding all feature extractors
    • base_ext.BaseExtractor - base class for all extractors
    • cnn_ext.CNNExtractor - convnet histogram extractor
    • hist_ext.HistogramExtractor - 2D histogram feature extractor
  • indexes - package holding all indexes
    • base_index.BaseIndex - base class for all indexes
    • mem_index.MemoryIndex - very simple in-memory index only for small test cases
    • es_index.ESIndex - elasticsearch based index
  • parsers - package holding all image parsers
    • base_parser.BaseParser - base class for all parsers
    • simple_parser.SimpleParser - very simple parser using histograms as features
  • similarity_mesaures - packages holding similarity measure functions
    • cosine_similarity - cosine similarity of two vectors
    • euclidean_similarity - euclidean distance between to vectors
    • chisq_similarity - chi-squared similarity of two distributions
    • kl_similarity - kullback-leibler divergence of two distributions
    • bhattacharyya_similarity - bhattacharyya similarity of two distributions
    • intersection_similarity - intersections of two distributions

data directory - holds small datasets for local testing

  • small - small dataset for quick local tests
  • xsmall - super small dataset, only 4 imgaes for prototyping
  • flickr_25k - not in repo but should be placed here (locally)
  • flickr_25k/meta/annotations - not in the repo. Should contains the annotations files provided.

scripts directory - holds all scripts related to the image retrieval system

  • index_data.py - script that runs indexing, requires config in appropriate format (look below for details).

configs directory - holds index_data.py configurations

  • simple_test.cfg - simple indexing using SimpleParser and MemoryIndex

frontend directory - holds the React-based frontend for the project. Uses webpack to build JavaScript and package it to a bundle. See the README in the frontend directory for more instructions.

server.py file - contains a light-weight flask application for receiving HTTP-requests from the frontend.

Execution

Image indexing

The index_data.py script is responsible for indexing images. the script takes as arguments a path to the directory holding the files and a path to the config file.

Example call: python scripts/index_data.py -d data/xsmall -c configs/simple_test.cfg

The config file should be in the following format

[General]
parsers=ParserClassName # this is mandatory, names as found in the `parsers` package (without package prefix)
index=IndexClassName # this is mandatory, names as found in the `indexes` package (without package prefix)

[ParserParams]
key=value # these params will be passed to the class on init, this section can be empty

[IndexParams]
key=value # these params will be passed to the class on init this section can be empty

Servers

There are two docker containers necessary in order to run this application.

Elasticsearch is run by first increasing the vm limit, then building and running the docker container

sudo sysctl -w vm.max_map_count=262144

docker-compose build elasticsearch

docker-compose up elasticsearch

The backend server is built and run with the following commands:

docker-compose build server

docker-compose up server

In order to index or debug within the server container you can run bash inside the server docker container:

docker-compose run server bash

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].