object_detection.sh 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/bin/bash
  2. str=$1
  3. # str是外部传入的实参,如:sudo ./object_detection.sh/data2/fengyang/sunwin/data/image/项目名称/
  4. # <存放预处理图片的路径 ,只需定位到total_data的上一级目录就行>
  5. if [ ! -n "$str" ]; then # 利用 -n来判断字符串是否非空
  6. echo 'path 值为空'
  7. exit 0
  8. fi
  9. if [ ! -d $str ]; then # -d 文件为目录为真
  10. echo '$str 不存在,请检查路径是否存在...'
  11. exit 0
  12. fi
  13. # 注意:路径后面不要带'/'符号
  14. #train_model_path='/data2/fengyang/sunwin/train_model'
  15. #train_code_path='/data2/fengyang/sunwin/code/models-master/research/object_detection'
  16. data_path='/data2/object_detection/data/image' # 项目名称/存放total_data的路径
  17. data_manage_code_path='/data2/object_detection/code/data_manage' # 数据预处理data_manage的路径
  18. yolov5_code_path='/data2/object_detection/code/yolov5'
  19. if [[ $str == */ ]]; then project_path=${str%?};else project_path=$str;fi
  20. str_name=${project_path##*/} # ${变量名##删除字符串 正则表达式},作用:从字符串的结尾开始匹配 删除字符串
  21. project_class_img_path="${project_path}/class_img_dir"
  22. echo '333'
  23. sed -i "31c dir = $project_path" $data_manage_code_path/config/data_manage.conf # sed -i 直接对内容进行修改
  24. sed -n '30,31p' $data_manage_code_path/config/data_manage.conf # 取消默认输出,sed默认会输出所有文本内容,
  25. # 使用-n参数后只显示处理过的行,打印30到31行
  26. echo '111'
  27. cd $data_manage_code_path
  28. python run_gen.py
  29. echo '222'
  30. echo '等待三分钟...。如果不需要执行模型训练功能,请尽快关闭脚本并kill其进程'
  31. sleep 30s
  32. cd $yolov5_code_path
  33. python train.py --data /data2/object_detection/data/image/$str_name/yolo/$str_name.yaml --weights weights/yolov5l6.pt --img 1280 --epochs 70 --name $str_name --batch-size 4