{ "info": { "author": "Christian Safka", "author_email": "christiansafka@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6" ], "description": "# Image 2 Vec with PyTorch\n\nMedium post on building the first version from scratch: https://becominghuman.ai/extract-a-feature-vector-for-any-image-with-pytorch-9717561d1d4c\n\n### Applications of image embeddings:\n - Ranking for recommender systems\n - Clustering images to different categories\n - Classification tasks\n\n## Available models\n - Resnet-18 (CPU, GPU)\n \t- Returns vector length 512\n - Alexnet (CPU, GPU)\n \t- Returns vector length 4096\n\n## Installation\n\nTested on Python 3.6\n\n#### Dependencies\n\nPytorch: http://pytorch.org/\n\nPillow: ```pip install Pillow```\n\n##### For running the example, you will additionally need:\n * Sklearn ```pip install scikit-learn```\n\n## Running the example\n```git clone https://github.com/christiansafka/img2vec.git```\n\n```cd img2vec/example```\n\n```python test_img_to_vec.py```\n\n#### Expected output\n```\nWhich filename would you like similarities for?\ncat.jpg\n0.72832 cat2.jpg\n0.641478 catdog.jpg\n0.575845 face.jpg\n0.516689 face2.jpg\n\nWhich filename would you like similarities for?\nface2.jpg\n0.668525 face.jpg\n0.516689 cat.jpg\n0.50084 cat2.jpg\n0.484863 catdog.jpg\n```\nTry adding your own photos!\n\n## Using img2vec as a library\n```python\nfrom img_to_vec import Img2Vec\nfrom PIL import Image\n\n# Initialize Img2Vec with GPU\nimg2vec = Img2Vec(cuda=True)\n\n# Read in an image\nimg = Image.open('test.jpg')\n# Get a vector from img2vec\nvec = img2vec.get_vec(img)\n# Or submit a list\nvectors = img2vec.get_vec(list_of_PIL_images)\n```\n#### Img2Vec Params\n**cuda** = (True, False)   # Run on GPU?     default: False
\n**model** = ('resnet-18', 'alexnet')   # Which model to use?     default: 'resnet-18'
\n\n## Advanced users \n----\n### Additional Parameters\n\n**layer** = 'layer_name' or int   # For advanced users, which layer of the model to extract the output from.   default: 'avgpool'
\n**layer_output_size** = int   # Size of the output of your selected layer\n\n### [Resnet-18](http://pytorch-zh.readthedocs.io/en/latest/_modules/torchvision/models/resnet.html)\nDefaults: (layer = 'avgpool', layer_output_size = 512)
\nLayer parameter must be an string representing the name of a layer below\n```python\nconv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, bias=False)\nbn1 = nn.BatchNorm2d(64)\nrelu = nn.ReLU(inplace=True)\nmaxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)\nlayer1 = self._make_layer(block, 64, layers[0])\nlayer2 = self._make_layer(block, 128, layers[1], stride=2)\nlayer3 = self._make_layer(block, 256, layers[2], stride=2)\nlayer4 = self._make_layer(block, 512, layers[3], stride=2)\navgpool = nn.AvgPool2d(7)\nfc = nn.Linear(512 * block.expansion, num_classes)\n```\n### [Alexnet](http://pytorch-zh.readthedocs.io/en/latest/_modules/torchvision/models/alexnet.html)\nDefaults: (layer = 2, layer_output_size = 4096)
\nLayer parameter must be an integer representing one of the layers below\n```python\nalexnet.classifier = nn.Sequential(\n 7. nn.Dropout(), < - output_size = 9216\n 6. nn.Linear(256 * 6 * 6, 4096), < - output_size = 4096\n 5. nn.ReLU(inplace=True), < - output_size = 4096\n 4. nn.Dropout(),\t\t < - output_size = 4096\n 3. nn.Linear(4096, 4096),\t < - output_size = 4096\n 2. nn.ReLU(inplace=True), < - output_size = 4096\n 1. nn.Linear(4096, num_classes), < - output_size = 4096\n )\n```\n\n## To-do\n- Benchmark speed and accuracy\n- Add ability to fine-tune on input data\n- Export documentation to a normal place\n- Package for Pip", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/christiansafka/img2vec", "keywords": "img2vec image vector classification pytorch convert", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "img2vec-pytorch", "package_url": "https://pypi.org/project/img2vec-pytorch/", "platform": "", "project_url": "https://pypi.org/project/img2vec-pytorch/", "project_urls": { "Homepage": "https://github.com/christiansafka/img2vec" }, "release_url": "https://pypi.org/project/img2vec-pytorch/0.2.5/", "requires_dist": null, "requires_python": ">=3.6", "summary": "Use pre-trained models in PyTorch to extract vector embeddings for any image", "version": "0.2.5" }, "last_serial": 5949094, "releases": { "0.2.5": [ { "comment_text": "", "digests": { "md5": "cd3d3c86116ddc118ae676dedada2758", "sha256": "668e2f8916b388d6bf749736a45c24dfcb541541a881b9ff71221d431275cb9a" }, "downloads": -1, "filename": "img2vec_pytorch-0.2.5.tar.gz", "has_sig": false, "md5_digest": "cd3d3c86116ddc118ae676dedada2758", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 4187, "upload_time": "2019-10-09T10:51:14", "url": "https://files.pythonhosted.org/packages/94/e6/6f1e8d1918d2272c6b9b61b249bc255973f8b2aa15ed79d8e96fd7423a7a/img2vec_pytorch-0.2.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cd3d3c86116ddc118ae676dedada2758", "sha256": "668e2f8916b388d6bf749736a45c24dfcb541541a881b9ff71221d431275cb9a" }, "downloads": -1, "filename": "img2vec_pytorch-0.2.5.tar.gz", "has_sig": false, "md5_digest": "cd3d3c86116ddc118ae676dedada2758", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 4187, "upload_time": "2019-10-09T10:51:14", "url": "https://files.pythonhosted.org/packages/94/e6/6f1e8d1918d2272c6b9b61b249bc255973f8b2aa15ed79d8e96fd7423a7a/img2vec_pytorch-0.2.5.tar.gz" } ] }