SlideShare a Scribd company logo
1 of 50
Download to read offline
EnContRA
Engine for Content-Based Retrieval Approaches




                                 Ricardo José São Pedro Dias
                                                07/02/2012
Context
ColaDI Project
  – Platform for Project Collaboration in Industrial
    Design

Period: March 2010 / November 2011
(EnContRA – until February 2011)
Objectives
General Framework for (Content-Based)
Retrieval Approaches and Applications
  – Features:
     •   Indexing
     •   Features Extraction
     •   Searching / Retrieval Algorithms
     •   Extensible Query Processing
Advantages for Development
1. Modularity
2. Easy to use – Low learning curve
3. Fast development of new approaches
  – Examples:
     •   A new descriptor
     •   A new searching / retrieval algorithm
     •   A new indexing structure
     •   Etc.
Multimedia Support
Support for different multimedia types
  – Pictures
  – Drawings
  – 3D Objects
  – Audio / Music
Typical Application Architecture
EnContRA Modules
Indexing and Retrieving Pictures using QBE

CREATING A SIMPLE APPROACH
Objectives
Create a simple Query by Example Image
Retrieval Application
Data Model – Input Data
Objective
     Query


                    QBE




Extracts:
 Scalable Color
Pieces to Assembly
1. Image Descriptor: Scalable Color

2. Indexing Structure: In Memory Simple Index

3. Searching Algorithm: Simple Searcher
Pieces to Assembly
1. Image Descriptor: Scalable Color

2. Indexing Structure: In Memory Simple Index

3. Searching Algorithm: Simple Searcher
Choosing a Feature to be extract
Scalable Color Descriptor (Extractor)
DescriptorExtractor extractor = new
                          ScalableColorDescriptor<IndexedObject>();




                                  Extractor               Descriptor
Pieces to Assembly
1. Image Descriptor: Scalable Color

2. Indexing Structure: In Memory Simple Index

3. Searching Algorithm: Simple Searcher
Choosing an Indexing Structure
In Memory Simple Index
AbstractIndex index = new SimpleIndex();




 Descriptor               Descriptor
Pieces to Assembly
1. Image Descriptor: Scalable Color

2. Indexing Structure: In Memory Simple Index

3. Searching Algorithm: Simple Searcher
Searching
Linear Search (for now!)
Searcher searcher = new SimpleSearcher<IndexedObject>();




 Descriptor              Descriptor
Assembling all the components
                 Searcher searcher = new SimpleSearcher<IndexedObject>();
 Setting Main
                 searcher.setDescriptorExtractor(extractor);
  Properties
                 searcher.setIndex(index);

                 searcher.setObjectStorage(new
  Not required                        SimpleObjectStorage(IndexedObject.class));
(recommended)
                 searcher.setResultProvider(new DefaultResultProvider());
Indexing the Dataset
File [] pictures = getFilePictures(dataset);

for (File pic : pictures) {
     BufferedImage image = ImageIO.read(pic);
     searcher.insert(new IndexedObject(image));
}




Extracts descriptors and indexes them!
Performing a Search – Similar
//Load the image query
BufferedImage image = readQuery();

//Perform the search using similar
ResultSet<IndexedObject> results =
             searcher.similar(new IndexedObject(image), 20);

//Print the Results
printResults(results);
Performing a Search – Query API
            CriteriaBuilderImpl cb = new CriteriaBuilderImpl();
            Path<IndexedObject> modelPath = new
 Query                          Path<IndexedObject>(IndexedObject.class);
Building
            Similar similar = cb.similar(modelPath, new IndexedObject(image));

            CriteriaQuery query = cb.createQuery().where(similar).limit(20);


Searching   ResultSet<StringObject> results = searcher.search(query);
Indexing and Retrieving Pictures using QBE

A MORE COMPLEX APPROACH
Objectives
Create a Drawing Retrieval Application, by
employing Query By Example (or Sketch)
  – Queries:
     • 2D Drawings (e.g., SVG files)
     • Pictures
Input Model
Drawing Model
public class DrawingModel implements IEntity<Long> {
          …
          private Drawing drawing;
          private BufferedImage image;
          …

        @Indexed
        public BufferedImage getImage();

        @Indexed
        public Drawing getDrawing();
}
Model to IndexedObject

                                                 CEDD IdxObj
                                        Image
   Instance                            Indexed   Edge IdxObj
                                        Object
                                                 ColorL IdxObj
                      Indexed Object
                          Factory

                                       Drawing
Picture & Vectorial                    Indexed     Drawing
                                        Object      IdxObj
Pieces to Assembly
1. Descriptor: Image Descriptors + TopoGeo

2. Indexing Structure: NBTree

3. Searching Algorithm: NBTree Searcher
Pieces to Assembly
1. Descriptor: Image Descriptors + TopoGeo

2. Indexing Structure: NBTree

3. Searching Algorithm: NBTree Searcher
Descriptors
Image Descriptors
DescriptorExtractor ceddExtractor = new CEDDDescriptor<IndexedObject>();
DescriptorExtractor edgeHistogram =
        new EdgeHistogramDescriptor<IndexedObject>();
DescriptorExtractor colorLayout = new ColorLayoutDescriptor<IndexedObject>();


TopoGeo Descriptor
TopogeoDescriptorExtractor topogeoDescriptorExtractor =
                                         new TopogeoDescriptorExtractor();
Pieces to Assembly
1. Descriptor: Image Descriptors + TopoGeo

2. Indexing Structure: NBTree

3. Searching Algorithm: NBTree Searcher
BTree for Indexing
Parameters:
    – the name of the index
    – the type of objects to be indexed (class)

BTreeIndex exampleIndex = new BTreeIndex(“btreeName", Object.class);
Pieces to Assembly
1. Descriptor: Image Descriptors + TopoGeo

2. Indexing Structure: NBTree

3. Searching Algorithm: NBTree Searcher
NBTree Searcher
Two flavors:
  – Regular (original)
  AbstractSearcher searcher = new NBTreeSearcher();


  – Parallel  To speed the search
  AbstractSearcher searcher = new ParallelNBTreeSearcher();
Picture – Composed Searching
AbstractSearcher imageSearcher = new ImageSearchEngine();
imageSearcher.setQueryProcessor(new QueryProcessorDefaultParallelImpl());
imageSearcher.setIndexedObjectFactory(new ImageIndexedObjectFactory());

//Creating a combined searcher, with the selected descriptor
for (Map.Entry<String, DescriptorExtractor> entry : availableDescriptors) {
      AbstractSearcher entrySearcher = new ParallelNBTreeSearcher();
      entrySearcher.setQueryProcessor(new QueryProcessorDefaultParallelImpl());
       entrySearcher.setIndex(new BTreeIndex("image." + entry.descriptorName, objClass);
      entrySearcher.setDescriptorExtractor(entry.extractor);

        imageSearcher.setSearcher("image." + entry.descriptorName, entrySearcher);
    }

searcher.setSearcher("image", imageSearcher);
Drawing Searcher
AbstractSearcher vectSearcher = new ParallelNBTreeSearcher();
vectSearcher.setQueryProcessor( new QueryProcessorDefaultParallelImpl());

vectorialSearcher.setIndex(new BTreeIndex(“vectIndex",
                                              TopogeoDescriptor.class));

TopogeoDescriptorExtractor topogeoExtractor =
                                       new TopogeoDescriptorExtractor();
vectorialSearcher.setDescriptorExtractor(topogeoExtractor);

searcher.setSearcher("drawing", vectSearcher);
Performing a Search – Individual
            CriteriaQuery<DrawingModel> query =
                                       cb.createQuery(DrawingModel.class);

 Query      Path<DrawingModel> modelPath = query.from(DrawingModel.class);
Building    Path drawingPath = modelPath.get(“drawing”);

            Similar similar = cb.similar(drawingPath, new IndexedObject(drawing));

            CriteriaQuery query = cb.createQuery().where(similar).limit(20);


Searching   ResultSet<StringObject> results = searcher.search(query);
Performing a Search – Combined
            Similar simD = cb.similar(drawingPath, new IndexedObject(drawing));
            Similar simP = cb.similar(picturePath, new IndexedObject(image));

 Query      And andPredicate = cb.and(simD, simP);
Building
            CriteriaQuery query = cb.createQuery()
                                          .where(andPredicate ).limit(20);


Searching   ResultSet<StringObject> results = searcher.search(query);
Custom IndexedObject Factory
public class ImageIndexedObjectFactory extends AnnotatedIndexedObjectFactory{
          …
          protected List<IndexedObject> createObjects(List<IndexedField>
                                                             indexedFields) {
                  //create indexedObjects for the DrawingModel instances
                  …
          }
          …
}
Custom Image Searcher
public class ImageSearchEngine implements AbstractSearcher<Long> {
          …
          protected List<IndexedObject> getIndexedObjects(Object o) throws
          IndexingException {
                  //create different indexedObjects for the same image, and use
                  //them in different individual searchers
          }

        public ResultSet search(Query query) {
                 //create subqueries to perform search in the individual image
                 //searchers
        }
        …
}
Some features of the Query API

QUERY API
Operators
•   AND/ OR
•   EQUAL / NOT EQUAL
•   SIMILAR
•   NOT
Query Processors
• Cascade Processor
  – Each sub-expression at a time


• Parallel Processor
  – Optimization for sub-expressions like AND and OR
Some demos developed during the project

DEMOS
Demos
Available at http://www.youtube.com/inevopt




   Image & Vectorial Search           Android Visual Search
How to get EnContRA, and more documentation and support?

GETTING ENCONTRA
Checkout/Push Source Code



Checkout
  git clone git@inevo.sourcerepo.com:inevo/encontra.git

Commit and Push
  git commit –m “+ Add: Texture Layout Descriptor.”
  git push


                           http://schacon.github.com/git/gittutorial.html
Contributing and Compiling Modules



mvn install full deploy (compile, package, run tests)

mvn package full deploy (compile, package)

mvn –DskipTests=true install full deploy (skip tests to
                                               speed up)



                                            http://maven.apache.org/
Documentation & Support

• EnContRA 101 – Dev Tutorial (almost finished)
• Javadocs
• Source code

• People:
  – Me ricardo.dias@ist.utl.pt
  – Tiago Cardoso  tiago.cardoso@inevo.pt
  – Nelson Silva  nelson.silva@inevo.pt
EnContRA
Engine for Content-Based Retrieval Approaches




                           The End

                                 Ricardo José São Pedro Dias
                                                07/02/2012

More Related Content

What's hot

Spring data presentation
Spring data presentationSpring data presentation
Spring data presentationOleksii Usyk
 
Hibernate Tutorial for beginners
Hibernate Tutorial for beginnersHibernate Tutorial for beginners
Hibernate Tutorial for beginnersrajkamal560066
 
ITK Tutorial Presentation Slides-945
ITK Tutorial Presentation Slides-945ITK Tutorial Presentation Slides-945
ITK Tutorial Presentation Slides-945Kitware Kitware
 
Drupal 7 entities & TextbookMadness.com
Drupal 7 entities & TextbookMadness.comDrupal 7 entities & TextbookMadness.com
Drupal 7 entities & TextbookMadness.comJD Leonard
 
ITK Tutorial Presentation Slides-948
ITK Tutorial Presentation Slides-948ITK Tutorial Presentation Slides-948
ITK Tutorial Presentation Slides-948Kitware Kitware
 
OpenCascade Technology Overview: Visualization
OpenCascade Technology Overview: VisualizationOpenCascade Technology Overview: Visualization
OpenCascade Technology Overview: VisualizationRiver Wang
 
13 advanced-swing
13 advanced-swing13 advanced-swing
13 advanced-swingNataraj Dg
 
Drupal Entities - Emerging Patterns of Usage
Drupal Entities - Emerging Patterns of UsageDrupal Entities - Emerging Patterns of Usage
Drupal Entities - Emerging Patterns of UsageRonald Ashri
 
Introduction to Objective - C
Introduction to Objective - CIntroduction to Objective - C
Introduction to Objective - CJussi Pohjolainen
 
iOS 101 - Xcode, Objective-C, iOS APIs
iOS 101 - Xcode, Objective-C, iOS APIsiOS 101 - Xcode, Objective-C, iOS APIs
iOS 101 - Xcode, Objective-C, iOS APIsSubhransu Behera
 
Objective-C for iOS Application Development
Objective-C for iOS Application DevelopmentObjective-C for iOS Application Development
Objective-C for iOS Application DevelopmentDhaval Kaneria
 
jQuery. Write less. Do More.
jQuery. Write less. Do More.jQuery. Write less. Do More.
jQuery. Write less. Do More.Dennis Loktionov
 

What's hot (20)

Spring data presentation
Spring data presentationSpring data presentation
Spring data presentation
 
Hibernate Tutorial for beginners
Hibernate Tutorial for beginnersHibernate Tutorial for beginners
Hibernate Tutorial for beginners
 
ITK Tutorial Presentation Slides-945
ITK Tutorial Presentation Slides-945ITK Tutorial Presentation Slides-945
ITK Tutorial Presentation Slides-945
 
Drupal 7 entities & TextbookMadness.com
Drupal 7 entities & TextbookMadness.comDrupal 7 entities & TextbookMadness.com
Drupal 7 entities & TextbookMadness.com
 
ITK Tutorial Presentation Slides-948
ITK Tutorial Presentation Slides-948ITK Tutorial Presentation Slides-948
ITK Tutorial Presentation Slides-948
 
OpenCascade Technology Overview: Visualization
OpenCascade Technology Overview: VisualizationOpenCascade Technology Overview: Visualization
OpenCascade Technology Overview: Visualization
 
For mobile 5/13'
For mobile 5/13'For mobile 5/13'
For mobile 5/13'
 
13 advanced-swing
13 advanced-swing13 advanced-swing
13 advanced-swing
 
Drupal Entities - Emerging Patterns of Usage
Drupal Entities - Emerging Patterns of UsageDrupal Entities - Emerging Patterns of Usage
Drupal Entities - Emerging Patterns of Usage
 
Collada Reference Card 1.4
Collada Reference Card 1.4Collada Reference Card 1.4
Collada Reference Card 1.4
 
Lecture 04
Lecture 04Lecture 04
Lecture 04
 
Introduction to Objective - C
Introduction to Objective - CIntroduction to Objective - C
Introduction to Objective - C
 
Build your own entity with Drupal
Build your own entity with DrupalBuild your own entity with Drupal
Build your own entity with Drupal
 
Prototype Framework
Prototype FrameworkPrototype Framework
Prototype Framework
 
Slickdemo
SlickdemoSlickdemo
Slickdemo
 
iOS 101 - Xcode, Objective-C, iOS APIs
iOS 101 - Xcode, Objective-C, iOS APIsiOS 101 - Xcode, Objective-C, iOS APIs
iOS 101 - Xcode, Objective-C, iOS APIs
 
Objective-C for iOS Application Development
Objective-C for iOS Application DevelopmentObjective-C for iOS Application Development
Objective-C for iOS Application Development
 
jQuery. Write less. Do More.
jQuery. Write less. Do More.jQuery. Write less. Do More.
jQuery. Write less. Do More.
 
OO in JavaScript
OO in JavaScriptOO in JavaScript
OO in JavaScript
 
Coding Ajax
Coding AjaxCoding Ajax
Coding Ajax
 

Viewers also liked

v6_whats-happening (presentation at GEANT APM meeting, 2011, Ljubljana)
v6_whats-happening (presentation at GEANT APM meeting, 2011, Ljubljana)v6_whats-happening (presentation at GEANT APM meeting, 2011, Ljubljana)
v6_whats-happening (presentation at GEANT APM meeting, 2011, Ljubljana)matjazsi
 
Matjaž Straus istenič - Tiha voda v6
Matjaž Straus istenič - Tiha voda v6Matjaž Straus istenič - Tiha voda v6
Matjaž Straus istenič - Tiha voda v6matjazsi
 
Vitel, 24. delavnica: Arnes - izkušnje internetnega ponudnika
Vitel, 24. delavnica: Arnes - izkušnje internetnega ponudnikaVitel, 24. delavnica: Arnes - izkušnje internetnega ponudnika
Vitel, 24. delavnica: Arnes - izkušnje internetnega ponudnikamatjazsi
 
Gremo6, Workshop at 8th Slovenian IPv6 Summit
Gremo6, Workshop at 8th Slovenian IPv6 SummitGremo6, Workshop at 8th Slovenian IPv6 Summit
Gremo6, Workshop at 8th Slovenian IPv6 Summitmatjazsi
 
SIX and some best practices for running an IXP
SIX and some best practices for running an IXPSIX and some best practices for running an IXP
SIX and some best practices for running an IXPmatjazsi
 
Improving Music Recommendation in Session-Based Collaborative Filtering by us...
Improving Music Recommendation in Session-Based Collaborative Filtering by us...Improving Music Recommendation in Session-Based Collaborative Filtering by us...
Improving Music Recommendation in Session-Based Collaborative Filtering by us...Ricardo Dias
 
Starting and running an IXP
Starting and running an IXPStarting and running an IXP
Starting and running an IXPmatjazsi
 
Trauma Image Interpretation of the Pelvis and Hip Radiographs: Using ABCS
 Trauma Image Interpretation of the Pelvis and Hip Radiographs: Using ABCS Trauma Image Interpretation of the Pelvis and Hip Radiographs: Using ABCS
Trauma Image Interpretation of the Pelvis and Hip Radiographs: Using ABCSuk121chris
 
Vitel, 21. delavnica: Smo pripravljeni na IPv6
Vitel, 21. delavnica: Smo pripravljeni na IPv6Vitel, 21. delavnica: Smo pripravljeni na IPv6
Vitel, 21. delavnica: Smo pripravljeni na IPv6matjazsi
 
NAT64 v poslovnem okolju
NAT64 v poslovnem okoljuNAT64 v poslovnem okolju
NAT64 v poslovnem okoljumatjazsi
 
Matjaž Straus Istenič: 1, 2, 3, 4 - na IPv6, SIRIKT 2011
Matjaž Straus Istenič: 1, 2, 3, 4 - na IPv6, SIRIKT 2011Matjaž Straus Istenič: 1, 2, 3, 4 - na IPv6, SIRIKT 2011
Matjaž Straus Istenič: 1, 2, 3, 4 - na IPv6, SIRIKT 2011matjazsi
 
IPv6 v knjižnicah, konferenca COBISS 2011
IPv6 v knjižnicah, konferenca COBISS 2011IPv6 v knjižnicah, konferenca COBISS 2011
IPv6 v knjižnicah, konferenca COBISS 2011matjazsi
 
Most do 6 (ob 20-letnici Arnesa)
Most do 6 (ob 20-letnici Arnesa)Most do 6 (ob 20-letnici Arnesa)
Most do 6 (ob 20-letnici Arnesa)matjazsi
 

Viewers also liked (18)

weeks - kopia
weeks - kopiaweeks - kopia
weeks - kopia
 
Improvise
ImproviseImprovise
Improvise
 
v6_whats-happening (presentation at GEANT APM meeting, 2011, Ljubljana)
v6_whats-happening (presentation at GEANT APM meeting, 2011, Ljubljana)v6_whats-happening (presentation at GEANT APM meeting, 2011, Ljubljana)
v6_whats-happening (presentation at GEANT APM meeting, 2011, Ljubljana)
 
Matjaž Straus istenič - Tiha voda v6
Matjaž Straus istenič - Tiha voda v6Matjaž Straus istenič - Tiha voda v6
Matjaž Straus istenič - Tiha voda v6
 
MULHER@AVI2012
MULHER@AVI2012MULHER@AVI2012
MULHER@AVI2012
 
Prezentacja
Prezentacja Prezentacja
Prezentacja
 
Vitel, 24. delavnica: Arnes - izkušnje internetnega ponudnika
Vitel, 24. delavnica: Arnes - izkušnje internetnega ponudnikaVitel, 24. delavnica: Arnes - izkušnje internetnega ponudnika
Vitel, 24. delavnica: Arnes - izkušnje internetnega ponudnika
 
Gremo6, Workshop at 8th Slovenian IPv6 Summit
Gremo6, Workshop at 8th Slovenian IPv6 SummitGremo6, Workshop at 8th Slovenian IPv6 Summit
Gremo6, Workshop at 8th Slovenian IPv6 Summit
 
SIX and some best practices for running an IXP
SIX and some best practices for running an IXPSIX and some best practices for running an IXP
SIX and some best practices for running an IXP
 
Improving Music Recommendation in Session-Based Collaborative Filtering by us...
Improving Music Recommendation in Session-Based Collaborative Filtering by us...Improving Music Recommendation in Session-Based Collaborative Filtering by us...
Improving Music Recommendation in Session-Based Collaborative Filtering by us...
 
Starting and running an IXP
Starting and running an IXPStarting and running an IXP
Starting and running an IXP
 
BACH
BACHBACH
BACH
 
Trauma Image Interpretation of the Pelvis and Hip Radiographs: Using ABCS
 Trauma Image Interpretation of the Pelvis and Hip Radiographs: Using ABCS Trauma Image Interpretation of the Pelvis and Hip Radiographs: Using ABCS
Trauma Image Interpretation of the Pelvis and Hip Radiographs: Using ABCS
 
Vitel, 21. delavnica: Smo pripravljeni na IPv6
Vitel, 21. delavnica: Smo pripravljeni na IPv6Vitel, 21. delavnica: Smo pripravljeni na IPv6
Vitel, 21. delavnica: Smo pripravljeni na IPv6
 
NAT64 v poslovnem okolju
NAT64 v poslovnem okoljuNAT64 v poslovnem okolju
NAT64 v poslovnem okolju
 
Matjaž Straus Istenič: 1, 2, 3, 4 - na IPv6, SIRIKT 2011
Matjaž Straus Istenič: 1, 2, 3, 4 - na IPv6, SIRIKT 2011Matjaž Straus Istenič: 1, 2, 3, 4 - na IPv6, SIRIKT 2011
Matjaž Straus Istenič: 1, 2, 3, 4 - na IPv6, SIRIKT 2011
 
IPv6 v knjižnicah, konferenca COBISS 2011
IPv6 v knjižnicah, konferenca COBISS 2011IPv6 v knjižnicah, konferenca COBISS 2011
IPv6 v knjižnicah, konferenca COBISS 2011
 
Most do 6 (ob 20-letnici Arnesa)
Most do 6 (ob 20-letnici Arnesa)Most do 6 (ob 20-letnici Arnesa)
Most do 6 (ob 20-letnici Arnesa)
 

Similar to Encontra presentation

Indexing Strategies to Help You Scale
Indexing Strategies to Help You ScaleIndexing Strategies to Help You Scale
Indexing Strategies to Help You ScaleMongoDB
 
Fast querying indexing for performance (4)
Fast querying   indexing for performance (4)Fast querying   indexing for performance (4)
Fast querying indexing for performance (4)MongoDB
 
DESIGNING A PERSISTENCE FRAMEWORK WITH PATTERNS.ppt
DESIGNING A PERSISTENCE FRAMEWORK WITH PATTERNS.pptDESIGNING A PERSISTENCE FRAMEWORK WITH PATTERNS.ppt
DESIGNING A PERSISTENCE FRAMEWORK WITH PATTERNS.pptAntoJoseph36
 
Visual C++ project model
Visual C++ project modelVisual C++ project model
Visual C++ project modelPVS-Studio
 
Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Tobias Trelle
 
Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Svetlin Nakov
 
Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Tobias Trelle
 
Implementing Data Visualization Apps on iOS Devices
Implementing Data Visualization Apps on iOS DevicesImplementing Data Visualization Apps on iOS Devices
Implementing Data Visualization Apps on iOS DevicesDouglass Turner
 
Getting started with indico APIs [Python]
Getting started with indico APIs [Python]Getting started with indico APIs [Python]
Getting started with indico APIs [Python]indico data
 
MongoDB Introduction talk at Dr Dobbs Conference, MongoDB Evenings at Bangalo...
MongoDB Introduction talk at Dr Dobbs Conference, MongoDB Evenings at Bangalo...MongoDB Introduction talk at Dr Dobbs Conference, MongoDB Evenings at Bangalo...
MongoDB Introduction talk at Dr Dobbs Conference, MongoDB Evenings at Bangalo...Prasoon Kumar
 
Marc s01 e02-crud-database
Marc s01 e02-crud-databaseMarc s01 e02-crud-database
Marc s01 e02-crud-databaseMongoDB
 
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...MongoDB
 
MongoDB-MFF.pptx
MongoDB-MFF.pptxMongoDB-MFF.pptx
MongoDB-MFF.pptxYellowGem
 
Marker-based Augmented Monuments on iPhone and iPad
Marker-based Augmented Monuments on iPhone and iPadMarker-based Augmented Monuments on iPhone and iPad
Marker-based Augmented Monuments on iPhone and iPadEnrico Micco
 

Similar to Encontra presentation (20)

Indexing Strategies to Help You Scale
Indexing Strategies to Help You ScaleIndexing Strategies to Help You Scale
Indexing Strategies to Help You Scale
 
Fast querying indexing for performance (4)
Fast querying   indexing for performance (4)Fast querying   indexing for performance (4)
Fast querying indexing for performance (4)
 
DESIGNING A PERSISTENCE FRAMEWORK WITH PATTERNS.ppt
DESIGNING A PERSISTENCE FRAMEWORK WITH PATTERNS.pptDESIGNING A PERSISTENCE FRAMEWORK WITH PATTERNS.ppt
DESIGNING A PERSISTENCE FRAMEWORK WITH PATTERNS.ppt
 
Mongo db queries
Mongo db queriesMongo db queries
Mongo db queries
 
Visual C++ project model
Visual C++ project modelVisual C++ project model
Visual C++ project model
 
Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Morphia, Spring Data & Co.
Morphia, Spring Data & Co.
 
Dagger 2 ppt
Dagger 2 pptDagger 2 ppt
Dagger 2 ppt
 
I os 04
I os 04I os 04
I os 04
 
Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015
 
Meetup#2: MongoDB Schema Design
Meetup#2: MongoDB Schema DesignMeetup#2: MongoDB Schema Design
Meetup#2: MongoDB Schema Design
 
Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Spring Data, Jongo & Co.
Spring Data, Jongo & Co.
 
Implementing Data Visualization Apps on iOS Devices
Implementing Data Visualization Apps on iOS DevicesImplementing Data Visualization Apps on iOS Devices
Implementing Data Visualization Apps on iOS Devices
 
Real World MVC
Real World MVCReal World MVC
Real World MVC
 
Getting started with indico APIs [Python]
Getting started with indico APIs [Python]Getting started with indico APIs [Python]
Getting started with indico APIs [Python]
 
Introduction to Objective - C
Introduction to Objective - CIntroduction to Objective - C
Introduction to Objective - C
 
MongoDB Introduction talk at Dr Dobbs Conference, MongoDB Evenings at Bangalo...
MongoDB Introduction talk at Dr Dobbs Conference, MongoDB Evenings at Bangalo...MongoDB Introduction talk at Dr Dobbs Conference, MongoDB Evenings at Bangalo...
MongoDB Introduction talk at Dr Dobbs Conference, MongoDB Evenings at Bangalo...
 
Marc s01 e02-crud-database
Marc s01 e02-crud-databaseMarc s01 e02-crud-database
Marc s01 e02-crud-database
 
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
 
MongoDB-MFF.pptx
MongoDB-MFF.pptxMongoDB-MFF.pptx
MongoDB-MFF.pptx
 
Marker-based Augmented Monuments on iPhone and iPad
Marker-based Augmented Monuments on iPhone and iPadMarker-based Augmented Monuments on iPhone and iPad
Marker-based Augmented Monuments on iPhone and iPad
 

Recently uploaded

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 

Encontra presentation

  • 1. EnContRA Engine for Content-Based Retrieval Approaches Ricardo José São Pedro Dias 07/02/2012
  • 2. Context ColaDI Project – Platform for Project Collaboration in Industrial Design Period: March 2010 / November 2011 (EnContRA – until February 2011)
  • 3. Objectives General Framework for (Content-Based) Retrieval Approaches and Applications – Features: • Indexing • Features Extraction • Searching / Retrieval Algorithms • Extensible Query Processing
  • 4. Advantages for Development 1. Modularity 2. Easy to use – Low learning curve 3. Fast development of new approaches – Examples: • A new descriptor • A new searching / retrieval algorithm • A new indexing structure • Etc.
  • 5. Multimedia Support Support for different multimedia types – Pictures – Drawings – 3D Objects – Audio / Music
  • 8. Indexing and Retrieving Pictures using QBE CREATING A SIMPLE APPROACH
  • 9. Objectives Create a simple Query by Example Image Retrieval Application
  • 10. Data Model – Input Data
  • 11. Objective Query QBE Extracts:  Scalable Color
  • 12. Pieces to Assembly 1. Image Descriptor: Scalable Color 2. Indexing Structure: In Memory Simple Index 3. Searching Algorithm: Simple Searcher
  • 13. Pieces to Assembly 1. Image Descriptor: Scalable Color 2. Indexing Structure: In Memory Simple Index 3. Searching Algorithm: Simple Searcher
  • 14. Choosing a Feature to be extract Scalable Color Descriptor (Extractor) DescriptorExtractor extractor = new ScalableColorDescriptor<IndexedObject>(); Extractor Descriptor
  • 15. Pieces to Assembly 1. Image Descriptor: Scalable Color 2. Indexing Structure: In Memory Simple Index 3. Searching Algorithm: Simple Searcher
  • 16. Choosing an Indexing Structure In Memory Simple Index AbstractIndex index = new SimpleIndex(); Descriptor Descriptor
  • 17. Pieces to Assembly 1. Image Descriptor: Scalable Color 2. Indexing Structure: In Memory Simple Index 3. Searching Algorithm: Simple Searcher
  • 18. Searching Linear Search (for now!) Searcher searcher = new SimpleSearcher<IndexedObject>(); Descriptor Descriptor
  • 19. Assembling all the components Searcher searcher = new SimpleSearcher<IndexedObject>(); Setting Main searcher.setDescriptorExtractor(extractor); Properties searcher.setIndex(index); searcher.setObjectStorage(new Not required SimpleObjectStorage(IndexedObject.class)); (recommended) searcher.setResultProvider(new DefaultResultProvider());
  • 20. Indexing the Dataset File [] pictures = getFilePictures(dataset); for (File pic : pictures) { BufferedImage image = ImageIO.read(pic); searcher.insert(new IndexedObject(image)); } Extracts descriptors and indexes them!
  • 21. Performing a Search – Similar //Load the image query BufferedImage image = readQuery(); //Perform the search using similar ResultSet<IndexedObject> results = searcher.similar(new IndexedObject(image), 20); //Print the Results printResults(results);
  • 22. Performing a Search – Query API CriteriaBuilderImpl cb = new CriteriaBuilderImpl(); Path<IndexedObject> modelPath = new Query Path<IndexedObject>(IndexedObject.class); Building Similar similar = cb.similar(modelPath, new IndexedObject(image)); CriteriaQuery query = cb.createQuery().where(similar).limit(20); Searching ResultSet<StringObject> results = searcher.search(query);
  • 23. Indexing and Retrieving Pictures using QBE A MORE COMPLEX APPROACH
  • 24. Objectives Create a Drawing Retrieval Application, by employing Query By Example (or Sketch) – Queries: • 2D Drawings (e.g., SVG files) • Pictures
  • 25. Input Model Drawing Model public class DrawingModel implements IEntity<Long> { … private Drawing drawing; private BufferedImage image; … @Indexed public BufferedImage getImage(); @Indexed public Drawing getDrawing(); }
  • 26. Model to IndexedObject CEDD IdxObj Image Instance Indexed Edge IdxObj Object ColorL IdxObj Indexed Object Factory Drawing Picture & Vectorial Indexed Drawing Object IdxObj
  • 27. Pieces to Assembly 1. Descriptor: Image Descriptors + TopoGeo 2. Indexing Structure: NBTree 3. Searching Algorithm: NBTree Searcher
  • 28. Pieces to Assembly 1. Descriptor: Image Descriptors + TopoGeo 2. Indexing Structure: NBTree 3. Searching Algorithm: NBTree Searcher
  • 29. Descriptors Image Descriptors DescriptorExtractor ceddExtractor = new CEDDDescriptor<IndexedObject>(); DescriptorExtractor edgeHistogram = new EdgeHistogramDescriptor<IndexedObject>(); DescriptorExtractor colorLayout = new ColorLayoutDescriptor<IndexedObject>(); TopoGeo Descriptor TopogeoDescriptorExtractor topogeoDescriptorExtractor = new TopogeoDescriptorExtractor();
  • 30. Pieces to Assembly 1. Descriptor: Image Descriptors + TopoGeo 2. Indexing Structure: NBTree 3. Searching Algorithm: NBTree Searcher
  • 31. BTree for Indexing Parameters: – the name of the index – the type of objects to be indexed (class) BTreeIndex exampleIndex = new BTreeIndex(“btreeName", Object.class);
  • 32. Pieces to Assembly 1. Descriptor: Image Descriptors + TopoGeo 2. Indexing Structure: NBTree 3. Searching Algorithm: NBTree Searcher
  • 33. NBTree Searcher Two flavors: – Regular (original) AbstractSearcher searcher = new NBTreeSearcher(); – Parallel  To speed the search AbstractSearcher searcher = new ParallelNBTreeSearcher();
  • 34. Picture – Composed Searching AbstractSearcher imageSearcher = new ImageSearchEngine(); imageSearcher.setQueryProcessor(new QueryProcessorDefaultParallelImpl()); imageSearcher.setIndexedObjectFactory(new ImageIndexedObjectFactory()); //Creating a combined searcher, with the selected descriptor for (Map.Entry<String, DescriptorExtractor> entry : availableDescriptors) { AbstractSearcher entrySearcher = new ParallelNBTreeSearcher(); entrySearcher.setQueryProcessor(new QueryProcessorDefaultParallelImpl()); entrySearcher.setIndex(new BTreeIndex("image." + entry.descriptorName, objClass); entrySearcher.setDescriptorExtractor(entry.extractor); imageSearcher.setSearcher("image." + entry.descriptorName, entrySearcher); } searcher.setSearcher("image", imageSearcher);
  • 35. Drawing Searcher AbstractSearcher vectSearcher = new ParallelNBTreeSearcher(); vectSearcher.setQueryProcessor( new QueryProcessorDefaultParallelImpl()); vectorialSearcher.setIndex(new BTreeIndex(“vectIndex", TopogeoDescriptor.class)); TopogeoDescriptorExtractor topogeoExtractor = new TopogeoDescriptorExtractor(); vectorialSearcher.setDescriptorExtractor(topogeoExtractor); searcher.setSearcher("drawing", vectSearcher);
  • 36. Performing a Search – Individual CriteriaQuery<DrawingModel> query = cb.createQuery(DrawingModel.class); Query Path<DrawingModel> modelPath = query.from(DrawingModel.class); Building Path drawingPath = modelPath.get(“drawing”); Similar similar = cb.similar(drawingPath, new IndexedObject(drawing)); CriteriaQuery query = cb.createQuery().where(similar).limit(20); Searching ResultSet<StringObject> results = searcher.search(query);
  • 37. Performing a Search – Combined Similar simD = cb.similar(drawingPath, new IndexedObject(drawing)); Similar simP = cb.similar(picturePath, new IndexedObject(image)); Query And andPredicate = cb.and(simD, simP); Building CriteriaQuery query = cb.createQuery() .where(andPredicate ).limit(20); Searching ResultSet<StringObject> results = searcher.search(query);
  • 38. Custom IndexedObject Factory public class ImageIndexedObjectFactory extends AnnotatedIndexedObjectFactory{ … protected List<IndexedObject> createObjects(List<IndexedField> indexedFields) { //create indexedObjects for the DrawingModel instances … } … }
  • 39. Custom Image Searcher public class ImageSearchEngine implements AbstractSearcher<Long> { … protected List<IndexedObject> getIndexedObjects(Object o) throws IndexingException { //create different indexedObjects for the same image, and use //them in different individual searchers } public ResultSet search(Query query) { //create subqueries to perform search in the individual image //searchers } … }
  • 40. Some features of the Query API QUERY API
  • 41. Operators • AND/ OR • EQUAL / NOT EQUAL • SIMILAR • NOT
  • 42. Query Processors • Cascade Processor – Each sub-expression at a time • Parallel Processor – Optimization for sub-expressions like AND and OR
  • 43. Some demos developed during the project DEMOS
  • 44. Demos Available at http://www.youtube.com/inevopt Image & Vectorial Search Android Visual Search
  • 45. How to get EnContRA, and more documentation and support? GETTING ENCONTRA
  • 46. Checkout/Push Source Code Checkout git clone git@inevo.sourcerepo.com:inevo/encontra.git Commit and Push git commit –m “+ Add: Texture Layout Descriptor.” git push http://schacon.github.com/git/gittutorial.html
  • 47. Contributing and Compiling Modules mvn install full deploy (compile, package, run tests) mvn package full deploy (compile, package) mvn –DskipTests=true install full deploy (skip tests to speed up) http://maven.apache.org/
  • 48. Documentation & Support • EnContRA 101 – Dev Tutorial (almost finished) • Javadocs • Source code • People: – Me ricardo.dias@ist.utl.pt – Tiago Cardoso  tiago.cardoso@inevo.pt – Nelson Silva  nelson.silva@inevo.pt
  • 49.
  • 50. EnContRA Engine for Content-Based Retrieval Approaches The End Ricardo José São Pedro Dias 07/02/2012