{"id":34077775,"url":"https://github.com/abraia/abraia-multiple","last_synced_at":"2026-03-08T21:37:12.136Z","repository":{"id":42664280,"uuid":"102054889","full_name":"abraia/abraia-multiple","owner":"abraia","description":"Abraia computer vision SDK for edge applications","archived":false,"fork":false,"pushed_at":"2025-12-06T19:36:00.000Z","size":204470,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-16T12:52:07.021Z","etag":null,"topics":["abraia-api","computer-vision","convert-images","hyperspectral-image","hyperspectral-image-analysis","image-analysis"],"latest_commit_sha":null,"homepage":"https://abraia.me/vision/","language":"Jupyter Notebook","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/abraia.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-08-31T23:46:55.000Z","updated_at":"2025-12-06T19:34:29.000Z","dependencies_parsed_at":"2025-09-03T10:22:51.691Z","dependency_job_id":null,"html_url":"https://github.com/abraia/abraia-multiple","commit_stats":{"total_commits":175,"total_committers":2,"mean_commits":87.5,"dds":0.3085714285714286,"last_synced_commit":"70cccd56faf507f65502592bdb0b2b6793404b7e"},"previous_names":["abraia/abraia-python"],"tags_count":118,"template":false,"template_full_name":null,"purl":"pkg:github/abraia/abraia-multiple","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abraia%2Fabraia-multiple","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abraia%2Fabraia-multiple/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abraia%2Fabraia-multiple/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abraia%2Fabraia-multiple/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abraia","download_url":"https://codeload.github.com/abraia/abraia-multiple/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abraia%2Fabraia-multiple/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30274731,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T20:45:49.896Z","status":"ssl_error","status_checked_at":"2026-03-08T20:45:49.525Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["abraia-api","computer-vision","convert-images","hyperspectral-image","hyperspectral-image-analysis","image-analysis"],"created_at":"2025-12-14T10:48:15.318Z","updated_at":"2026-03-08T21:37:12.131Z","avatar_url":"https://github.com/abraia.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://github.com/abraia/abraia-multiple/actions/workflows/build.yml/badge.svg)](https://github.com/abraia/abraia-multiple/actions/workflows/build.yml)\n[![Python Package](https://img.shields.io/pypi/v/abraia.svg)](https://pypi.org/project/abraia/)\n![Package Downloads](https://img.shields.io/pypi/dm/abraia)\n\n# Abraia Vision SDK\n\nThe [Abraia Vision](https://abraia.me/vision/) SDK is a Python package which provides a set of tools to develop and deploy advanced Machine Learning image applications on the edge. Moreover, with [Abraia DeepLab](https://abraia.me/deeplab/) you can easily annotate and train, your own versions of some of the best state of the art deep learning models, and get them ready to deploy with this Python SDK.\n\nJust install the Abraia SDK and CLI on Windows, Mac, or Linux:\n\n```sh\npython -m pip install -U abraia\n```\n\nAnd start using deep learning models ready to work on your local devices.\n\n## Deep learning custom models and applications\n\nConsult your problem or directly try to annotate your images and train a state-of-the-art model for classification, detection, or segmentation using [DeepLab](https://abraia.me/deeplab/). You can directly load and run the model on the edge using the browser or this Python SDK.\n\n### Object detection and tracking\n\nIdentify and track multiple objects with a custom detection model on videos and camera streams, enabling real-time counting applications. You just need to use\nthe Video class to process every frame as is done for images, and use the tracker to follow each object through \nevery frame.\n\n```python\nfrom abraia.inference import Model, Tracker\nfrom abraia.utils import Video, render_results\n\nmodel = Model(\"multiple/models/yolov8n.onnx\")\n\nvideo = Video('images/people-walking.mp4')\ntracker = Tracker(frame_rate=video.frame_rate)\nfor frame in video:\n    results = model.run(frame, conf_threshold=0.5, iou_threshold=0.5)\n    results = tracker.update(results)\n    frame = render_results(frame, results)\n    video.show(frame)\n```\n\n![people detected](https://github.com/abraia/abraia-multiple/raw/master/images/people-detected.jpg)\n\n### Face recognition\n\nIdentify people on images with face recognition as shown bellow. \n\n```python\nimport os\n\nfrom abraia.inference import FaceRecognizer\nfrom abraia.utils import load_image, save_image, render_results\n\nimg = load_image('images/rolling-stones.jpg')\nout = img.copy()\n\nrecognition = FaceRecognizer()\n\nindex = []\nfor src in ['mick-jagger.jpg', 'keith-richards.jpg', 'ronnie-wood.jpg', 'charlie-watts.jpg']:\n    img = load_image(f\"images/{src}\")\n    rslt = recognition.identify_faces(img)[0]\n    index.append({'name': os.path.splitext(src)[0], 'vector': rslt['vector']})\n\nresults = recognition.identify_faces(results, index)\nrender_results(out, results)\nsave_image(out, 'images/rolling-stones-identified.jpg')\n```\n\n![rolling stones identified](https://github.com/abraia/abraia-multiple/raw/master/images/rolling-stones-identified.jpg)\n\n### License plates recognition\n\nAutomatically recognize car license plates in images and video streams.\n\n```python\nfrom abraia.inference import PlateRecognizer\nfrom abraia.utils import load_image, show_image, render_results\n\nalpr = PlateRecognizer()\n\nimg = load_image('images/car.jpg')\nresults = alpr.detect(img)\nresults = alpr.recognize(img, results)\nresults = [result for result in results if len(result['lines'])]\nfor result in results:\n    result['label'] = '\\n'.join([line.get('text', '') for line in result['lines']])\n    del result['score']\nframe = render_results(img, results)\nshow_image(img)\n```\n\n![car license plate recognition](https://github.com/abraia/abraia-multiple/raw/master/images/car-plate.jpg)\n\n### Gender Age model\n\nModel to predict gender and age. It can be useful to anonymize minors faces.\n\n```python\nfrom abraia.inference import FaceRecognizer, FaceAttribute\nfrom abraia.utils import load_image, show_image, render_results\n\nrecognition = FaceRecognizer()\nattribute = FaceAttribute()\n\nimg = load_image('images/image.jpg')\nresults = recognition.detect_faces(img)\nfaces = recognition.extract_faces(img, results)\nfor face, result in zip(faces, results):\n    gender, age, score = attribute.predict(face)\n    result['label'] = f\"{gender} {age}\"\n    result['score'] = score\nimg = render_results(img, results)\nshow_image(img)\n```\n\n### Blur license plate\n\nAnonymize images automatically bluring car license plates.\n\n```python\nfrom abraia.utils import load_image, save_image\nfrom abraia.inference import PlateDetector\nfrom abraia.editing import build_mask\nfrom abraia.utils.draw import draw_blurred_mask\n\nsrc = 'images/car.jpg'\nimg = load_image(src)\n\ndetector = PlateDetector()\nplates = detector.detect(img)\nmask = build_mask(img, plates, [])\nout = draw_blurred_mask(img, mask)\n\nsave_image(out, 'blur-car.jpg')\n```\n\n![blur car license plate](https://github.com/abraia/abraia-multiple/raw/master/images/blur-car.jpg)\n\n### Semantic search\n\nSearch on images with embeddings.\n\n```python\nfrom tqdm import tqdm\nfrom glob import glob\nfrom abraia.utils import load_image\nfrom abraia.inference.clip import Clip\nfrom abraia.inference.ops import search_vector\n\nclip_model = Clip()\n\nimage_paths = glob('images/*.jpg')\nimage_index = [{'vector': clip_model.get_image_embeddings([load_image(image_path)])[0]} for image_path in tqdm(image_paths)]\n\ntext_query = \"full body person\"\nvector = clip_model.get_text_embeddings([text_query])[0]\n\nidxs, scores = search_vector(vector, image_index)\nprint(f\"Similarity score is {scores[0]} for image {image_paths[idxs[0]]}\")\n```\n\n## Hyperspectral image analysis toolbox\n\nThe Multiple extension provides seamless integration of multispectral and hyperspectral images, providing support for straightforward HyperSpectral Image (HSI) analysis and classification.\n\nJust click on one of the available Colab's notebooks to directly start testing the multispectral capabilities:\n\n* [![](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/abraia/abraia-multiple/blob/master/notebooks/hyperspectral-analysis.ipynb) Hyperspectral image analysis\n\n* [![](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/abraia/abraia-multiple/blob/master/notebooks/hyperspectral-classification.ipynb) Hyperspectral image classification\n\n![classification](https://github.com/abraia/abraia-multiple/raw/master/images/classification.png)\n\nTo install the multiple extension use the command bellow:\n\n```sh\npython -m pip install -U \"abraia[multiple]\"\n```\n\nTo use the SDK you have to configure your [Id and Key](https://abraia.me/editor/) as environment variables:\n\n```sh\nexport ABRAIA_ID=user_id\nexport ABRAIA_KEY=user_key\n```\n\nOn Windows you need to use `set` instead of `export`:\n\n```sh\nset ABRAIA_ID=user_id\nset ABRAIA_KEY=user_key\n```\n\nThen, you will be able to directly load and save ENVI files, and their metadata.\n\n```python\nfrom abraia.multiple import Multiple\n\nmultiple = Multiple()\n\nimg = multiple.load_image('test.hdr')\nmeta = multiple.load_metadata('test.hdr')\nmultiple.save_image('test.hdr', img, metadata=meta)\n```\n\n### Upload and load HSI data\n\nTo start with, we may [upload some data](https://abraia.me/deeplab/) directly using the graphical interface, or using the multiple api:\n\n```python\nmultiple.upload_file('PaviaU.mat')\n```\n\nNow, we can load the hyperspectral image data (HSI cube) directly from the cloud:\n\n```python\nimg = multiple.load_image('PaviaU.mat')\n```\n\n### Basic HSI visualization\n\nHyperspectral images cannot be directly visualized, so we can get some random bands from our HSI cube, and visualize these bands as like any other monochannel image.\n\n```python\nfrom abraia.multiple import hsi\n\nimgs, indexes = hsi.random(img)\nhsi.plot_images(imgs, cmap='jet')\n```\n\nOr, we can reduce the dimensionality applying principal components analysis (PCA). We can get the first three principal components into a three bands pseudoimage, and visualize this pseudoimage.\n\n```python\npc_img = hsi.principal_components(img)\nhsi.plot_image(pc_img, 'Principal components')\n```\n\n## License\n\nThis software is licensed under the MIT License. [View the license](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabraia%2Fabraia-multiple","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabraia%2Fabraia-multiple","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabraia%2Fabraia-multiple/lists"}