Datawhale | CV-异常检测1-阿里天池比赛流程体验

全球人工智能技术创新大赛【热身赛一】记录

Content

  • 比赛简介
  • 数据预处理
  • 模型训练
  • docker封装与提交
    • 1.安装docker和nvidia-docker
    • 2.配置Dockerfile
    • 3.Build,tag and push

比赛简介

比赛为CV目标检测方向的任务,赛题为对提供的布匹图像进行缺陷检测。评估指标为0.2ACC+0.8mAP。
相关链接

比赛网址:https://tianchi.aliyun.com/competition/entrance/531864/information
Datawhale baseline:https://github.com/datawhalechina/team-learning-cv/tree/master/DefectDetection
yolov5开源工程:https://github.com/ultralytics/yolov5
dalao笔记:https://blog.csdn.net/qq_26751117/article/details/113853150?spm=5176.12282029.0.0.3adf553etpqjoE

数据预处理

参考Datawhale baseline提供的代码,其中convertTrainLable.py和process_data_yolo.py涉及到数据的预处理。
赛题给出的图片为jpg格式,标注则全部存储在两个json文件中。为了使数据和yolov5的输入格式要求一致,用convertTrainLable.py进行预处理。本赛题数据分为train(又分为part1、2、3三个压缩文件)和train2两部分,用convertTrainLable.py处理两次即可(修改路径)。process_data_yolo.py则是进行图像裁剪,裁剪后尺寸为1024*1024,需要调用两次,分别处理train和val(修改路径)。

模型训练

使用yolov5的开源工程进行训练,设置参考github网站教程。其中与训练权重yolov5x6.pt需要自己下载。我的训练设置如下,用了4张1080Ti同时进行训练。

python train.py --weights weights/yolov5x6.pt --cfg models/yolov5x.yaml --data data/clothDefect.yaml --img 1024 --batch-size 16

由于时间限制,暂时训练50个epoch左右,三个指标变化如下。
Datawhale | CV-异常检测1-阿里天池比赛流程体验_第1张图片
最后注意大佬笔记中提到的torch版本问题,稍微处理一下模型文件:

ckpt = torch.load('best.pt', map_location=device)    # 读取best.pt权重
torch.save(ckpt, 'new.pt', _use_new_zipfile_serialization=False)    # 使用旧的方式保存

docker封装与提交

docker的使用参见教程:https://tianchi.aliyun.com/competition/entrance/231759/tab/226

1.安装docker和nvidia-docker

最好的方法是参照官方教程:
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html
我使用的是centos7系统,基本顺利,小bug自行搜索很容易解决。

2.配置Dockerfile

Dockerfile参考大佬设置如下:

# Dockerfile
# Base Images
## 从天池基础镜像构建
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.4-cuda10.1-py3
## 把当前文件夹里的文件构建到镜像的根目录下
ADD . /
## 指定默认工作目录为根目录(需要把 run.sh 和生成的结果文件都放在该文件夹下,提交后才能运行)

WORKDIR /
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install opencv-python
RUN pip install matplotlib
RUN pip install scipy
RUN pip install tensorboard
RUN apt update && apt install -y libgl1-mesa-glx && apt-get install -y libglib2.0-0
## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]

Datawhale中的run.sh要修改为:

python detect.py --source ./tcdata/guangdong1_round2_testB_20191024

3.Build,tag and push

构建镜像使用命令。

docker build -t registry.cn-hangzhou.aliyuncs.com/xxx/xxx_yy:1.0 .

其中xxx和xxx_yy是可在自己的阿里云仓库获得。查看image是否已经有tag,如果没有tag为registry.cn-hangzhou.aliyuncs.com/xxx/xxx_yy:1.0。
用docker login登录自己的阿里云账号,然后用docker pull上传到自己的阿里云仓库。
最后比赛提交界面输入registry.cn-hangzhou.aliyuncs.com/xxx/xxx_yy:1.0作为提交地址。

你可能感兴趣的:(DL,深度学习)