图像嵌入式

image-embeddings的Python项目详细描述


图像嵌入

pypici

使用efficientnet为检索提供嵌入。在

为什么要回购?嵌入技术是一种应用广泛的技术,在科学界是众所周知的。但它似乎没有得到充分利用,对大多数工程师来说并不是很出名。我想展示将事物表示为嵌入是多么容易,以及这将解锁多少应用程序。先签出demo!在

knn example

工作流程

  1. 下载一些图片
  2. 对它们进行推理以获得嵌入
  3. 简单的knn例子,要理解它的意义:点击一些图片并查看knn

简单安装

运行pip install image_embeddings

工作流示例

  1. 运行image_embeddings save_examples_to_folder --images_count=1000 --output_folder=tf_flower_images,这将从https://www.tensorflow.org/datasets/catalog/tf_flowers检索1000个图像文件(但您也可以选择任何其他数据集)
  2. 使用image_embeddings write_tfrecord --image_folder=tf_flower_images --output_folder=tf_flower_tf_records --shards=10生成tf记录
  3. image_embeddings run_inference --tfrecords_folder=tf_flower_tf_records --output_folder=tf_flower_embeddings运行推断
  4. 对它们进行随机knn搜索image_embeddings random_search --path=tf_flower_embeddings

如果您想在numpy中使用嵌入(在其他语言中),请运行image_embeddings embeddings_to_numpy --input_path=tf_flower_embeddings --output_path=tf_flower_numpy。尤其可以在web demo中使用

$ image_embeddings random_search --path=tf_flower_embeddings
image_roses_261
160.83 image_roses_261
114.36 image_roses_118
102.77 image_roses_537
92.95 image_roses_659
88.49 image_roses_197

有关更多详细信息,请浏览Simple notebook。在

你可以在本地或try it in colab

From scratch笔记本提供了如何从头开始构建的说明。在

美国石油学会

图像_嵌入式.downloader

从tensorflow数据集下载程序。任何其他的图像集都可以代替

图像_embeddings.downloader.save_examples_到_文件夹(output_folder,images_count=1000,dataset=“tf_flowers”)

https://www.tensorflow.org/datasets/catalog/tf_flowers保存到文件夹 也适用于其他tf数据集

图像_嵌入.推理

从图像文件中创建tf recor,并使用efficientnet模型应用推理。其他模型也可以使用。在

图像_embeddings.reference.write\tfrecord文件夹从映像文件夹写入tf记录

图像_嵌入.推理.运行推理(tfrecords_文件夹,output_folder,batch_size=1000)

对提供的tf记录运行推断,并将其保存到文件夹中

图像_嵌入.knn

阅读、建立索引和应用搜索的方便方法。这些方法作为示例提供。 直接对较大的数据集使用faiss。在

图像_嵌入.knn.read_嵌入(路径)

从路径运行嵌入并返回一个元组

  • 嵌入矩阵
  • id命名字典
  • 名称到标识字典

图像_embeddings.knn.build_索引(emb)

使用提供的嵌入矩阵构建一个简单的faiss内部产品索引

图像_嵌入.knn.搜索(索引,id_to_name,emb,k=5)

搜索查询嵌入并返回(距离,名称)图像数组

图像_嵌入.knn.显示图片(图像路径,图像名称)

在jupyter中显示给定路径和图像名称中的一张图片

图像_embeddings.knn.display_结果(图像路径,结果)

显示搜索方法的结果

图像_嵌入.knn.随机搜索(路径)

加载嵌入项,对其应用随机搜索并显示结果

图像_嵌入件.knn.嵌入件(输入路径,输出文件夹)

从输入文件夹以parquet形式加载嵌入项,并将其另存为

  • 用于id->;名称映射的json
  • 嵌入件的数量

对于从其他语言读取嵌入特别有用

高级安装

先决条件

请确保使用python>=3.6和{}的最新版本和 setuptools

^{pr2}$

建议在新的虚拟环境中安装image_embeddings。为 示例

python3 -m venv image_embeddings_env
source image_embeddings_env/bin/activate
pip install -U pip setuptools
pip install image_embeddings

使用Pip

pip install image_embeddings

来源

首先,使用

git clone https://github.com/rom1504/image_embeddings.git
cd image_embeddings
make install

要安装开发工具和测试需求,请运行

make install-dev

测试

要在当前环境中运行单元测试,请运行

make test

要在新的虚拟环境中运行lint+单元测试, 跑

make venv-lint-test

皮棉

运行black --check

make lint

使用black自动格式化代码

make black

任务

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java不兼容类型:MainActivity无法转换为LifecycleOwner   java安卓是一种更有效的读取大文本文件的方法   java导出LWJGL本地人与项目?(IntelliJ IDEA)   JDK更新后,JavaJShell不再在下一行打印输出   父类对象上的继承Java比较子属性   Java:有没有一个容器可以有效地结合HashMap和ArrayList?   安卓 Java对象指针   java在annotationdriven Spring MVC应用程序中实现大气   java 安卓源代码构建应用找不到安卓supportv4。罐子   文件系统上的抽象层和Java中的jar/zip   java在水平滚动视图中添加多个图像?   java如何从firebase实时数据库中获取字符串数组   WIndows 10工作站上的java未满足链接错误   java命令在终端中工作,但在使用过程中出现“无结束引号”错误。执行官