• DAMOYOLO windows 单卡训练


    最近达摩院放出了目前最能打的yolo算法,时间和精度都得到了提升

     目前代码已经开源:

    代码地址:GitHub - tinyvision/DAMO-YOLO: DAMO-YOLO: a fast and accurate object detection method with some new techs, including NAS backbones, efficient RepGFPN, ZeroHead, AlignedOTA, and distillation enhancement.

            代码预设仅支持分布式训练,对于硬件资源有限的小伙伴来说,算法的训练就不是太友好了,但是对于想要尝试的小伙伴还是有办法的

    一、修改train中的代码

    1. #!/usr/bin/env python
    2. # Copyright (C) Alibaba Group Holding Limited. All rights reserved.
    3. import argparse
    4. import copy
    5. import os
    6. import torch
    7. from loguru import logger
    8. from damo.apis import Trainer
    9. from damo.config.base import parse_config
    10. from damo.utils import synchronize
    11. os.environ['MASTER_ADDR'] = 'localhost'
    12. os.environ['MASTER_PORT'] = '12345'
    13. def make_parser():
    14. """
    15. Create a parser with some common arguments used by users.
    16. Returns:
    17. argparse.ArgumentParser
    18. """
    19. parser = argparse.ArgumentParser('Damo-Yolo train parser')
    20. parser.add_argument(
    21. '-f',
    22. '--config_file',
    23. default=r'G:\xxx\DAMO-YOLO\configs\damoyolo_tinynasL20_T.py', # xxx自己的路径
    24. type=str,
    25. help='plz input your config file',
    26. )
    27. parser.add_argument('--local_rank', type=int, default=0)
    28. parser.add_argument('--tea_config', type=str, default=None)
    29. parser.add_argument('--tea_ckpt', type=str, default=None)
    30. parser.add_argument(
    31. 'opts',
    32. help='Modify config options using the command-line',
    33. default=None,
    34. nargs=argparse.REMAINDER,
    35. )
    36. return parser
    37. @logger.catch
    38. def main():
    39. args = make_parser().parse_args()
    40. torch.cuda.set_device(args.local_rank)
    41. # torch.distributed.init_process_group(backend='nccl', init_method='env://', world_size=torch.cuda.device_count(), rank=args.local_rank)
    42. try:
    43. world_size = torch.cuda.device_count() # int(os.environ["WORLD_SIZE"])
    44. rank = args.local_rank # int(os.environ["RANK"])
    45. # distributed.init_process_group("nccl")
    46. torch.distributed.init_process_group("gloo",rank=rank,world_size=world_size)
    47. except KeyError:
    48. world_size = torch.cuda.device_count()
    49. rank = args.local_rank
    50. torch.distributed.init_process_group(
    51. backend="nccl",
    52. init_method='env://',
    53. rank=rank,
    54. world_size=world_size,
    55. )
    56. synchronize()
    57. if args.tea_config is not None:
    58. tea_config = parse_config(args.tea_config)
    59. else:
    60. tea_config = None
    61. config = parse_config(args.config_file)
    62. config.merge(args.opts)
    63. trainer = Trainer(config, args, tea_config)
    64. trainer.train(args.local_rank)
    65. if __name__ == '__main__':
    66. main()

    1、增加 

    os.environ['MASTER_ADDR'] = 'localhost'

    os.environ['MASTER_PORT'] = '12345'

            否则会报:

    ValueError: Error initializing torch.distributed using env:// rendezvous: environment variable MASTER_ADDR expected, but not set

    or

    ValueError: Error initializing torch.distributed using env:// rendezvous: environment variable MASTER_PORT expected, but not set

    2、windows不支持nccl backbone所以init_process_group中改为‘gloo’

    二、改配置configs\xxx.py

            如damoyolo_tinynasL20_T.py找到代码17行的

    self.train.batch_size = 256 --->调小即可

            ps:建议设置为8, 训练过程中占用显存较大

    三、改数据集路径

    damo\config\paths_catalog.py

            找到代码的第8行修改

    DATA_DIR = r'G:\xxx\train_data'  

            同时还要修改第38行的路径,改成绝对路径即可,否则也会报如下错误

    ImportError: G:\xxx\DAMO-YOLO\configs\damoyolo_tinynasL20_T.py doesn't contains class named 'Config'

            到这里基本上就能在windows端使用单卡运行起来了

            

  • 相关阅读:
    【864. 获取所有钥匙的最短路径】
    从助力跨境互通到保障农民工,区块链在大湾区做了什么? | 研讨会
    6、Maven的依赖
    安装porterLB
    zookeeper应用之分布式屏障
    【CSDN】5周年创作纪念日,不忘初心,砥砺前行。
    0~n-1缺失的数字(注意尾巴也有可能)
    React Native 的手势和触摸事件
    在 Gorm 中学习分页和排序
    springboot项目常用的初始化方式,看看你知道几个?
  • 原文地址:https://blog.csdn.net/athrunsunny/article/details/128171132