Metadata-Version: 2.1
Name: memery
Version: 0.0.5
Summary: search your image collections with natural language
Home-page: https://github.com/deepfates/memery/tree/main/
Author: Max Anton Brewer
Author-email: deepfates@gmail.com
License: MIT License
Keywords: python
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: annoy (==1.17.0)
Requires-Dist: torchvision (==0.8.2)
Requires-Dist: tqdm (==4.49.0)
Requires-Dist: ipywidgets (==7.5.1)
Requires-Dist: torch (==1.7.1)
Requires-Dist: ipython (==7.23.1)
Requires-Dist: Pillow (==8.2.0)
Requires-Dist: typer (==0.3.2)
Requires-Dist: streamlit (==0.83.0)
Requires-Dist: clip-by-openai (==0.1.1.5)

# memery
> Search over large image datasets with natural language and computer vision!


## Install

The necessary CLIP and torch packages will be installed by pip. You might want to make sure you have a sane CUDA environment before and after this step if you're trying to use GPU. If you don't have a GPU, `memery` should still work on your CPU. 

If you have any trouble please **open an issue on Github**! I want to make this package useful for as many people as possible. Help me know what's going wrong :)

`pip install memery`

## How to use

### Use GUI

The browser GUI is a Streamlit app. You can run it from the command line with 

`memery serve`

or set up a desktop shortcut to use it from your menu.

If you're in a Jupyter environment, you can summon the GUI directly into an output cell like this:


```
from memery.gui import appPage

```

```
app = appPage()
display(app)
```


    <memery.gui.appPage at 0x7f6c0e7c80d0>


### Use CLI

From the command line, you can use `memery` on any folder and it will search for images recursively, returning a list object to stdout.

Pass the --n flag to control how many images are returned (default 10).

`memery PATH/TO/IMAGE/FOLDER 'query' --n 20
`

### Use as a library

Simply use `queryFlow` to search over a folder recursively! The folder will be indexed, if an index doesn't already exist. Then any new images will be CLIP-encoded, an Annoy treemap built, and a list of ranked filenames returned.

```
from memery.core import queryFlow
from memery.gui import get_grid
```

```
ranked = queryFlow('./images', 'dad joke')

print(ranked[:5])
```


