{"id":22615499,"url":"https://github.com/sovit-123/fasterrcnn-pytorch-training-pipeline","last_synced_at":"2025-04-06T22:08:38.686Z","repository":{"id":37624536,"uuid":"423659200","full_name":"sovit-123/fasterrcnn-pytorch-training-pipeline","owner":"sovit-123","description":"PyTorch Faster R-CNN Object Detection on Custom Dataset","archived":false,"fork":false,"pushed_at":"2024-09-20T02:00:22.000Z","size":13135,"stargazers_count":238,"open_issues_count":70,"forks_count":81,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-30T19:07:25.209Z","etag":null,"topics":["darknet-fasterrcnn","deep-learning","efficientnet-fasterrcnn","faster-rcnn","fasterrcnn","fasterrcnn-resnet50-fpn","fasterrcnn-resnet50-fpn-v2","mobilenet-fasterrcnn","object-detection","pytorch","resnet50-fasterrcnn","squeezenet-fasterrcnn"],"latest_commit_sha":null,"homepage":"","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/sovit-123.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}},"created_at":"2021-11-02T00:36:47.000Z","updated_at":"2025-03-29T17:33:26.000Z","dependencies_parsed_at":"2024-05-21T16:47:17.467Z","dependency_job_id":"f7fc3059-bb47-48a6-80b3-193c0fdead3b","html_url":"https://github.com/sovit-123/fasterrcnn-pytorch-training-pipeline","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sovit-123%2Ffasterrcnn-pytorch-training-pipeline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sovit-123%2Ffasterrcnn-pytorch-training-pipeline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sovit-123%2Ffasterrcnn-pytorch-training-pipeline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sovit-123%2Ffasterrcnn-pytorch-training-pipeline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sovit-123","download_url":"https://codeload.github.com/sovit-123/fasterrcnn-pytorch-training-pipeline/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247557767,"owners_count":20958047,"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":["darknet-fasterrcnn","deep-learning","efficientnet-fasterrcnn","faster-rcnn","fasterrcnn","fasterrcnn-resnet50-fpn","fasterrcnn-resnet50-fpn-v2","mobilenet-fasterrcnn","object-detection","pytorch","resnet50-fasterrcnn","squeezenet-fasterrcnn"],"created_at":"2024-12-08T19:07:48.327Z","updated_at":"2025-04-06T22:08:38.665Z","avatar_url":"https://github.com/sovit-123.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A Simple Pipeline to Train PyTorch FasterRCNN Model\r\n\r\n\r\n\r\nTrain PyTorch FasterRCNN models easily on any custom dataset. Choose between official PyTorch models trained on COCO dataset, or choose any backbone from Torchvision classification models, or even write your own custom backbones. \r\n\r\n***You can run a Faster RCNN model with Mini Darknet backbone and Mini Detection Head at more than 150 FPS on an RTX 3080***.\r\n\r\n![](readme_images/gif_1.gif)\r\n\r\n## Get Started\r\n\r\n​\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1oFxPpBeE8SzSQq7BTUv28IIqQeiHHLdj?usp=sharing) [![Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://www.kaggle.com/code/sovitrath/custom-faster-rcnn-training-kaggle/notebook)\r\n\r\n* [Find blog posts/tutorials on DebuggerCafe](#Tutorials)\r\n\r\n## Updates\r\n\r\n* **August 28 2024:** SAHI image inference for all pretrained Torchvision Faster RCNN models integrated. [Find the script here](https://github.com/sovit-123/fasterrcnn-pytorch-training-pipeline/blob/main/sahi_inference.py).\r\n\r\n* Filter classes to visualize during inference using the `--classes` command line argument with space separated class indices from the dataset YAML file. \r\n\r\n  For example, to visualize only persons in COCO dataset, use,  `python inference.py --classes 1 \u003crest of the command\u003e`\r\n\r\n  To visualize person and car, use, `python inference.py --classes 1 3 \u003crest of the command\u003e`\r\n\r\n* Added Deep SORT Real-Time tracking to `inference_video.py` and `onnx_video_inference.py`. Using `--track` command with the usual inference command. Support for **MobileNet** Re-ID for now.\r\n\r\n## Custom Model Naming Conventions\r\n\r\n***For this repository:***\r\n\r\n* **Small head refers to 512 representation size in the Faster RCNN head and predictor.**\r\n* **Tiny head refers to 256 representation size in the Faster RCNN head and predictor.**\r\n* **Nano head refers to 128 representation size in the Faster RCNN head and predictor.**\r\n\r\n## [Check All Available Model Flags](#A-List-of-All-Model-Flags-to-Use-With-the-Training-Script)\r\n\r\n## Go To\r\n\r\n* [Setup on Ubuntu](#Setup-for-Ubuntu)\r\n* [Setup on Windows](#Setup-on-Windows)\r\n* [Train on Custom Dataset](#Train-on-Custom-Dataset)\r\n* [Inference](#Inference)\r\n* [Evaluation](#Evaluation)\r\n* [Available Models](#A-List-of-All-Model-Flags-to-Use-With-the-Training-Script)\r\n* [Tutorials](#Tutorials)\r\n\r\n## Setup on Ubuntu\r\n\r\n1. Clone the repository.\r\n\r\n   ```bash\r\n   git clone https://github.com/sovit-123/fastercnn-pytorch-training-pipeline.git\r\n   ```\r\n\r\n2. Install requirements.\r\n\r\n   1. **Method 1**: If you have CUDA and cuDNN set up already, do this in your environment of choice.\r\n\r\n      ```bash\r\n      pip install -r requirements.txt\r\n      ```\r\n\r\n   2. **Method 2**: If you want to install PyTorch with CUDA Toolkit in your environment of choice.\r\n\r\n      ```bash\r\n      conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch\r\n      ```\r\n\r\n      OR\r\n\r\n      ```bash\r\n      conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch\r\n      ```\r\n\r\n      OR install the version with CUDA support as per your choice from **[here](https://pytorch.org/get-started/locally/)**.\r\n\r\n      Then install the remaining **[requirements](https://github.com/sovit-123/fasterrcnn-pytorch-training-pipeline/blob/main/requirements.txt)**.\r\n\r\n## Setup on Windows\r\n\r\n1. **First you need to install Microsoft Visual Studio from [here](https://my.visualstudio.com/Downloads?q=Visual%20Studio%202017)**. Sing In/Sing Up by clicking on **[this link](https://my.visualstudio.com/Downloads?q=Visual%20Studio%202017)** and download the **Visual Studio Community 2017** edition.\r\n\r\n   ![](readme_images/vs-2017-annotated.jpg)\r\n\r\n   Install with all the default chosen settings. It should be around 6 GB. Mainly, we need the C++ Build Tools.\r\n\r\n2. Then install the proper **`pycocotools`** for Windows.\r\n\r\n   ```bash\r\n   pip install git+https://github.com/gautamchitnis/cocoapi.git@cocodataset-master#subdirectory=PythonAPI\r\n   ```\r\n\r\n3. Clone the repository.\r\n\r\n   ```bash\r\n   git clone https://github.com/sovit-123/fastercnn-pytorch-training-pipeline.git\r\n   ```\r\n\r\n4. Install PyTorch with CUDA support.\r\n\r\n   ```bash\r\n   conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch\r\n   ```\r\n\r\n   OR\r\n\r\n   ```bash\r\n   conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch\r\n   ```\r\n\r\n   OR install the version with CUDA support as per your choice from **[here](https://pytorch.org/get-started/locally/)**.\r\n\r\n   Then install the remaining **[requirements](https://github.com/sovit-123/pytorch-efficientdet-api/blob/main/requirements.txt)** except for `pycocotools`.\r\n\r\n## Train on Custom Dataset\r\n\r\nTaking an exmaple of the [smoke dataset](https://www.kaggle.com/didiruh/smoke-pascal-voc) from Kaggle. Let's say that the dataset is in the `data/smoke_pascal_voc` directory in the following format. And the `smoke.yaml` is in the `data_configs` directory. Assuming, we store the smoke data in the `data` directory\r\n\r\n```bash\r\n├── data\r\n│   ├── smoke_pascal_voc\r\n│   │   ├── archive\r\n│   │   │   ├── train\r\n│   │   │   └── valid\r\n│   └── README.md\r\n├── data_configs\r\n│   └── smoke.yaml\r\n├── models\r\n│   ├── create_fasterrcnn_model.py\r\n│   ...\r\n│   └── __init__.py\r\n├── outputs\r\n│   ├── inference\r\n│   └── training\r\n│       ...\r\n├── readme_images\r\n│   ...\r\n├── torch_utils\r\n│   ├── coco_eval.py\r\n│   ...\r\n├── utils\r\n│   ├── annotations.py\r\n│   ...\r\n├── datasets.py\r\n├── inference.py\r\n├── inference_video.py\r\n├── __init__.py\r\n├── README.md\r\n├── requirements.txt\r\n└── train.py\r\n```\r\n\r\nThe content of the `smoke.yaml` should be the following:\r\n\r\n```yaml\r\n# Images and labels direcotry should be relative to train.py\r\nTRAIN_DIR_IMAGES: ../../xml_od_data/smoke_pascal_voc/archive/train/images\r\nTRAIN_DIR_LABELS: ../../xml_od_data/smoke_pascal_voc/archive/train/annotations\r\n# VALID_DIR should be relative to train.py\r\nVALID_DIR_IMAGES: ../../xml_od_data/smoke_pascal_voc/archive/valid/images\r\nVALID_DIR_LABELS: ../../xml_od_data/smoke_pascal_voc/archive/valid/annotations\r\n\r\n# Class names.\r\nCLASSES: [\r\n    '__background__',\r\n    'smoke'\r\n]\r\n\r\n# Number of classes (object classes + 1 for background class in Faster RCNN).\r\nNC: 2\r\n\r\n# Whether to save the predictions of the validation set while training.\r\nSAVE_VALID_PREDICTION_IMAGES: True\r\n```\r\n\r\n***Note that*** *the data and annotations can be in the same directory as well. In that case, the TRAIN_DIR_IMAGES and TRAIN_DIR_LABELS will save the same path. Similarly for VALID images and labels. The `datasets.py` will take care of that*.\r\n\r\nNext, to start the training, you can use the following command.\r\n\r\n**Command format:**\r\n\r\n```bash\r\npython train.py --data \u003cpath to the data config YAML file\u003e --epochs 100 --model \u003cmodel name (defaults to fasterrcnn_resnet50)\u003e --name \u003cfolder name inside output/training/\u003e --batch 16\r\n```\r\n\r\n**In this case, the exact command would be:**\r\n\r\n```bash\r\npython train.py --data data_configs/smoke.yaml --epochs 100 --model fasterrcnn_resnet50_fpn --name smoke_training --batch 16\r\n```\r\n\r\n**The terimal output should be similar to the following:**\r\n\r\n```\r\nNumber of training samples: 665\r\nNumber of validation samples: 72\r\n\r\n3,191,405 total parameters.\r\n3,191,405 training parameters.\r\nEpoch     0: adjusting learning rate of group 0 to 1.0000e-03.\r\nEpoch: [0]  [ 0/84]  eta: 0:02:17  lr: 0.000013  loss: 1.6518 (1.6518)  time: 1.6422  data: 0.2176  max mem: 1525\r\nEpoch: [0]  [83/84]  eta: 0:00:00  lr: 0.001000  loss: 1.6540 (1.8020)  time: 0.0769  data: 0.0077  max mem: 1548\r\nEpoch: [0] Total time: 0:00:08 (0.0984 s / it)\r\ncreating index...\r\nindex created!\r\nTest:  [0/9]  eta: 0:00:02  model_time: 0.0928 (0.0928)  evaluator_time: 0.0245 (0.0245)  time: 0.2972  data: 0.1534  max mem: 1548\r\nTest:  [8/9]  eta: 0:00:00  model_time: 0.0318 (0.0933)  evaluator_time: 0.0237 (0.0238)  time: 0.1652  data: 0.0239  max mem: 1548\r\nTest: Total time: 0:00:01 (0.1691 s / it)\r\nAveraged stats: model_time: 0.0318 (0.0933)  evaluator_time: 0.0237 (0.0238)\r\nAccumulating evaluation results...\r\nDONE (t=0.03s).\r\nIoU metric: bbox\r\n Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.001\r\n Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.002\r\n Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.000\r\n Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\r\n Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.001\r\n Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.009\r\n Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.007\r\n Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.029\r\n Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.074\r\n Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.028\r\n Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.088\r\n Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.167\r\nSAVING PLOTS COMPLETE...\r\n...\r\nEpoch: [4]  [ 0/84]  eta: 0:00:20  lr: 0.001000  loss: 0.9575 (0.9575)  time: 0.2461  data: 0.1662  max mem: 1548\r\nEpoch: [4]  [83/84]  eta: 0:00:00  lr: 0.001000  loss: 1.1325 (1.1624)  time: 0.0762  data: 0.0078  max mem: 1548\r\nEpoch: [4] Total time: 0:00:06 (0.0801 s / it)\r\ncreating index...\r\nindex created!\r\nTest:  [0/9]  eta: 0:00:02  model_time: 0.0369 (0.0369)  evaluator_time: 0.0237 (0.0237)  time: 0.2494  data: 0.1581  max mem: 1548\r\nTest:  [8/9]  eta: 0:00:00  model_time: 0.0323 (0.0330)  evaluator_time: 0.0226 (0.0227)  time: 0.1076  data: 0.0271  max mem: 1548\r\nTest: Total time: 0:00:01 (0.1116 s / it)\r\nAveraged stats: model_time: 0.0323 (0.0330)  evaluator_time: 0.0226 (0.0227)\r\nAccumulating evaluation results...\r\nDONE (t=0.03s).\r\nIoU metric: bbox\r\n Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.137\r\n Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.313\r\n Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.118\r\n Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.029\r\n Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.175\r\n Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.428\r\n Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.204\r\n Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.306\r\n Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.347\r\n Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.140\r\n Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.424\r\n Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.683\r\nSAVING PLOTS COMPLETE...\r\n```\r\n\r\n## Distributed Training\r\n\r\n**Training on 2 GPUs**:\r\n\r\n```bash\r\nexport CUDA_VISIBLE_DEVICES=0,1\r\npython -m torch.distributed.launch --nproc_per_node=2 --use_env train.py --data data_configs/smoke.yaml --epochs 100 --model fasterrcnn_resnet50_fpn --name smoke_training --batch 16\r\n```\r\n\r\n## Inference\r\n\r\n### Image Inference on COCO Pretrained Model\r\n\r\nBy default using **Faster RCNN ResNet50 FPN V2** model.\r\n\r\n```bash\r\npython inference.py\r\n```\r\n\r\nUse model of your choice with an image input.\r\n\r\n```bash\r\npython inference.py --model fasterrcnn_mobilenetv3_large_fpn --input example_test_data/image_1.jpg\r\n```\r\n\r\n### Image Inference in Custom Trained Model\r\n\r\nIn this case you only need to give the weights file path and input file path. The config file and the model name are optional. If not provided they will will be automatically inferred from the weights file.\r\n\r\n```bash\r\npython inference.py --input data/inference_data/image_1.jpg --weights outputs/training/smoke_training/last_model_state.pth\r\n```\r\n\r\n### Video Inference on COCO Pretrrained Model\r\n\r\n```bash\r\npython inference_video.py\r\n```\r\n\r\n### Video Inference in Custom Trained Model\r\n\r\n```bash\r\npython inference_video.py --input data/inference_data/video_1.mp4 --weights outputs/training/smoke_training/last_model_state.pth \r\n```\r\n\r\n### Tracking using COCO Pretrained Models\r\n\r\n```bash\r\n# Track all COCO classes (Faster RCNN ResNet50 FPN V2).\r\npython inference_video.py --track --model fasterrcnn_resnet50_fpn_v2 --show\r\n\r\n# Track all COCO classes (Faster RCNN ResNet50 FPN V2) using own video.\r\npython inference_video.py --track --model fasterrcnn_resnet50_fpn_v2 --show --input ../inference_data/video_1.mp4\r\n\r\n# Tracking only person class (index 1 in COCO pretrained). Check `COCO_91_CLASSES` attribute in `data_configs/coco.yaml` for more information.\r\npython inference_video.py --track --model fasterrcnn_resnet50_fpn_v2 --show --input ../inference_data/video_4.mp4 --classes 1\r\n\r\n# Tracking only person and car classes (indices 1 and 3 in COCO pretrained). Check `COCO_91_CLASSES` attribute in `data_configs/coco.yaml` for more information.\r\npython inference_video.py --track --model fasterrcnn_resnet50_fpn_v2 --show --input ../inference_data/video_4.mp4 --classes 1 3\r\n\r\n# Tracking using custom trained weights. Just provide the path to the weights instead of model name.\r\npython inference_video.py --track --weights outputs/training/fish_det/best_model.pth --show --input ../inference_data/video_6.mp4\r\n```\r\n\r\n## Evaluation\r\n\r\nReplace the required arguments according to your need.\r\n\r\n```bash\r\npython eval.py --model fasterrcnn_resnet50_fpn_v2 --weights outputs/training/trial/best_model.pth --data data_configs/aquarium.yaml --batch 4\r\n```\r\n\r\nYou can use the following command to show a table for **class-wise Average Precision** (`--verbose` additionally needed).\r\n\r\n```bash\r\npython eval.py --model fasterrcnn_resnet50_fpn_v2 --weights outputs/training/trial/best_model.pth --data data_configs/aquarium.yaml --batch 4 --verbose\r\n```\r\n\r\n## A List of All Model Flags to Use With the Training Script\r\n\r\nThe following command expects the `coco` dataset to be present one directory back inside the `input` folder in XML format. You can find the dataset [here on Kaggle](https://www.kaggle.com/datasets/sovitrath/coco-xml-format). Check the `data_configs/coco.yaml` for more details. You can change the relative dataset path in the YAML file according to your structure.\r\n\r\n```bash\r\n# Usage \r\npython train.py --model fasterrcnn_resnet50_fpn_v2 --data data_configs/coco.yaml\r\n```\r\n\r\n**OR USE ANY ONE OF THE FOLLOWING**\r\n\r\n```\r\n[\r\n    'fasterrcnn_convnext_small',\r\n    'fasterrcnn_convnext_tiny',\r\n    'fasterrcnn_custom_resnet', \r\n    'fasterrcnn_darknet',\r\n    'fasterrcnn_efficientnet_b0',\r\n    'fasterrcnn_efficientnet_b4',\r\n    'fasterrcnn_mbv3_small_nano_head',\r\n    'fasterrcnn_mbv3_large',\r\n    'fasterrcnn_mini_darknet_nano_head',\r\n    'fasterrcnn_mini_darknet',\r\n    'fasterrcnn_mini_squeezenet1_1_small_head',\r\n    'fasterrcnn_mini_squeezenet1_1_tiny_head',\r\n    'fasterrcnn_mobilenetv3_large_320_fpn', # Torchvision COCO pretrained\r\n    'fasterrcnn_mobilenetv3_large_fpn', # Torchvision COCO pretrained\r\n    'fasterrcnn_nano',\r\n    'fasterrcnn_resnet18',\r\n    'fasterrcnn_resnet50_fpn_v2', # Torchvision COCO pretrained\r\n    'fasterrcnn_resnet50_fpn',  # Torchvision COCO pretrained\r\n    'fasterrcnn_resnet101',\r\n    'fasterrcnn_resnet152',\r\n    'fasterrcnn_squeezenet1_0',\r\n    'fasterrcnn_squeezenet1_1_small_head',\r\n    'fasterrcnn_squeezenet1_1',\r\n    'fasterrcnn_vitdet',\r\n    'fasterrcnn_vitdet_tiny',\r\n    'fasterrcnn_mobilevit_xxs',\r\n    'fasterrcnn_regnet_y_400mf'\r\n]\r\n```\r\n\r\n## Tutorials\r\n\r\n* [Wheat Detection using Faster RCNN and PyTorch](https://debuggercafe.com/wheat-detection-using-faster-rcnn-and-pytorch/)\r\n* [Plant Disease Detection using the PlantDoc Dataset and PyTorch Faster RCNN](https://debuggercafe.com/plant-disease-detection-using-plantdoc/)\r\n* [Small Scale Traffic Light Detection using PyTorch](https://debuggercafe.com/small-scale-traffic-light-detection/)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsovit-123%2Ffasterrcnn-pytorch-training-pipeline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsovit-123%2Ffasterrcnn-pytorch-training-pipeline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsovit-123%2Ffasterrcnn-pytorch-training-pipeline/lists"}