train.sh 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. # Dataset setting
  2. DATASET="coco"
  3. DATA_ROOT="/data/datasets/"
  4. # DATA_ROOT="/Users/liuhaoran/Desktop/python_work/object-detection/dataset/"
  5. # MODEL setting
  6. MODEL="yolov5_s"
  7. IMAGE_SIZE=640
  8. RESUME="weights/coco/yolov5_s/yolov5_s_best.pth"
  9. if [[ $MODEL == *"yolov8"* ]]; then
  10. # Epoch setting
  11. BATCH_SIZE=128
  12. MAX_EPOCH=500
  13. WP_EPOCH=3
  14. EVAL_EPOCH=10
  15. NO_AUG_EPOCH=20
  16. elif [[ $MODEL == *"yolox2"* ]]; then
  17. # Epoch setting
  18. BATCH_SIZE=128
  19. MAX_EPOCH=300
  20. WP_EPOCH=3
  21. EVAL_EPOCH=10
  22. NO_AUG_EPOCH=20
  23. elif [[ $MODEL == *"yolox"* ]]; then
  24. # Epoch setting
  25. BATCH_SIZE=64
  26. MAX_EPOCH=300
  27. WP_EPOCH=3
  28. EVAL_EPOCH=10
  29. NO_AUG_EPOCH=15
  30. elif [[ $MODEL == *"yolov7"* ]]; then
  31. # Epoch setting
  32. BATCH_SIZE=128
  33. MAX_EPOCH=300
  34. WP_EPOCH=3
  35. EVAL_EPOCH=10
  36. NO_AUG_EPOCH=20
  37. elif [[ $MODEL == *"yolov5"* ]]; then
  38. # Epoch setting
  39. BATCH_SIZE=128
  40. MAX_EPOCH=300
  41. WP_EPOCH=3
  42. EVAL_EPOCH=10
  43. NO_AUG_EPOCH=20
  44. elif [[ $MODEL == *"yolov4"* ]]; then
  45. # Epoch setting
  46. BATCH_SIZE=128
  47. MAX_EPOCH=300
  48. WP_EPOCH=3
  49. EVAL_EPOCH=10
  50. NO_AUG_EPOCH=20
  51. elif [[ $MODEL == *"yolov3"* ]]; then
  52. # Epoch setting
  53. BATCH_SIZE=128
  54. MAX_EPOCH=300
  55. WP_EPOCH=3
  56. EVAL_EPOCH=10
  57. NO_AUG_EPOCH=20
  58. else
  59. # Epoch setting
  60. BATCH_SIZE=128
  61. MAX_EPOCH=150
  62. WP_EPOCH=3
  63. EVAL_EPOCH=10
  64. NO_AUG_EPOCH=0
  65. fi
  66. # -------------------------- Train Pipeline --------------------------
  67. WORLD_SIZE=$1
  68. if [ $WORLD_SIZE == 1 ]; then
  69. python train.py \
  70. --cuda \
  71. --dataset ${DATASET} \
  72. --root ${DATA_ROOT} \
  73. --model ${MODEL} \
  74. --batch_size ${BATCH_SIZE} \
  75. --img_size ${IMAGE_SIZE} \
  76. --wp_epoch ${WP_EPOCH} \
  77. --max_epoch ${MAX_EPOCH} \
  78. --eval_epoch ${EVAL_EPOCH} \
  79. --no_aug_epoch ${NO_AUG_EPOCH} \
  80. --resume ${RESUME} \
  81. --ema \
  82. --fp16 \
  83. --multi_scale
  84. elif [[ $WORLD_SIZE -gt 1 && $WORLD_SIZE -le 8 ]]; then
  85. python -m torch.distributed.run --nproc_per_node=${WORLD_SIZE} train.py \
  86. --cuda \
  87. -dist \
  88. --dataset ${DATASET} \
  89. --root ${DATA_ROOT} \
  90. --model ${MODEL} \
  91. --batch_size ${BATCH_SIZE} \
  92. --img_size ${IMAGE_SIZE} \
  93. --wp_epoch ${WP_EPOCH} \
  94. --max_epoch ${MAX_EPOCH} \
  95. --eval_epoch ${EVAL_EPOCH} \
  96. --no_aug_epoch ${NO_AUG_EPOCH} \
  97. --resume ${RESUME} \
  98. --ema \
  99. --fp16 \
  100. --multi_scale \
  101. --sybn
  102. else
  103. echo "The WORLD_SIZE is set to a value greater than 8, indicating the use of multi-machine \
  104. multi-card training mode, which is currently unsupported."
  105. exit 1
  106. fi