{"id":16403079,"url":"https://github.com/bm777/object_detection","last_synced_at":"2025-03-23T05:31:13.747Z","repository":{"id":107402419,"uuid":"266855688","full_name":"bm777/object_detection","owner":"bm777","description":"Implementatoin of object detection using Tensorflow 2.1.0 | this can be use in a car for object detection","archived":false,"fork":false,"pushed_at":"2022-04-05T08:27:49.000Z","size":339,"stargazers_count":13,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-18T18:06:31.238Z","etag":null,"topics":["absl","darknet","detection","graph-mode","object-detection","opencv","python","tensorflow","transfer-learning","yolov3"],"latest_commit_sha":null,"homepage":"","language":"Python","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/bm777.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":"2020-05-25T18:46:55.000Z","updated_at":"2024-02-22T11:07:05.000Z","dependencies_parsed_at":"2023-05-17T10:00:24.861Z","dependency_job_id":null,"html_url":"https://github.com/bm777/object_detection","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/bm777%2Fobject_detection","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bm777%2Fobject_detection/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bm777%2Fobject_detection/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bm777%2Fobject_detection/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bm777","download_url":"https://codeload.github.com/bm777/object_detection/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245061382,"owners_count":20554563,"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":["absl","darknet","detection","graph-mode","object-detection","opencv","python","tensorflow","transfer-learning","yolov3"],"created_at":"2024-10-11T05:48:10.285Z","updated_at":"2025-03-23T05:31:13.738Z","avatar_url":"https://github.com/bm777.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Average Time Elapsed for process on each frame: 71.6ms \n\n\n# YoloV3 Implementation in Tensorflow 2.x\n\nSee on YouTube: [4K YoloV3 Object detection using Tensorflow 2.1](https://www.youtube.com/watch?v=2Xc9oj2qMRc)\n\nThis repo provide a clean implementation of YoloV3 in Tensorflow 2.x using all the best practices.\n\n![Instance Detection Sample](assets/Object_On_Frame.jpg)\n\n\n## Key Features\n\n- [x] TensorFlow 2.1\n- [x] `yolov3` with pre-trained Weights\n- [ ] `yolov3-tiny` with pre-trained Weights\n- [x] Inference example\n- [x] Transfer learning example\n- [ ] Eager mode training with `tf.GradientTape`\n- [ ] Graph mode training with `model.fit`\n- [x] Functional model with `tf.keras.layers`\n- [x] Input pipeline using `tf.data`\n- [x] Tensorflow Serving\n- [ ] Vectorized transformations\n- [x] GPU accelerated\n- [x] Fully integrated with `absl-py` from [abseil.io](https://abseil.io)\n- [x] Clean implementation\n- [x] Following the best practices\n- [x] MIT License\n\n\n## Usage\n\n### Installation\n\n#### Pip\n\n```bash\n# without GPU\npip install -r requirements.txt\n#with GPU\npip install -r requirements-gpu.txt\n```\n\n### Nvidia Driver (For GPU)\n\n```bash\n# Ubuntu 18.04\nsudo apt-add-repository -r ppa:graphics-drivers/ppa\nsudo apt install nvidia-driver-440\n# Windows/Other\nhttps://www.nvidia.com/Download/index.aspx\n```\n\n### Convert pre-trainned Darknet weights\n\n```bash\n# yolov3\nwget https://pjreddie.com/media/files/yolov3.weights -O data/yolov3.weights\npython convert.py --weights ./data/yolov3.weights --output ./checkpoints/yolov3.tf\n```\n\n### Detection \n\n```bash\n# WebCam\npython object_detected.py --video 0\n\n# Video file\npython object_detected.py --video path_to_file.mp4\n\n# Vidoe file with output\npython object_detected.py --video path_to_file.mp4 --output ./output.avi\n```\n\n### Training \n\nsoon\n\n\n## Implementation Details\n\n\n### Loading pre-trained Darknet weights\n\nvery hard with pure functional API because the layer ordering is different in\ntf.keras and darknet. The clean solution here is creating sub-models in keras.\nKeras is not able to save nested model in h5 format properly, TF Checkpoint is\nrecommended since its offically supported by TensorFlow.\n\n## Command Line Args Reference\n\n```bash\nconvert.py:\n  --output: path to output\n    (default: './checkpoints/yolov3.tf')\n  --weights: path to weights file\n    (default: './data/yolov3.weights')\n  --num_classes: number of classes in the model\n    (default: '80')\n    (an integer)\n\n\ndetect_video.py:\n  --classes: path to classes file\n    (default: './data/coco.names')\n  --video: path to input video (use 0 for cam)\n    (default: './data/video.mp4')\n  --output: path to output video (remember to set right codec for given format. e.g. XVID for .avi)\n    (default: None)\n  --output_format: codec used in VideoWriter when saving video to file\n    (default: 'XVID')\n  --weights: path to weights file\n    (default: './checkpoints/yolov3.tf')\n  --num_classes: number of classes in the model\n    (default: '80')\n    (an integer)\n\n```\n\n# Change Log\n\n#### May 25, 2020\n\n- Updated to Tensorflow to v2.1.0 Release\n\n\n## References\n\nIt is pretty much impossible to implement this from the yolov3 paper alone. \n\n- https://github.com/pjreddie/darknet\n    - official yolov3 implementation\n- https://github.com/AlexeyAB\n    - explinations of parameters\n- https://github.com/qqwweee/keras-yolo3\n    - models\n    - loss functions\n- https://github.com/YunYang1994/tensorflow-yolov3\n    - data transformations\n    - loss functions\n- https://github.com/ayooshkathuria/pytorch-yolo-v3\n    - models\n- https://github.com/broadinstitute/keras-resnet\n    - batch normalization fix\n- https://github.com/zzh8829/yolov3-tf2\n\t- tiny\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbm777%2Fobject_detection","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbm777%2Fobject_detection","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbm777%2Fobject_detection/lists"}