{"id":19198344,"url":"https://github.com/deepvac/yolov5","last_synced_at":"2025-07-05T16:34:58.525Z","repository":{"id":48530601,"uuid":"331586796","full_name":"DeepVAC/yolov5","owner":"DeepVAC","description":"DeepVAC-compliant Yolo v5 implementation.","archived":false,"fork":false,"pushed_at":"2021-07-21T12:37:33.000Z","size":147,"stargazers_count":5,"open_issues_count":5,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-09T01:08:39.085Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DeepVAC.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":"2021-01-21T10:04:41.000Z","updated_at":"2022-06-03T10:22:19.000Z","dependencies_parsed_at":"2022-09-14T00:12:16.899Z","dependency_job_id":null,"html_url":"https://github.com/DeepVAC/yolov5","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/DeepVAC%2Fyolov5","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeepVAC%2Fyolov5/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeepVAC%2Fyolov5/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeepVAC%2Fyolov5/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DeepVAC","download_url":"https://codeload.github.com/DeepVAC/yolov5/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253171261,"owners_count":21865293,"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-09T12:21:27.497Z","updated_at":"2025-05-09T01:08:44.665Z","avatar_url":"https://github.com/DeepVAC.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Yolov5\nDeepVAC-compliant Yolov5 implementation   \n\n# 简介\n本项目实现了符合DeepVAC规范的Yolov5   \n\n**项目依赖**\n\n- deepvac \u003e= 0.6.0\n- pytorch \u003e= 1.9.0\n- torchvision \u003e= 0.10.0\n\n# 如何运行本项目\n\n## 1. 阅读[DeepVAC规范](https://github.com/DeepVAC/deepvac)\n可以粗略阅读，建立起第一印象   \n\n## 2. 准备运行环境\n使用Deepvac规范指定[Docker镜像](https://github.com/DeepVAC/deepvac#2-%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87)   \n\n## 3. 准备数据集\n- 获取coco2017数据集      \n浏览器操作：     \n[coco2017labels.zip](https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017labels.zip)     \n[train2017.zip](http://images.cocodataset.org/zips/train2017.zip)     \n[val2017.zip](http://images.cocodataset.org/zips/val2017.zip)     \n[test2017.zip](http://images.cocodataset.org/zips/test2017.zip)       \n\n命令行操作：   \n```bash\ncurl -L https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017labels.zip -o coco2017labels.zip\nmkdir -p data/coco\nunzip -q coco2017labels -d data/coco   \nrm coco2017labels.zip\n```\n\n- 解压coco2017数据集\n\n- 数据集配置\n在config.py文件中作如下配置：     \n\n```python\nfrom deepvac import AttrDict, new\n\n# new(\"your train class name\")\nconfig = new(\"Yolov5Train\")\n\n# train dataset\ntrain_sample_path = \"data/coco/images/train2017\"\ntrain_target_path = \"data/coco/instances_train2017.json\"\nconfig.core.Yolov5Train.train_dataset = Yolov5MosaicDataset(config, train_sample_path, train_target_path, config.core.Yolov5Train.img_size, config.core.Yolov5Train.border)\n\n# val dataset\nval_sample_path = \"data/coco/images/val2017\"\nval_target_path = \"data/coco/instances_val2017.json\"\nconfig.core.Yolov5Train.val_dataset = Yolov5Dataset(config, val_sample_path, val_target_path, config.core.Yolov5Train.img_size)\n\n# test dataset\nconfig.core.Yolov5Test = AttrDict()\nconfig.core.Yolov5Test.test_sample_path = \"your test images dir\"\n```\n\n- 如果是自己的数据集，那么必须要符合标准coco标注格式\n\n## 4. 训练相关配置\n\n- 指定预训练模型路径(config.core.Yolov5Train.model_path)       \n[yolov5s \u0026 yolov5l](https://pan.baidu.com/share/init?surl=oA4uZUlWUtEq2dOMlBZ8hg) 提取码: g4tu\n- 指定训练分类数量(config.core.Yolov5Train.class_num)    \n- 是否采用混合精度训练(config.core.Yolov5Train.amp)     \n- 是否采用ema策略(config.core.Yolov5Train.ema)      \n- 是否采用梯度积攒到一定数量在进行反向更新梯度策略(config.core.Yolov5Train.nominal_batch_factor)     \n- dataloader相关配置(config.core.Yolov5Train.num_workers)     \n\n```python\nconfig.core.Yolov5Train.model_path = \"output/pretrained.pth\"\n\nconfig.core.Yolov5Train.class_num = 80\n\nconfig.core.Yolov5Train.amp = False\n\nconfig.core.Yolov5Train.ema = True\n# define ema_decay with other func\n# config.ema_decay = lambda x: 0.9999 * (1 - math.exp(-x / 2000))\n\nconfig.core.Yolov5Train.nominal_batch_factor = 4\n\nconfig.core.Yolov5Train.shuffle = True\nconfig.core.Yolov5Train.batch_size = 16\nconfig.core.Yolov5Train.num_workers = 8\nconfig.core.Yolov5Train.pin_memory = True\n```\n\n## 5. 训练\n\n### 5.1 单卡训练\n执行命令：\n```bash\npython3 train.py\n```\n\n## 6. 测试\n\n- 测试相关配置\n\n```python\nconfig.core.Yolov5Test.device = \"cuda\"\nconfig.core.Yolov5Test.class_num = 80\nconfig.core.Yolov5Test.img_size = 640\nconfig.core.Yolov5Test.half = False\nconfig.core.Yolov5Test.show_output_dir = \"output/show\"\nconfig.core.Yolov5Test.iou_thres = 0.45\nconfig.core.Yolov5Test.conf_thres = 0.25\nconfig.core.Yolov5Test.idx2cat = [\"cls{}\".format(i) for i in range(config.core.Yolov5Test.class_num)]\n```\n\n- 运行测试脚本：\n\n```bash\n# 方法1\nconfig.core.Yolov5Test.model_path = \u003ctrained-model\u003e\nconfig.core.Yolov5Test.test_sample_path = \u003ctest-sample-path\u003e\npython3 test.py\n\n# 方法2\npython3 test.py \u003ctrained-model(required)\u003e \u003ctest-sample-path(required)\u003e \u003clabel-path(optional)\u003e\n```\n\n## 7. 使用torchscript模型\n如果训练过程中未开启config.core.Yolov5Test.script_model_path开关，可以在测试过程中转化torchscript模型     \n- 转换torchscript模型(*.pt)     \n\n```python\nconfig.core.Yolov5Test.ema = False\nconfig.core.Yolov5Test.script_model_path = \"output/script.pt\"\n```\n  按照步骤6完成测试，torchscript模型将保存至config.core.Yolov5Test.script_model_path指定文件位置      \n\n- 加载torchscript模型\n\n```python\nconfig.core.Yolov5Test.jit_model_path = \u003ctorchscript-model-path\u003e\n```\n\n## 8. 使用静态量化模型\n```\nTODO\n```\n\n## 9. 使用coreml模型 \n- 测试环境   \n```\ntorch == 1.8.1\nnumpy == 1.19.5\ncoremltools == 4.1\n```\n\n- 转换coreml模型(*.mlmodel)\n```\n# 如果指定路径，那么在训练或者测试过程中都会进行模型转换\nimport coremltools\nconfig.cast.CoremlCast = AttrDict()\nconfig.cast.TraceCast = AttrDict()\nconfig.cast.TraceCast.model_dir = \"output/trace.pt\"\nconfig.cast.CoremlCast.model_dir = \"output/coreml.mlmodel\"\nconfig.cast.CoremlCast.input_type = None\nconfig.cast.CoremlCast.scale = 1.0 / 255.0\nconfig.cast.CoremlCast.color_layout = 'BGR'\nconfig.cast.CoremlCast.blue_bias = 0\nconfig.cast.CoremlCast.green_bias = 0\nconfig.cast.CoremlCast.red_bias = 0\nconfig.cast.CoremlCast.minimum_deployment_target = coremltools.target.iOS13\nconfig.cast.CoremlCast.classfier_config = [\"cls{}\".format(i) for i in range(config.core.Yolov5Test.class_num)]\n\n# 训练过程中转换(cast2cpu配置可配置在config.py文件也可以配置在train.py文件)\nconfig.core.Yolov5Train.cast2cpu = True\npython3 train.py\n# 测试过程中转换(cast2cpu配置可配置在config.py文件也可以配置在train.py文件)\nconfig.core.Yolov5Test.cast2cpu = True\npython3 test.py \u003ctrained-model(required)\u003e \u003ctest-sample-path(required)\u003e \u003clabel-path(optional)\u003e\n```\n- coreml模型推理   \n推理环境: macos13 or later     \n\n\n## 10. 更多功能\n如果要在本项目中开启如下功能：\n- 使用tensorboard\n- 转换ONNX\n- 转换NCNN\n- 开启量化\n- 开启自动混合精度训练\n\n请参考[DeepVAC](https://github.com/DeepVAC/deepvac)\n\n## 11. TODO\n- 20210201 项目增加了对Yolov5S和Yolov5L的支持    \n- 20210219 修复了torchscript模型C++推理代码在cuda上CUDNN_STATUS_INTER_ERROR问题(在modules/model.py中重写Fcous模块）     \n- 修复在test过程中，静态量化模型报错问题    \n- 20210622 项目更新来适应新版本deepvac\n- 20210625 项目增加coreml模型转换\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeepvac%2Fyolov5","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeepvac%2Fyolov5","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeepvac%2Fyolov5/lists"}