{"id":19696279,"url":"https://github.com/mithi/portal-clone","last_synced_at":"2025-07-22T11:35:39.876Z","repository":{"id":45896482,"uuid":"514003955","full_name":"mithi/portal-clone","owner":"mithi","description":null,"archived":false,"fork":false,"pushed_at":"2022-07-17T17:50:32.000Z","size":46627,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-10T09:43:41.913Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mithi.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}},"created_at":"2022-07-14T18:13:54.000Z","updated_at":"2023-05-25T07:31:24.000Z","dependencies_parsed_at":"2022-09-03T01:51:31.859Z","dependency_job_id":null,"html_url":"https://github.com/mithi/portal-clone","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithi%2Fportal-clone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithi%2Fportal-clone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithi%2Fportal-clone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithi%2Fportal-clone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mithi","download_url":"https://codeload.github.com/mithi/portal-clone/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241007791,"owners_count":19893055,"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":[],"created_at":"2024-11-11T19:34:29.358Z","updated_at":"2025-02-27T11:38:36.310Z","avatar_url":"https://github.com/mithi.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"1. Cloned from https://github.com/datature/portal/, did some modifications and then pushed to this repo\n2. Here's how I set my development environment on Digital Ocean (I had problems with OpenCV and Tensorflow on Apple's new M1 chip): https://gist.github.com/mithi/eb868c0824ce84e32b927a88e61011fb\n3. Here's a video demonstrating my modifications: https://www.youtube.com/watch?v=u5ABSTLmAKw\n4. Some screenshots: https://github.com/mithi/portal-clone/issues/1\n\n# Portal\n\n[![Build Tests](https://github.com/datature/portal/actions/workflows/app-workflow.yml/badge.svg)](https://github.com/datature/portal/actions/workflows/app-workflow.yml)\n[![Join Datature Slack](https://img.shields.io/badge/Join%20The%20Community-Datature%20Slack-blueviolet)](https://datature.io/community)\n\n**Portal is the fastest way to load and visualize your deep learning models.** We are all sick of wrangling a bunch of `cv2` or `matplotlib` codes to test your models - especially on videos. We created portal to help teams, engineers, and product managers interactively test their model on images and videos, inference thresholds, IoU values and much more.\n\nPortal is an open-source browser-based app written in `TypeScript`, `React` and `Flask`.\n\nMade with `♥` by [Datature](https://datature.io)\n\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Portal User Experience\" src=\"https://github.com/datature/portal/blob/develop/docs/images/portal-demo-image.gif?raw=true\" width=\"90%\"\u003e\n\u003c/p\u003e\n\nPortal works on both images and videos - bounding boxes and masks - allowing you to use it as a sandbox for testing your model's performance. Additionally, Portal supports Datature Hub, TensorFlow and DarkNet models (PyTorch Support Incoming) and runs on either our electron app or your browser.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Portal User Experience\" src=\"https://github.com/datature/portal/blob/develop/docs/images/portal-demo-video.gif?raw=true\" width=\"45%\"\u003e\n  \u003cimg alt=\"Portal User Experience\" src=\"https://github.com/datature/portal/blob/develop/docs/images/portal-demo-fields.gif?raw=true\" width=\"45%\"\u003e\n\u003c/p\u003e\n\n## Setting up Portal\n\nPortal can be used as a Web Application or through downloading and installing our Electron package via \u003ca href=\"https://github.com/datature/portal/releases\"\u003e Portal Releases\u003c/a\u003e.\n\n### Running Portal as a Web Application\n\n**This is the recommended way of running Portal**\n\nPortal is built using `Python 3.7`. Ensure that you have this version and up before beginning (`Python 3.7 \u003c= X \u003c 3.9`). Clone the repository and then navigate to the directory where `requirements.txt` is and install all necessary dependencies and setup using `setup.sh`:\n\n```.bash\ngit clone https://github.com/datature/portal\ncd portal\npip3 install -r requirements.txt\n./setup.sh\n```\n\nRunning the following command will open the Portal application on the browser via http://localhost:9449.\n\n\u003e If you wish to run the application on gpu, add a trailing `--gpu` flag (This only works for TensorFlow Models)\n\n```.bash\npython3 portal.py\n```\n\n#### Using Virtual Environment\n\nIf you'd like to use virtual environments for this project - you can use a helpful script below to before activating the virtualenv -\n\n```\n./setup-virtualenv.sh\n```\n\n### Running from Portal Executable\n\nPortal comes with an installable version that runs on `electron.js` - this helps to provide a desktop application feel and ease of access of setting up. To install, please download the latest \u003ca href=\"https://github.com/datature/portal/releases\"\u003ePortal Releases\u003c/a\u003e and run the Portal installer for your OS.\n\n## Navigating Portal\n\nOn starting Portal or navigating to http://localhost:9449 - The following steps details how you can load your YOLO or TensorFlow model on your image folders. To begin, let's assume we want to register a `tf2.0` model. On Portal, a concept we use is that you can register multiple models but load one at each time.\n\n#### Registering and Loading Portal\n\nStart by clicking on the `+` sign and adding the relevant filepaths, e.g. `/user/portal/downloads/MobileNet/` and a name. You will be prompted to load the model as seen below. Simply click on the model you'd like to load and the engine wil\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Register Model\" src=\"https://github.com/datature/portal/blob/develop/docs/images/screencaps/portal-ss-1.png?raw=true\" width=\"45%\"\u003e\n  \u003cimg alt=\"Load Model\" src=\"https://github.com/datature/portal/blob/develop/docs/images/screencaps/portal-ss-2.png?raw=true\" width=\"45%\"\u003e\n\u003c/p\u003e\n\n#### Loading Your Images / Videos\n\nTo load your dataset (images / videos), click on the `Open Folders` button in the menu and paste your folder path to your dataswr. Once you are done, press the `enter` button. The images should appear in the asset menu below. You can load and synchronize multiple folders at once on Portal.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Load Assets\" src=\"https://github.com/datature/portal/blob/develop/docs/images/screencaps/portal-ss-3.png?raw=true\" width=\"90%\"\u003e\n\u003c/p\u003e\n\n#### Running Inferences\n\nClick on any image or video, press `Analyze`, and Portal will make the inference and render the results. You can then adjust the confidence threshold or filter various classes as needed. Note that Portal run inferences on videos frame-by-frame, so that will take some time. You can change the inference settings, such as **IoU** or **Frame Settings** under `Advanced Settings`.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Image Prediction\" src=\"https://github.com/datature/portal/blob/develop/docs/images/screencaps/portal-ss-4.png?raw=true\" width=\"45%\"\u003e\n  \u003cimg alt=\"Image Prediction\" src=\"https://github.com/datature/portal/blob/develop/docs/images/screencaps/portal-ss-5.png?raw=true\" width=\"45%\"\u003e\n\u003c/p\u003e\n\n#### Keymaps and Shortcuts\n\nTo view the various key maps and shortcuts, press `?` on your keyboard whilst in Portal. There are various shortcuts such as showing labels of detections, going to the next photo, etc. If you have any suggestions or change recommendation, feel free to open a `Feature Request`\n\n**Portal works on both Mask and Bounding Box models.** For detailed documentations about advanced features of Portal can be found here : \u003ca href=\"https://docs.datature.io/portal/documentation\"\u003ePortal Documentation\u003c/a\u003e\n\n## Working with Datature Nexus\n\nPortal works seemlessly with [Nexus, our MLOps platform](https://datature.io), that helps developers and teams build computer vision models - it comes fully featured with an advanced annotator, augmentation studio, 30+ models and ability to train on multi-GPU settings. Anyhoo, here's how to build a model and run it in Portal -\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Image Prediction\" src=\"https://github.com/datature/portal/blob/develop/docs/images/screencaps/nexus-ss-4.png?raw=true\" width=\"45%\"\u003e\n  \u003cimg alt=\"Image Prediction\" src=\"https://github.com/datature/portal/blob/develop/docs/images/screencaps/nexus-ss-5.png?raw=true\" width=\"45%\"\u003e\n\u003c/p\u003e\n\n\u003cp\u003eTo build a model on Nexus, simply create a project, upload the dataset, annotate the images, and create a training pipeline. You should be able to start a model training and this can take a few hours. As the model training progress, checkpoints are automatically generated and you should see them in the Artifacts page. For more details on how to use Nexus, consider watching our tutorial \u003ca href=\"https://www.youtube.com/watch?v=KA4RGtnabDk\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Image Prediction\" src=\"https://github.com/datature/portal/blob/develop/docs/images/screencaps/nexus-ss-1.png?raw=true\" width=\"45%\"\u003e\n  \u003cimg alt=\"Image Prediction\" src=\"https://github.com/datature/portal/blob/develop/docs/images/screencaps/nexus-ss-2.png?raw=true\" width=\"45%\"\u003e\n\u003c/p\u003e\n\n\u003cp\u003eOnce you are done with a training and a candidate checkpoint is selected, you can generate a TensorFlow model under the Artifacts page to obtain the model key required by Portal for the following setup. Use the register model interface to insert this key to the model under Datature Hub.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Image Prediction\" src=\"https://github.com/datature/portal/blob/develop/docs/images/screencaps/nexus-ss-3.png?raw=true\" width=\"80%\"\u003e\n\u003c/p\u003e\n\n\u003cp\u003eWith this, you can now run Analyze on your test images and you should be able to train and test new models between Nexus and Portal easily by repeating the steps above. If you'd like to give Datature Nexus a try, simply sign up for an account at https://datature.io - It comes with a free tier!\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Image Prediction\" src=\"https://github.com/datature/portal/blob/develop/docs/images/nexus-rb.gif?raw=true\" width=\"80%\"\u003e\n\u003c/p\u003e\n\n## Screencasts\n\n[Using Portal to Inspect Computer Vision Models](https://www.youtube.com/watch?v=dTaqVkr8re0)\n\n[Building an Object Detection Model with Datature](https://www.youtube.com/watch?v=KA4RGtnabDk)\n\n[Building an Instance Segmentation Model with Datature](https://www.youtube.com/watch?v=uLVWanPjGp0)\n\n## Sample Weights\n\nWe have provided sample weights for you to test Portal:\n\n| Dataset                          | Description                                           |     Download Link      |\n| -------------------------------- | ----------------------------------------------------- | :--------------------: |\n| YOLO-v3                          | DarkNet Model based off [pjreddie/darknet][darknet]   |     [YOLOv3][yolo]     |\n| SSD MobileNet V2 FPNLite 640x640 | Tensorflow Model from [tensorflow/models][tensorflow] | [MobileNet][mobilenet] |\n\n[darknet]: https://github.com/pjreddie/darknet\n[tensorflow]: https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2_detection_zoo.md\n[yolo]: https://drive.google.com/file/d/12gtZdta0LhPn48s4LHqFKFahqcgAML9-/view?usp=sharing\n[mobilenet]: http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8.tar.gz\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmithi%2Fportal-clone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmithi%2Fportal-clone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmithi%2Fportal-clone/lists"}