{"id":13642950,"url":"https://github.com/pooya-mohammadi/deep_utils","last_synced_at":"2025-05-16T15:03:14.217Z","repository":{"id":37713192,"uuid":"370968473","full_name":"pooya-mohammadi/deep_utils","owner":"pooya-mohammadi","description":"An open-source toolkit which is full of handy functions, including the most used models and utilities for deep-learning practitioners!","archived":false,"fork":false,"pushed_at":"2025-05-07T18:52:06.000Z","size":3147,"stargazers_count":110,"open_issues_count":7,"forks_count":16,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-16T15:02:42.279Z","etag":null,"topics":["augmentation","coco","computer-vision","cutmix","deep-learning","face-detection","face-recognition","machine-learning","modelcheckpoint","nlp","object-detection","python","pytorch","senet","tensorflow","utils","vggface2","yolov5"],"latest_commit_sha":null,"homepage":"https://github.com/pooya-mohammadi/deep_utils","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pooya-mohammadi.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-05-26T08:53:45.000Z","updated_at":"2025-05-07T18:51:59.000Z","dependencies_parsed_at":"2024-03-22T19:25:42.416Z","dependency_job_id":"8356527e-6ef4-411a-96a6-ad569e44377b","html_url":"https://github.com/pooya-mohammadi/deep_utils","commit_stats":{"total_commits":610,"total_committers":8,"mean_commits":76.25,"dds":0.3885245901639345,"last_synced_commit":"5ff9e95ea9f0074d75809e95dffadecaf4681295"},"previous_names":[],"tags_count":148,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pooya-mohammadi%2Fdeep_utils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pooya-mohammadi%2Fdeep_utils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pooya-mohammadi%2Fdeep_utils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pooya-mohammadi%2Fdeep_utils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pooya-mohammadi","download_url":"https://codeload.github.com/pooya-mohammadi/deep_utils/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254553936,"owners_count":22090415,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["augmentation","coco","computer-vision","cutmix","deep-learning","face-detection","face-recognition","machine-learning","modelcheckpoint","nlp","object-detection","python","pytorch","senet","tensorflow","utils","vggface2","yolov5"],"created_at":"2024-08-02T01:01:38.490Z","updated_at":"2025-05-16T15:03:14.167Z","avatar_url":"https://github.com/pooya-mohammadi.png","language":"Python","funding_links":[],"categories":["Python","Other Versions of YOLO"],"sub_categories":[],"readme":"[![Downloads](https://static.pepy.tech/badge/deep_utils)](https://pepy.tech/project/deep_utils) [![PyPI](https://img.shields.io/pypi/v/deep_utils.svg)](https://pypi.python.org/pypi/deep_utils)\n\n\u003cdiv id=\"top\"\u003e\u003c/div\u003e\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/pooya-mohammadi/deep_utils\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/pooya-mohammadi/deep_utils/master/images/logo/deep_utils.png\" alt=\"Logo\"\u003e\n  \u003c/a\u003e\n\n\u003ch3 align=\"center\"\u003eDeep Utils\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    A toolkit for deep-learning practitioners!\n\n\u003c/div\u003e\n\nThis repository contains the most frequently used deep learning models and functions. **Deep_Utils** is still under\nheavy development, so take into consideration that many features may change in the future and make sure to install the\nlatest version using pypi.\n\n## Table of contents\n\n* [About The Project](#about-the-project)\n* [Installation](#installation)\n* [Vision](#vision)\n    * [Face Detection](#face-detection)\n        * [MTCNN](#mtcnn)\n    * [Object Detection](#object-detection)\n        * [yolov5](#yolov5)\n    * [Visual Grounding](#visual-grounding)\n        * [Grounding DINO](#grounding-dino)\n    * [Image Editing](#image-editing)\n        * [GLIDE](#glide)\n* [NLP](#NLP)\n    * [NER](#NER)\n        * [Replacement Augmentation](replacement-augmentation)\n        * [Remove Augmentation](remove-augmentation)\n* [Augmentation](#augmentation)\n    * [CutMix](#cutmix)\n* [Utils](#utils)\n    * [DictNamedTuple](#dictnametuple)\n    * [multi-label-stratify](#multi-label-stratify)\n* [Tests](#tests)\n* [Contributing](#Contributing)\n* [Licence](#Licence)\n* [Collaborators](#Collaborators)\n* [Contact](#Contact)\n* [References](#references)\n* [Citation](#citation)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## About the Project\n\nMany deep learning toolkits are available on GitHub; however, we couldn't find one that would suit our needs.\nSo, we created this improved one. This toolkit minimizes the deep learning teams' coding efforts to utilize the\nfunctionalities of famous deep learning models such as MTCNN in face detection, yolov5 in object detection, and many\nother repositories and models in various fields. In addition, it provides functionalities for preprocessing, monitoring,\nand manipulating datasets that can come in handy in any programming project.\n\n**What we have done so far:**\n\n* The outputs of all the models are standard numpy\n* Single predict and batch predict of all models are ready\n* handy functions and tools are tested and ready to use\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Installation:\n\n```bash\n    # pip: recommended\n    pip install -U deep-utils\n\n    # repository\n    pip install git+https://github.com/pooya-mohammadi/deep_utils.git\n\n    # clone the repo\n    git clone https://github.com/pooya-mohammadi/deep_utils.git deep_utils\n    pip install -U deep_utils\n```\n\n### Installation types:\n\n1. minimal installation:\n    1. `pip install deep-utils`\n2. minial vision installation\n    1. `pip install deep-utils[cv]`\n3. tensorflow installation:\n    1. `pip install deep-utils[tf]`\n4. torch installation:\n    1. `pip install deep-utils[torch]`\n5. torchvision installation:\n    1. `pip install deep-utils[torchvision]`\n6. torch_transformers installation:\n    1. `pip install deep-utils[torch_transformers]`\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n# Vision\n\nWe support two subsets of models in Computer Vision.\n\n* Face Detection\n* Object Detection\n\n## Face Detection\n\nWe have gathered a rich collection of face detection models which are mentioned in the following list. If you notice any\nmodel missing, feel free to open an issue or create a pull request.\n\n### MTCNN\n\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/pooya-mohammadi/Face/blob/master/_02_mtcnn_tf1/deep_utils_mtcnn.ipynb)\n\n1. After Installing the library, import deep_utils and instantiate the model:\n\n```python\nfrom deep_utils import face_detector_loader, list_face_detection_models\n\n# This line will print all the available models\nprint(list_face_detection_models())\n\n# Create a face detection model using MTCNN-Torch\nface_detector = face_detector_loader('MTCNNTorchFaceDetector')\n```\n\n2. The model is instantiated, Now let's Detect an image:\n\n```python\nimport cv2\nfrom deep_utils import show_destroy_cv2, Box, download_file, Point\n\n# Download an image\ndownload_file(\n    \"https://raw.githubusercontent.com/pooya-mohammadi/deep_utils/master/examples/vision/data/movie-stars.jpg\")\n\n# Load an image\nimg = cv2.imread(\"movie-stars.jpg\")\n\n# show the image. Press a button to proceed\nshow_destroy_cv2(img)\n\n# Detect the faces\nresult = face_detector.detect_faces(img, is_rgb=False)\n\n# Draw detected boxes on the image.\nimg = Box.put_box(img, result.boxes)\n\n# Draw the landmarks\nfor landmarks in result.landmarks:\n    Point.put_point(img, list(landmarks.logs()), radius=3)\n\n# show the results\nshow_destroy_cv2(img)\n```\n\nThe result:\n\n\u003cimg src=\"https://raw.githubusercontent.com/pooya-mohammadi/deep_utils/main/examples/vision/data/movie-starts-mtccn-torch.jpg\" alt=\"Logo\" \u003e\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Object Detection\n\n### YoloV5\n\nYoloV5 by far is one of the top-5 most used object detection models. The training process is straight forward and the\nresults\nare spectacular. However, using a trained model can be very challenging because of several files that yolov5's model\nneeds in production.\nTo tackle this issue we have wrapped yolov5's models in a simple module whose usage will be illustrated in the following\nsection.\u003cbr/\u003e\n\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/pooya-mohammadi/deep-utils-notebooks/blob/main/vision/object-detection/yolov5/deep-utils-yolov5.ipynb)\n\n1. After Installing the library, import deep_utils and instantiate the model:\n\n```python\n# import the model\nfrom deep_utils import YOLOV5TorchObjectDetector\n\n# instantiate with the default parameters\nyolov5 = YOLOV5TorchObjectDetector()\n# print the parameters\nprint(yolov5)\n```\n\n2. Download and visualize the test image\n\n```python\nimport cv2\nfrom deep_utils import Box, download_file, Point, show_destroy_cv2\nfrom PIL import Image\n\n# Download an image\ndownload_file(\"https://raw.githubusercontent.com/pooya-mohammadi/deep-utils-notebooks/main/vision/images/dog.jpg\")\n\n# Load an image\nbase_image = cv2.imread(\"dog.jpg\")\n\n# pil.Image is used for visualization\nImage.fromarray(base_image[..., ::-1])  # convert to rgb\n# visualize using oepncv\n# show_destroy_cv2(base_image)\n```\n\nThe result:\n\n\u003cimg src=\"https://raw.githubusercontent.com/pooya-mohammadi/deep-utils-notebooks/main/vision/images/dog.jpg\" alt=\"Logo\" \u003e\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n3. Detect and visualize Objects\n\n```python\n# Detect the objects\n# the image is opened by cv2 which results to a BGR image. Therefore the `is_rgb` is set to `False`\nresult = yolov5.detect_objects(base_image, is_rgb=False, confidence=0.5)\n\n# Draw detected boxes on the image.\nimg = Box.put_box_text(base_image,\n                       box=result.boxes,\n                       label=[f\"{c_n} {c}\" for c_n, c in zip(result.class_names, result.confidences)])\n\n# pil.Image is used for visualization\nImage.fromarray(img[..., ::-1])  # convert to rgb\n# visualize using oepncv\n# show_destroy_cv2(img)\n```\n\n\u003cimg src=\"https://raw.githubusercontent.com/pooya-mohammadi/deep-utils-notebooks/main/vision/images/dog_yolov5.jpg\" alt=\"Logo\" \u003e\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Visual Grounding\n\n### Grounding DINO\n\nDINO is a self-supervised learning method for visual grounding. It is a simple and efficient method that can be used for\nvisual grounding. Let's see how we can use it in `deep_utils`:\n\n#### Download a sample image\n\n```commandline\nwget -q https://github.com/pooya-mohammadi/deep_utils/releases/download/1.0.2/golsa_in_garden.jpg\n```\n\n```python\nfrom PIL import Image\nfrom deep_utils import Text2BoxVisualGroundingDino\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nmodel = Text2BoxVisualGroundingDino()\n\nimg_path = \"golsa_in_garden.jpg\"\nimg = np.asarray(Image.open(img_path))\n\noutput = model.text_to_box(text=\"Hen\", img=img)\nprint(output.boxes, output.scores, output.labels)\nannotated_img = model.annotate(img, output)\nplt.axis(\"off\")\nplt.imshow(annotated_img)\n```\n\nOutput Image:\u003cbr/\u003e\n\u003cimg src=\"https://github.com/pooya-mohammadi/deep_utils/releases/download/1.0.2/golsa_in_garden_dino.png\" width=\"400\"\u003e\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Image Editing\n\n### GLIDE\n\nGLIDE is a simple and efficient method for image editing/inpainting. It is developed by OpenAI.\n\n#### Download a sample image\n\n```commandline\nwget -q https://github.com/pooya-mohammadi/deep_utils/releases/download/1.0.2/golsa_in_garden.jpg\n```\n\n**Input Image**:\u003cbr/\u003e\n\u003cimg src=\"https://github.com/pooya-mohammadi/deep_utils/releases/download/1.0.2/golsa_in_garden.jpg\" width=\"400\"\u003e\n\n```python\nimport matplotlib.pyplot as plt\nfrom deep_utils import ImageEditingGLIDE\nfrom PIL import Image\n\npil_img = Image.open(\"golsa_in_garden.jpg\")\n# position of the editing box. Here the hen in the image. The  \nbox = [340.6672668457031, 403.7683410644531, 372.0812072753906, 439.3288879394531]\nglide_model = ImageEditingGLIDE()\ntext = \"dead leaves\"\nedited_image = glide_model.edit_box(pil_img, text=text, box=box)\nplt.imshow(edited_image)\n```\n\n**Output Image**: The `hen` is removed and replaced with `dead leaves` as the background\u003cbr/\u003e\n\u003cimg src=\"https://github.com/pooya-mohammadi/deep_utils/releases/download/1.0.2/glide_output.jpg\" width=\"400\"\u003e\n\n**Note:** The best way to get the box is to use the `Text2BoxVisualGroundingDino` model. See the example in the previous\nsection. Or check the following full sample [easy_image_editing](https://github.com/pooya-mohammadi/easy_image_editing)\n\n## NLP\n\nIn this section, models and utilities for nlp projects are provided\n\n### NER\n\nName Entity Recognition\n\n#### multi-label-stratify\n\n## Augmentation\n\n### CutMix\n\n\u003ca href=\"https://colab.research.google.com/github/pooya-mohammadi/deep-utils-notebooks/blob/main/augmentation/cutmix/cutmix_tf.ipynb\" target=\"_parent\"\u003e \u003cimg src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\" /\u003e \u003c/a\u003e \n\nCutMix is one of the best augmentation methods that's proven to be very effective in different vision-based project.\nTherefore, CutMix is now\navailable on `deep_utils` to be used both for segmentation and classification tasks.Let some examples:\n\n#### Segmentation\n\n```python\nimport cv2\nimport numpy as np\nfrom deep_utils import CutMixTF, group_show, repeat_dimension\n\n# creating random images, the code for this section can be found in the colab notebook\nimage_a = np.zeros((300, 300, 3), np.uint8) * 255\nmask_a = np.zeros_like(image_a)\npt1 = (150, 100)\npt2 = (100, 200)\npt3 = (200, 200)\n\ntriangle_cnt = np.array([pt1, pt2, pt3])\n\nimage_a = cv2.drawContours(image_a, [triangle_cnt], 0, (0, 255, 0), -1)\nmask_a = cv2.drawContours(mask_a, [triangle_cnt], 0, (255, 255, 255), -1)\n\nimage_b = np.zeros((300, 300, 3), np.uint8) * 255\nmask_b = np.zeros_like(image_b)\n\npt1 = (150, 150)\n\nimage_b = cv2.circle(image_b, pt1, 50, (0, 255, 0), -1)\nmask_b = cv2.circle(mask_b, pt1, 50, (255, 255, 255), -1)\n\n# CutMix for two individual images:\ncutmix_img, cutmix_mask = CutMixTF.seg_cutmix(image_a, mask_a[..., 0], image_b, mask_b[..., 0], beta=1)\n```\n\nThe input and output are as follows:\n\n**Input:**\n\n\u003cimg src=\"https://raw.githubusercontent.com/pooya-mohammadi/deep-utils-notebooks/main/augmentation/cutmix/two_images.jpg\" alt=\"Logo\" \u003e\u003cbr/\u003e\n\n**Output:**\n\n\u003cimg src=\"https://raw.githubusercontent.com/pooya-mohammadi/deep-utils-notebooks/main/augmentation/cutmix/cutmix_two_images.jpg\" alt=\"Logo\" \u003e\n\nAs it illustrated in the above image a section of the triangle and the circle are combined together. By\nchanging `seg_cutmix` to `seg_cutmix_batch` one can use CutMix augmentation for batch of images.\n\n```python\ncutmix_img, cutmix_mask = CutMixTF.seg_cutmix_batch(a_images=batch_img, a_masks=batch_mask[..., 0], beta=1)\n```\n\n**Input:**\n\n\u003cimg src=\"https://raw.githubusercontent.com/pooya-mohammadi/deep-utils-notebooks/main/augmentation/cutmix/batch_img.jpg\" alt=\"cutmix\" \u003e\u003cbr/\u003e\n\n**Output:**\n\n\u003cimg src=\"https://raw.githubusercontent.com/pooya-mohammadi/deep-utils-notebooks/main/augmentation/cutmix/batch_cutmix.jpg\" alt=\"cutmix\" \u003e\n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Utils\n\nIn this section, various utility functions are provided.\n\n### DictNamedTuple\n\nIn this custom data type, we have added the methods of the Dict type to the NamedTuple type. You have access to .get(),\n.values(), .items() alongside all of the functionalities of a NamedTuple. Also, all the outputs of our models are\nDictNamedTuple, and you can modify and manipulate them easily. Let's see how to use it:\n\n```\nfrom deep_utils import dictnamedtuple\n# create a new object\ndict_object = dictnamedtuple(typename='letters', field_names=['firstname', 'lastname'])\n# pass the values\ninstance_dict = dict_object(firstname='pooya', lastname='mohammadi')\n\n# get items and ...\nprint(\"items: \", instance_dict.items())\nprint(\"keys: \", instance_dict.keys())\nprint(\"values: \", instance_dict.values())\nprint(\"firstname: \", instance_dict.firstname)\nprint(\"firstname: \", instance_dict['firstname'])\nprint(\"lastname: \", instance_dict.lastname)\nprint(\"lastname: \", instance_dict['lastname'])\n```\n\n```\n# results\nitems:  [('firstname', 'pooya'), ('lastname', 'mohammadi')]\nkeys:  ['firstname', 'lastname']\nvalues:  ['pooya', 'mohammadi']\nfirstname:  pooya\nfirstname:  pooya\nlastname:  mohammadi\nlastname:  mohammadi\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Multi-Label-Stratify\n\nWhile splitting a dataset for NER or Object detection tasks, you might have noticed that there is no way to split the\ndataset using\nstratify functionality of `train_test_split` of the `scikit-learn` library because not only does each sample in these\ntwo tasks may\nhave\nmore than one tag/object, but also each tag/object of each class may appear more than once. For example, an image/sample\nmay\ncontain two dogs and three cats, which means the label/y of that sample would be like [2, 3] in which the index zero\ncorresponds\nto the dog class, and the index one corresponds to the cat class.\nTo split these types of datasets, the following function is\ndeveloped in the `deep_utils` library which is very easy to use. To use this function, two arrays are needed. The first\nis an array\nor list containing the input samples. The type of these samples could be anything; they could be a list of sentences, a\nlist of\npaths to input images, or even structured data like the one in the following example. The other array, however, must be\na 2D ndarray whose first dimension is equal to the number of samples, and the second dimension is equal to the number\nof the classes. Likewise, each index is correspondent to a class, and each element of this array shows the number of\neach sample in a specific class. For example, the element in index `[0, 0]` of the following array\n`[[1, 0], [3, 3]]`, which is equal to 1, shows that the sample 0 contains 1 item of the first class or the class that\ncorresponds to index zero. Now, let's see an example:\n\n```commandline\n\u003e\u003e\u003e from deep_utils import stratify_train_test_split_multi_label\n\u003e\u003e\u003e x = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]])\n\u003e\u003e\u003e y = np.array([[0, 0], [0, 0], [0, 1], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0]])\n\u003e\u003e\u003e x_train, x_test, y_train, y_test = stratify_train_test_split_multi_label(x, y, test_size=0.5, closest_ratio=False)\n\u003e\u003e\u003e x_train\n    array([[1, 2],\n           [3, 4],\n           [1, 2],\n           [3, 4]])\n\u003e\u003e\u003e x_test\narray([[1, 2],\n       [3, 4],\n       [1, 2],\n       [3, 4]])\n\u003e\u003e\u003e y_train\narray([[0, 1],\n       [0, 1],\n       [1, 0],\n       [1, 0]])\n\u003e\u003e\u003e y_test\narray([[1, 1],\n       [1, 1],\n       [0, 0],\n       [0, 0]])\n\u003e\u003e\u003e print(\"class ratio:\", tuple(y_test.sum(0) / y.sum(0)))\nclass ratio: (0.5, 0.5)\n\u003e\u003e\u003e print(\"sample ratio:\", y_test.shape[0] / y.shape[0])\nsample ratio: 0.5\n```\n\nAs clearly shown in the results, both the sample and the class ratios are preserved. In some datasets,\nit's impossible to get the exact expected ratio, so the function will split the input dataset in a way that it would\nbe the closest ratio to the expected one. Link to code:\n\nhttps://github.com/pooya-mohammadi/deep_utils/blob/master/deep_utils/utils/multi_label_utils/stratify/stratify_train_test_split.py\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Tests\n\nTests are done for python 3.8 and 3.9. Deep-Utils will probably run without any errors on lower versions as well.\n\n**Note**: Model tests are done on CPU devices provided by GitHub Actions. GPU based models are tested manually by the\nauthors.\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- CONTRIBUTING --\u003e\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any\ncontributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this toolkit enhanced, please fork the repo and create a pull request. You can\nalso simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a ⭐️! Thanks again!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- LICENSE --\u003e\n\n## 🌟 Spread the word!\n\nIf you want to say thank you and/or support active development of the repo:\n\n- Add a GitHub Star to the project!\n- Join our discord servers [Deep Utils](https://discord.gg/pWe3yChw) .\n- Follow my profile [pooya-mohammadi](https://github.com/pooya-mohammadi)\n\nThanks so much for your interest in growing the reach of the repo!\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## ⚠️ License\n\nDistributed under the MIT License. See `LICENSE` for more information.\nThe LICENSE of each model is located inside its corresponding directory.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## 🤝 Collaborators\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/pooya-mohammadi\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/u/55460936?v=4\" width=\"100px;\" alt=\"Pooya Mohammadi on GitHub\"/\u003e\u003cbr\u003e\n        \u003csub\u003e\n          \u003cb\u003ePooya Mohammadi Kazaj\u003c/b\u003e\n        \u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/Vargha-Kh\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/u/69680607?v=4\" width=\"100px;\" alt=\"Vargha Khallokhi\"/\u003e\u003cbr\u003e\n        \u003csub\u003e\n          \u003cb\u003eVargha Khallokhi\u003c/b\u003e\n        \u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/Zzamani80\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/u/103884658?v=4\" width=\"100px;\" alt=\"Zahra Zamanshoar\"/\u003e\u003cbr\u003e\n        \u003csub\u003e\n          \u003cb\u003eZahra Zamanshoar\u003c/b\u003e\n        \u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/dornasabet\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/u/74057278?v=4\" width=\"100px;\" alt=\"Dorna Sabet\"/\u003e\u003cbr\u003e\n        \u003csub\u003e\n          \u003cb\u003eDorna Sabet\u003c/b\u003e\n        \u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/MenuaB\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/u/16352202?v=4\" width=\"100px;\" alt=\"Menua Bedrosian\"/\u003e\u003cbr\u003e\n        \u003csub\u003e\n          \u003cb\u003eMenua Bedrosian \u003c/b\u003e\n        \u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/alirezakazemipour\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/u/32295763?v=4\" width=\"100px;\" alt=\"Alireza Kazemipour\"/\u003e\u003cbr\u003e\n        \u003csub\u003e\n          \u003cb\u003eAlireza Kazemipour\u003c/b\u003e\n        \u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td align=\"center\"\u003e\n    \u003ctd align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/ParnianNazari\"\u003e\n          \u003cimg src=\"https://avatars.githubusercontent.com/u/166519931?v=4\" width=\"100px;\" alt=\"Parnian Nazari\"/\u003e\u003cbr\u003e\n\t  \u003csub\u003e\t\n\t    \u003cb\u003eParnian Nazari\u003c/b\u003e\n\t  \u003csub\u003e\t\n       \u003c/a\u003e\n    \u003c/td\u003e\n\t\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTACT --\u003e\n\n## Contact\n\nPooya Mohammadi:\n\n* LinkedIn [www.linkedin.com/in/pooya-mohammadi](www.linkedin.com/in/pooya-mohammadi)\n* Email: [pooyamohammadikazaj@gmail.com](pooyamohammadikazaj@gmail.com)\n\nProject's Link: [https://github.com/pooya-mohammadi/deep_utils](https://github.com/your_username/repo_name)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## References\n\n1. Tim Esler's facenet-pytorch\n   repo: [https://github.com/timesler/facenet-pytorch](https://github.com/timesler/facenet-pytorch)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Citation\n\nPlease cite deep-utils if it helps your research. You can use the following BibTeX entry:\n\n```\n@misc{deep_utils,\n\ttitle = {deep_utils},\n\tauthor = {Mohammadi Kazaj, Pooya},\n\thowpublished = {\\url{github.com/pooya-mohammadi/deep_utils}},\n\tyear = {2021}\n}\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpooya-mohammadi%2Fdeep_utils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpooya-mohammadi%2Fdeep_utils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpooya-mohammadi%2Fdeep_utils/lists"}