--- title: YoloV3 on PASCAL VOC Dataset From Scratch (Slide for GradCam output) emoji: 🚀 colorFrom: gray colorTo: blue sdk: gradio sdk_version: 3.39.0 app_file: app.py pinned: false license: mit --- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference # [GithubREPO](https://github.com/deepanshudashora/ERAV1/tree/master/session13) # Training Procedure #### [Experiment 1](https://github.com/deepanshudashora/ERAV1/tree/master/session13/lightning_version/Experiments) 1. The model is trained on Tesla T4 (15GB GPU memory) 2. The training is completed in two phases 3. The first phase contains 20 epochs and the second phase contains another 20 epochs 4. In the first training we see loss dropping correctly but in the second training it drops less 5. We run our two training loops separately and do not run any kind of validation on them, except for validation loss #### [Experiment 2](https://github.com/deepanshudashora/ERAV1/tree/master/session13/lightning_version) 1. The model is trained on 2 Tesla t4 GPUs, with distributed training using PyTorch lightning 2. For doing the distributed training we use the strategy ```ddp_notebook_find_unused_parameters_true``` * Later we evaluate the model and get the numbers * The lightning generally saves the model as .ckpt format, so we convert it to torch format by saving state dict as .pt format * For doing this we use these two lines of code ``` best_model = torch.load(weights_path) torch.save(best_model['state_dict'], f'best_model.pth') litemodel = YOLOv3(num_classes=num_classes) litemodel.load_state_dict(torch.load("best_model.pth",map_location='cpu')) device = "cpu" torch.save(litemodel.state_dict(), PATH) ``` * The model starts overfitting on the dataset after 30 epochs * Future Improvements 1. Train the model in 1 shot instead of two different phases 2. Keep a better batch size (Basically earn more money and buy a good GPU) 3. Data transformation also plays a vital role here 4. OneCycle LR range needs to be appropriately modified for a better LR # Data Transformation Along with the transforms mentioned in the [config file](https://github.com/deepanshudashora/ERAV1/blob/master/session13/lightning_version/config.py), we also apply **mosaic transform** on 75% images [Reference](https://www.kaggle.com/code/nvnnghia/awesome-augmentation/notebook) # Accuracy Report ``` Class accuracy is: 85.015236% No obj accuracy is: 98.522491% Obj accuracy is: 65.760597% MAP: 0.4661380648612976 ``` # [Training Logs](https://github.com/deepanshudashora/ERAV1/blob/master/session13/lightning_version/training_logs/csv_training_logs/lightning_logs/version_0/metrics.csv) #### For faster execution we run the validation step after 20 epochs for the first 20 epochs of training and after that after every 5 epochs till 40 epochs ``` lr-Adam step train_loss epoch val_loss 786 NaN 19499 4.653981 37.0 NaN 787 0.000160 19549 NaN NaN NaN 788 NaN 19549 4.864988 37.0 NaN 789 0.000160 19599 NaN NaN NaN 790 NaN 19599 5.241925 37.0 NaN 791 0.000160 19649 NaN NaN NaN 792 NaN 19649 5.020171 37.0 NaN 793 0.000161 19699 NaN NaN NaN 794 NaN 19699 4.245292 38.0 NaN 795 0.000161 19749 NaN NaN NaN 796 NaN 19749 4.541957 38.0 NaN 797 0.000161 19799 NaN NaN NaN 798 NaN 19799 3.837740 38.0 NaN 799 0.000161 19849 NaN NaN NaN 800 NaN 19849 4.239679 38.0 NaN 801 0.000161 19899 NaN NaN NaN 802 NaN 19899 4.034101 38.0 NaN 803 0.000161 19949 NaN NaN NaN 804 NaN 19949 5.010788 38.0 NaN 805 0.000161 19999 NaN NaN NaN 806 NaN 19999 3.980245 38.0 NaN 807 0.000161 20049 NaN NaN NaN 808 NaN 20049 4.641729 38.0 NaN 809 0.000161 20099 NaN NaN NaN 810 NaN 20099 4.563717 38.0 NaN 811 0.000161 20149 NaN NaN NaN 812 NaN 20149 4.422552 38.0 NaN 813 0.000161 20199 NaN NaN NaN 814 NaN 20199 4.925357 38.0 NaN 815 0.000161 20249 NaN NaN NaN 816 NaN 20249 4.788391 39.0 NaN 817 0.000161 20299 NaN NaN NaN 818 NaN 20299 4.478580 39.0 NaN 819 0.000161 20349 NaN NaN NaN 820 NaN 20349 4.624731 39.0 NaN 821 0.000161 20399 NaN NaN NaN 822 NaN 20399 4.425498 39.0 NaN 823 0.000161 20449 NaN NaN NaN 824 NaN 20449 4.361921 39.0 NaN 825 0.000161 20499 NaN NaN NaN 826 NaN 20499 4.318252 39.0 NaN 827 0.000161 20549 NaN NaN NaN 828 NaN 20549 4.013813 39.0 NaN 829 0.000161 20599 NaN NaN NaN 830 NaN 20599 4.476331 39.0 NaN 831 0.000161 20649 NaN NaN NaN 832 NaN 20649 4.192605 39.0 NaN 833 0.000161 20699 NaN NaN NaN 834 NaN 20699 4.065756 39.0 NaN 835 NaN 20719 NaN 39.0 4.348697 ```