Giter VIP home page Giter VIP logo

elasticsearch-image's Issues

Install with Elasticsearch 1.3.4

Hi, the plugin installation fail with Elasticsearch 1.3.4, anyone have a solution to install or to build with this version of elasticsearch ?

Local Descriptors SIFT/SURF

Hi @kzwang , I think we are supporting some features as AUTO_COLOR_CORRELOGRAM, BINARY_PATTERNS_PYRAMID, CEDD..... But this plugin is not supports Feature Sift/surf. So could you instruct me how to make this plugin support 2 features sift/surf?

net.semanticmetadata.lire.imageanalysis.features.local.opencvfeatures.CvSiftFeature/CvSurfFeature

NullPointerException in AbstractImageScorer

Hello,

I'm using ES 3.2 and elasticsearch-image-1.3.0-SNAPSHOT.

I have the following error when I try to execute my request:

[2014-09-09 15:45:06,137][DEBUG][action.search.type       ] [Vanisher] [development_leak_items][3], node[j6322b2GSHiBq9Ks4HyWLA], [P], s[STARTED]: Failed to execute [org.elasticsearch.action.search.SearchRequest@500994df] lastShard [true].search.query.QueryPhaseExecutionException: [development_leak_items][3]: query[filtered(cover_image.FCTH,FCTH)->cache(_type:leak_item)],from[0],size[10]: Query Failed [Failed to execute main query]
        at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:162)
        at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:261)
        at org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:206)
        at org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:203)
        at org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:517)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.elasticsearch.ElasticsearchImageProcessException: Failed to calculate score
        at org.elasticsearch.index.query.image.AbstractImageScorer.score(AbstractImageScorer.java:57)
        at org.apache.lucene.search.TopScoreDocCollector$OutOfOrderTopScoreDocCollector.collect(TopScoreDocCollector.java:140)
        at org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:193)
        at org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:163)
        at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:35)
        at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:621)
        at org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:175)
        at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:491)
        at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:448)
        at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:281)
        at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:269)
        at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:156)
        ... 7 more
Caused by: java.lang.NullPointerException
        at org.elasticsearch.index.query.image.AbstractImageScorer.score(AbstractImageScorer.java:44)

Request:

{"query":{
  "image":{
    "cover_image":{
      "feature":"FCTH",
      "image":".........base64........"}
    }
  }
}

Mapping:

leak_item: {
  properties: {
    artist: {
      type: string
    }
    album: {
      type: string
    }
    cover_fingerprint: {
      type: string
    }
    cover_image: {
      type: string
    }
  }
}

EXIF GPS Tags

Hi, are GPS tags indexed as geo_point type? E.g. searching images by location? Most of smartphones capture coordinates with the pictures.

Search with more than one feature

Is it possible to search with both CEDD and JCD features? My mapping uses both and I can switch between them, but did not know if both could be used.

Unable to index an image

I get a "Caused by: java.lang.NoSuchMethodError: org.elasticsearch.common.io.stream.BytesStreamInput." when I try to index an image.

Here is the JSON I am trying to index -
{"name":"001_0010.jpg","image":"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"}

org.elasticsearch.index.mapper.MapperParsingException: failed to parse
at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:565)
at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:493)
at org.elasticsearch.index.shard.IndexShard.prepareCreate(IndexShard.java:466)
at org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:201)
at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$PrimaryPhase.performOnPrimary(TransportShardReplicationOperationAction.java:574)
at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$PrimaryPhase$1.doRun(TransportShardReplicationOperationAction.java:440)
at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:36)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: org.elasticsearch.common.io.stream.BytesStreamInput.([BZ)V
at org.elasticsearch.index.mapper.image.ImageMapper.parse(ImageMapper.java:257)
at org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue(ObjectMapper.java:706)
at org.elasticsearch.index.mapper.object.ObjectMapper.parse(ObjectMapper.java:497)
at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:544)
... 9 more

Index mechanism to Elastic Search

What indexing mechanism is used to index the feature descriptors to elastic search and how is the retrieval done ?

I am trying to update the plugin to latest solr and wanted to know, what is this plugin doing internally ?

Plugin installation assumed to be site plugin, but contains source code, aborting installation.

Hi,

I have problem with plugin setup
if i run

bin/plugin --install kzwang/elasticsearch-image/1.2.0

or

bin/plugin --install kzwang/elasticsearch-image/1.3.0-SNAPSHOT

this will rise exception with message

Message:
   Error while installing plugin, reason: IllegalArgumentException: Plugin installation assumed to be site plugin, but contains source code, aborting installation.

I'm running this on Ubuntu 14.04 with elasticsearch 1.3.2

Best regards,
patS

failed to put mappings on indices [[test]], type [test]

curl -XPUT 'localhost:9200/test/test/_mapping' -d '{

"test": {
    "properties": {
        "my_img": {
            "type": "image",
            "feature": {
                "CEDD": {
                    "hash": "BIT_SAMPLING"
                },
                "JCD": {
                    "hash": ["BIT_SAMPLING", "LSH"]
                },
                "FCTH": {}
            },
            "metadata": {
                "jpeg.image_width": {
                    "type": "string",
                    "store": "yes"
                },
                "jpeg.image_height": {
                    "type": "string",
                    "store": "yes"
                }
            }
        }
    }
}

}'

[2014-07-14 18:16:16,641][DEBUG][action.admin.indices.mapping.put] [Ikthalon] failed to put mappings on indices [[test]], type [test]
org.elasticsearch.index.mapper.MapperParsingException: No handler for type [image] declared on field [my_img]
at org.elasticsearch.index.mapper.object.ObjectMapper$TypeParser.parseProperties(ObjectMapper.java:256)
at org.elasticsearch.index.mapper.object.ObjectMapper$TypeParser.parse(ObjectMapper.java:216)
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:203)
at org.elasticsearch.index.mapper.DocumentMapperParser.parseCompressed(DocumentMapperParser.java:185)
at org.elasticsearch.index.mapper.MapperService.parse(MapperService.java:387)
at org.elasticsearch.index.mapper.MapperService.parse(MapperService.java:377)
at org.elasticsearch.cluster.metadata.MetaDataMappingService$5.execute(MetaDataMappingService.java:540)
at org.elasticsearch.cluster.service.InternalClusterService$UpdateTask.run(InternalClusterService.java:308)
at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:134)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
{"error":"MapperParsingException[No handler for type [image] declared on field [my_img]]","status":400}

QueryPhaseExecutionException: AbstractMethodError[org.apache.lucene.search.Weight.scorer...

Using ES 1.3.1. The error also occurs in ES 1.2.1. Works fine with ES 1.1.2.

Mapping:

{
  "digit": {
    "properties": {
      "image": {
        "type": "image",
        "feature": {
          "CEDD": {
            "hash": "BIT_SAMPLING"
          },
          "JCD": {
            "hash": [
              "BIT_SAMPLING",
              "LSH"
            ]
          },
          "FCTH": {}
        },
        "metadata": {
          "jpeg.image_width": {
            "type": "string",
            "store": "yes"
          },
          "jpeg.image_height": {
            "type": "string",
            "store": "yes"
          }
        }
      }
    }
  }
}

Index new data:

curl -XPOST 'localhost:9200/digit_recognizer/digit/1' -d '{
    "image": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAAAklEQVR4AewaftIAAAJ+SURBVL3BsUticQDA8a8/fz1BiGpoOClIaAjC4O4CkRc02BY4HtQSeEQEFYQG0hKH0D/wyBs8CjrLIRsiFKuptSgb2hyi4RKDwMHKsAfHI4IjrufTys/HxhMBfAO+A194XwXgN5AA/tgAAeg0h88OBIEAzaEIYJrm8QjgK83zWdBkkgY5HA4GBweZm5tDVVUuLy9ZXl4mnU5jRtIAVVWJxWJ4PB6euVwuNE0jnU5jRlIHu91OIBBgfX0dKSXb29ukUimEEGxsbOB0Omlvb6dUKvEaiUUdHR0sLi4SCoXY3d1laWmJs7MzDKurqxju7u4olUqYkVg0Pz9PKBQimUwSDAZ5eHjA0N/fz8TEBIa9vT1qkVgwMjLCwsICmqYRDoepVqs8m52dRQjB8fEx8XicWiQ19PX1sbKywuTkJIlEgpdUVUXXdaampsjlctQiqCEQCHBzc0MymeR/hBDk83lyuRxWCEwoikJvby/j4+Pous5LTqcTQzwexyqJia6uLtxuN/f39/zL7XYTjUbxer309PTQ2tqKVRITbW1t+P1+XC4XxWIRw+joKOFwmOHhYU5PT6lWq1QqFaySmCiXy1QqFTY3Nzk4OMDn8+HxeFAUhbW1NSKRCKlUCq/Xi1USE/l8nrGxMSKRCDMzMxg0TWN/f59sNouu69ze3nJxcYFVkhp2dnY4OjpiaGgIw+HhIdfX1zzz+Xycn59jlcSCQqHA1tYWr+ns7MQqwRt0d3fjcDjIZDJYJXgDKSU2m416CN7A7/fT0tJCPQRwQoMGBgYQQlCHEwH8okHZbJbHx0eurq6wKGPjSQyY5mP9BKJ2nqSBIvAJcPG+ToAo8AMo/wW9pc9PVN6/VgAAAABJRU5ErkJgggAAAAIAAAABAAAA/////wEAAAAAAAAAAAAAAAEAAQABAAAAAB5rAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
}'

Trying to search the same image:

curl -XPOST 'localhost:9200/digit_recognizer/digit/_search' -d '{
  "query": {
    "image": {
      "image": {
        "feature": "CEDD",
        "image": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAAAklEQVR4AewaftIAAAJ+SURBVL3BsUticQDA8a8/fz1BiGpoOClIaAjC4O4CkRc02BY4HtQSeEQEFYQG0hKH0D/wyBs8CjrLIRsiFKuptSgb2hyi4RKDwMHKsAfHI4IjrufTys/HxhMBfAO+A194XwXgN5AA/tgAAeg0h88OBIEAzaEIYJrm8QjgK83zWdBkkgY5HA4GBweZm5tDVVUuLy9ZXl4mnU5jRtIAVVWJxWJ4PB6euVwuNE0jnU5jRlIHu91OIBBgfX0dKSXb29ukUimEEGxsbOB0Omlvb6dUKvEaiUUdHR0sLi4SCoXY3d1laWmJs7MzDKurqxju7u4olUqYkVg0Pz9PKBQimUwSDAZ5eHjA0N/fz8TEBIa9vT1qkVgwMjLCwsICmqYRDoepVqs8m52dRQjB8fEx8XicWiQ19PX1sbKywuTkJIlEgpdUVUXXdaampsjlctQiqCEQCHBzc0MymeR/hBDk83lyuRxWCEwoikJvby/j4+Pous5LTqcTQzwexyqJia6uLtxuN/f39/zL7XYTjUbxer309PTQ2tqKVRITbW1t+P1+XC4XxWIRw+joKOFwmOHhYU5PT6lWq1QqFaySmCiXy1QqFTY3Nzk4OMDn8+HxeFAUhbW1NSKRCKlUCq/Xi1USE/l8nrGxMSKRCDMzMxg0TWN/f59sNouu69ze3nJxcYFVkhp2dnY4OjpiaGgIw+HhIdfX1zzz+Xycn59jlcSCQqHA1tYWr+ns7MQqwRt0d3fjcDjIZDJYJXgDKSU2m416CN7A7/fT0tJCPQRwQoMGBgYQQlCHEwH8okHZbJbHx0eurq6wKGPjSQyY5mP9BKJ2nqSBIvAJcPG+ToAo8AMo/wW9pc9PVN6/VgAAAABJRU5ErkJgggAAAAIAAAABAAAA/////wEAAAAAAAAAAAAAAAEAAQABAAAAAB5rAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
        "hash": "BIT_SAMPLING",
        "boost": 2.1,
        "limit": 100
      }
    }
  }
}'

Results in the following error:

{
  "took": 77,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 4,
    "failed": 1,
    "failures": [
      {
        "index": "digit_recognizer",
        "shard": 2,
        "status": 500,
        "reason": "QueryPhaseExecutionException[[digit_recognizer][2]: query[filtered(image.CEDD.hash.BIT_SAMPLING,[1903, 1139, 3287, 2053, 3462, 31, 3771, 2619, 2800, 1156, 3427, 1547, 2963, 2514, 54, 2615, 92, 3889, 1420, 1063, 1420, 2252, 1352, 4054, 1985, 2649, 3935, 3715, 2188, 1853, 1760, 3958, 3233, 1181, 2210, 2277, 2487, 3780, 2495, 2638, 1722, 2286, 1989, 2191, 1754, 353, 206, 588, 713, 159, 891, 3237, 2154, 2933, 3317, 3719, 2381, 164, 3008, 2457, 2223, 1131, 223, 1066, 1326, 1630, 108, 1240, 811, 2069, 3380, 2128, 3063, 1094, 2666, 2321, 3275, 3008, 154, 402, 2982, 1699, 1093, 1056, 3367, 2065, 1342, 659, 3793, 2259, 3581, 373, 3398, 3896, 2975, 1065, 2846, 2185, 779, 2817],100,image.CEDD,CEDD^2.1)->cache(_type:digit)],from[0],size[10]: Query Failed [Failed to execute main query]]; nested: AbstractMethodError[org.apache.lucene.search.Weight.scorer(Lorg/apache/lucene/index/AtomicReaderContext;Lorg/apache/lucene/util/Bits;)Lorg/apache/lucene/search/Scorer;];"
      }
    ]
  },
  "hits": {
    "total": 0,
    "max_score": null,
    "hits": []
  }
}

SearchPhaseExecutionException when search with base64

I have SearchPhaseExecutionException error when I run this query

https://gist.github.com/woohoou/618010bd05ac8049e0ff

with this mapping

https://gist.github.com/woohoou/f52e92850e48c8fa67c4

{"error":"SearchPhaseExecutionException[Failed to execute phase [query_fetch], all shards failed; shardFailures {[_T4dwGt_RESzYUlhxp2YDQ][dedecora_application_renders_development][0]: QueryPhaseExecutionException[[dedecora_application_renders_development][0]: query[filtered(image_64.CEDD.hash.BIT_SAMPLING,[524, 1074, 3174, 2267, 1410, 22, 3792, 2489, 2738, 679, 3915, 1825, 2473, 2641, 1203, 2165, 2653, 3573, 404, 1060, 832, 3358, 92, 3027, 1603, 2139, 462, 787, 1582, 2495, 2286, 3542, 3305, 1169, 2732, 1646, 486, 3780, 3002, 1038, 1242, 2106, 4036, 467, 154, 1478, 1166, 1630, 2755, 571, 2825, 1772, 2216, 821, 2161, 2711, 333, 3873, 832, 2328, 2472, 1135, 218, 7, 1317, 3608, 120, 2521, 837, 2390, 2937, 2934, 2719, 3090, 606, 3569, 1730, 2519, 410, 850, 4005, 902, 3175, 1440, 3373, 3584, 1309, 723, 743, 3331, 293, 947, 3941, 3761, 2763, 936, 3004, 2289, 100, 3495],100,image_64.CEDD,CEDD^2.1)->cache(_type:render)],from[0],size[10]: Query Failed [Failed to execute main query]]; nested: AbstractMethodError[org.apache.lucene.search.Weight.scorer(Lorg/apache/lucene/index/AtomicReaderContext;Lorg/apache/lucene/util/Bits;)Lorg/apache/lucene/search/Scorer;]; }]","status":500}

I'm running this version with plugin 1.2.0

curl -XGET http://localhost:9200
{
  "status" : 200,
  "name" : "Mary Zero",
  "version" : {
    "number" : "1.3.2",
    "build_hash" : "dee175dbe2f254f3f26992f5d7591939aaefd12f",
    "build_timestamp" : "2014-08-13T14:29:30Z",
    "build_snapshot" : false,
    "lucene_version" : "4.9"
  },
  "tagline" : "You Know, for Search"
}

Am I doing something wrong?, or is a bug?

MergeMappingException

when I try

curl -XPUT 'localhost:9200/test/test/_mapping' -d '{
    "test": {
        "properties": {
            "my_img": {
                "type": "image",
                "feature": {
                    "CEDD": {
                        "hash": "BIT_SAMPLING"
                    },
                    "JCD": {
                        "hash": ["BIT_SAMPLING", "LSH"]
                    },
                    "FCTH": {}
                },
                "metadata": {
                    "jpeg.image_width": {
                        "type": "string",
                        "store": "yes"
                    },
                    "jpeg.image_height": {
                        "type": "string",
                        "store": "yes"
                    }
                }
            }
        }
    }
}' 

with elasticsearch1.0.1 and elasticsearch-image1.2.0, it return {"error":"MergeMappingException[Merge failed with failures {[mapper [my_img] of different type, current_type [string], merged_type [ImageMapper]]}]","status":400}, how should I to solve it?

Problem with dependencies on mvn clean package

If i run command mvn clean package then it will rise error

[INFO] Internal error in the plugin manager executing goal 'com.carrotsearch.randomizedtesting:junit4-maven-plugin:2.0.15:junit4': Unable to load the mojo 'com.carrotsearch.randomizedtesting:junit4-maven-plugin:2.0.15:junit4' in the plugin 'com.carrotsearch.randomizedtesting:junit4-maven-plugin'. A required class is missing: Lorg/apache/maven/repository/RepositorySystem;

If i run command mvn compile then i get

[WARNING] POM for 'com.github.kzwang:lire:pom:0.9.4-kzwang-beta1:compile' is invalid.

build is successful but target directory doesn't contain any .jar file

Best regards,
patS

Demo Link Not Working.

Hi All,

I am trying to check plugin demo link..but it looks demo link is now working.

Thanks,
Sumit

IndexMissingException[[test] missing

[elasticsearch-1.2.2]$ curl -XPUT 'localhost:9201/test/test/_mapping' -d '{

"test": {
    "properties": {
        "my_img": {
            "type": "image",
            "feature": {
                "CEDD": {
                    "hash": "BIT_SAMPLING"
                },
                "JCD": {
                    "hash": ["BIT_SAMPLING", "LSH"]
                },
                "FCTH": {}
            },
            "metadata": {
                "jpeg.image_width": {
                    "type": "string",
                    "store": "yes"
                },
                "jpeg.image_height": {
                    "type": "string",
                    "store": "yes"
                }
            }
        }
    }
}

}'
{"error":"IndexMissingException[[test] missing]","status":404}

please let me know, how do we solve this issue?

Building for other elasticsearch versions?

Are there any instructions for building these plugins for other versions of Elasticsearch? @kzwang 's version seems to have stopped at 1.1, and @Jmoati 's version stops at 2.1.1. Is there a reason for such specific compatibility, or can this same code be built for other versions of Elasticsearch?

MapperParsingException[failed to parse]; nested: NoSuchMethodError

Adding images seems to return an error. I can't index anything.

curl -XPOST 'localhost:9200/test/test' -d '{ "my_img": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAX0lEQVQYlZWRYQrAIAiFNQ/j6T2ev10v2HDTQQmPyD6foUTv4KmRxPQTeJRGowVVVcxM3H2duH8L+AYjoigV8OMKpw5GPrsvGK07GPkC7zof/floGltznl3KYtoNAoQuatt0CKG31GsAAAAASUVORK5CYII=" }';
{
    "error": "MapperParsingException[failed to parse]; nested: NoSuchMethodError[org.elasticsearch.index.mapper.ParseContext.externalValue(Ljava/lang/Object;)V]; ",
    "status": 400
}

Using es version 1.5.0 on Centos 7

Here's my mapping for confirmation

{
    "test": {
        "mappings": {
            "test": {
                "properties": {
                    "my_img": {
                        "type": "image",
                        "feature": {
                            "JCD": {
                                "hash": [
                                    "BIT_SAMPLING",
                                    "LSH"
                                ]
                            },
                            "FCTH": {},
                            "CEDD": {
                                "hash": [
                                    "BIT_SAMPLING"
                                ]
                            }
                        },
                        "metadata": {
                            "jpeg.image_height": {
                                "type": "string",
                                "store": true
                            },
                            "jpeg.image_width": {
                                "type": "string",
                                "store": true
                            }
                        }
                    }
                }
            }
        }
    }
}

And the plugins for the node show the plugin for "image" added.

I'm pretty sure it's probably me doing something dumb, can you provide any help advice if so?

MapperParsingException[failed to parse]; nested: NullPointerException;

When I try to index my images, I get: RequestError:
TransportError(400, u'MapperParsingException[failed to parse]; nested: NullPointerException; ')

When I try the same operation on an elastic search where the plug in is not installed, it works just fine.

I'm encoding the images into a BASE64 in Python.

Here's the mapping:
curl -XPUT 'localhost:9200/imagesearch/images/_mapping' -d '{
"images": {
"properties": {
"my_img": {
"type": "image",
"feature": {
"CEDD": {
"hash": "BIT_SAMPLING"
},
"JCD": {
"hash": ["BIT_SAMPLING", "LSH"]
},
"FCTH": {}
},
"metadata": {
"jpeg.image_width": {
"type": "string",
"store": "yes"
},
"jpeg.image_height": {
"type": "string",
"store": "yes"
}
}
}
}
}
}'

Below is what the query string looks like. Is there anything wrong with it?

{'my_img': 'AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAIJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAQAABiAG8AbwBrYndzcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAGYAYQBjAGUAYgBvAG8Aa2J3c3BibG9iAAAA+mJwbGlzdDAw2QECAwQFBgcICQoLCgsKCxARCl1TaG93U3RhdHVzQmFyW1Nob3dTaWRlYmFyW1Nob3dQYXRoYmFyW1Nob3dUb29sYmFyW1Nob3dUYWJWaWV3XxAUQ29udGFpbmVyU2hvd1NpZGViYXJcV2luZG93Qm91bmRzXFNpZGViYXJXaWR0aF8QFVByZXZpZXdQYW5lVmlzaWJpbGl0eQgJCAkICV8QGXt7MTU1NiwgMjc1fSwgezc3MCwgNDM3fX0Q7QgIGyk1QU1ZcH2KoqOkpaanqMTGAAAAAAAAAQEAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAMcAAAAIAGYAYQBjAGUAYgBvAG8Aa3ZTcm5sb25nAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAACCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAAAAAAAAQAAAIAAAAABAAABAAAAAAAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.