diff --git a/README.md b/README.md index 553a48b..2b9df0d 100644 --- a/README.md +++ b/README.md @@ -6,32 +6,19 @@ Authors: derekdqc, shiyu22 This pipeline is used to **extract the feature vector of the image**. First step is to normalize the image, and then use resnet50 model to generate the vector. -The pipeline parses [the yaml file](./image_embedding_resnet50.yaml), which declares some components we call **Operator** and **DataFrame**. Next, we will introduce the interface, show how to use it and how it works, have fun with it! - ## Interface -`towhee.pipeline(task: str, fmc: FileManagerConfig = FileManagerConfig(), branch: str = 'main', force_download: bool = False)` [\[source\]](https://github.com/towhee-io/towhee/blob/main/towhee/__init__.py) - -**params:** - -- **task**(str): task name or pipeline repo name. -- **fmc**(FileManagerConfig): optional, file manager config for the local instance, default is a default FileManagerConfig obejct. -- **branch**(str): optional, which branch to use for operators/pipelines on hub, defaults to 'main'. -- **force_download**(bool): optional, whether to redownload pipeline and operators, default is False. - -**return:** - -- **_PipelineWrapper**, an instance of the wrapper class around `Pipeline`. +**Args:** -When we declare a pipeline object with a specific task, such as `towhee/image-embedding-resnet50` in this repo, it will run according to the Yaml file, and the input and output are: +- img_tensor(`PIL.Image`), -**inputs:** + The image to be encoded. -- **img_tensor**(PIL.Image), the image to be encoded. +**Returns:** -**outputs:** +- (`Tuple[('cnn', numpy.ndarray)]`) -- **cnn**(numpy.ndarray), the embedding of the image. + The embedding of the image. ## How to use @@ -56,14 +43,6 @@ $ pip3 install towhee ## How it works -First of all, you need to learn the pipeline and operator in Towhee architecture: - -- **Pipeline**: A `Pipeline` is a single machine learning task that is composed of several operators. Operators are connected together internally via a directed acyclic graph. - -- **Operator**: An `Operator` is a single node within a pipeline. It contains files (e.g. code, configs, models, etc...) and works for reusable operations (e.g., preprocessing an image, inference with a pretrained model). - -This pipeline includes four functions: `_start_op`, `towhee/transform-image`, `towhee/resnet50-image-embedding` and `_end_op`. It is necessary to ensure that the input and output of the four Operators correspond to each other, and the input and output data types can be defined by DataFrame. - -![img](./pic/pipeline.png) +You can learn the pipeline and operator in [Towhee architecture](https://github.com/towhee-io/towhee#towhee-architecture). This pipeline includes two main functions: [towhee/transform-image](https://hub.towhee.io/towhee/transform-image) and [towhee/resnet50-image-embedding](https://hub.towhee.io/towhee/resnet50-image-embedding). It is necessary to ensure that the input and output of the four Operators correspond to each other, and the input and output data types can be defined by DataFrame. -Among the four Operator, `_start_op` and `_end_op` are required in any Pipeline, and they are used to start and end the pipeline in the Towhee system. For the other two Operators, please refer to [towhee/transform-image](https://hub.towhee.io/towhee/transform-image) and [towhee/resnet50-image-embedding](https://hub.towhee.io/towhee/resnet50-image-embedding). +![img](./readme_res/pipeline.png) diff --git a/pic/pipeline.png b/readme_res/pipeline.png similarity index 100% rename from pic/pipeline.png rename to readme_res/pipeline.png diff --git a/test_data/test.jpg b/test_data/test.jpg deleted file mode 100755 index 8fdc2b3..0000000 Binary files a/test_data/test.jpg and /dev/null differ diff --git a/test_image_embedding_resnet50.py b/test_image_embedding_resnet50.py deleted file mode 100644 index 8ffe627..0000000 --- a/test_image_embedding_resnet50.py +++ /dev/null @@ -1,18 +0,0 @@ -import os -import unittest -from towhee import pipeline -from PIL import Image - - -class TestImageEmbeddingResnet50(unittest.TestCase): - def test_image_embedding_resnet50(self): - img_src = './test_data/test.jpg' - test_img = Image.open(img_src) - dimension = 1000 - embedding_pipeline = pipeline('towhee/image-embedding-resnet50') - embedding = embedding_pipeline(test_img) - self.assertEqual((1, dimension), embedding[0][0].shape) - - -if __name__ == '__main__': - unittest.main()