赛题背景:
本赛场聚焦布匹疵点智能检测,要求选手研究开发高效可靠的计算机视觉算法,提升布匹疵点检验的准确度,降低对大量人工的依赖,提升布样疵点质检的效果和效率。
比赛要求:
要求算法既要检测布匹是否包含疵点,又要给出疵点具体的位置和类别,既考察疵点检出能力、也考察疵点定位和分类能力。
赛题分数计算方式:0.2ACC+0.8mAP
ACC:是有瑕疵或无瑕疵的分类指标,考察瑕疵检出能力。
其中提交结果name字段中出现过的测试图片均认为有瑕疵,未出现的测试图片认为是无瑕疵。
mAP:参照PASCALVOC的评估标准计算瑕疵的mAP值。
参考链接:https://github.com/rafaelpadilla/Object-Detection-Metrics
具体逻辑见evaluator文件。
需要指出,本次大赛评分计算过程中,分别在检测框和真实框的交并比(IOU)在阈值0.1,0.3,0.5下计算mAP,最终mAP取三个值的平均值。
本该运行sh train.sh但是会出bug所以只能几个文件分开跑
正确的步骤是:
1.首先运行convertTrainLabel.py
,当前目录生成了convertor
文件夹,这是解析json文件的过程。
2.接下来运行process_data_yolo.py
,当前目录生成process_data
文件夹,这是数据预处理过程。
注意要生成train
和val
数据集,因此将process_data_yolo.py
中的val替换成train再运行一次。
4.直接运行train.py,它提示你在weights中加入best.pt,我们可以下载预训练权重,这里我是用的是yolov5s.pt
在yolo.py文件中可以看到,默认使用的是yolov5s,所以下载yolov5s的预训练权重就行了,该名称best.pt
放入到weights
文件夹中
6.运行train.py,终于通了,修改下epoch的次数先跑一下
最后会得到两个生成的model下载下来用于我们进行后面的docker提交
在rb大佬的帮助下,我终于懂了一点docker,然后开始自己操作,奈何bug太多还是没能成功,只是对于具体的过程已经了解清楚了,之后再试试。
由于pytorch1.4为老版本,不能读取pytorch1.7版本的best.pt,所以新建个Python脚本,把best.pt重新保存下。
ckpt = torch.load('best.pt', map_location=device) # 读取best.pt权重
torch.save(ckpt, 'new.pt', _use_new_zipfile_serialization=False) # 使用旧的方式保存
baseline的源码中,run.sh中为空,改为
python detect.py --source ./tcdata/guangdong1_round2_testB_20191024
创建Dockerfile(无后缀),文件内容如下
# Base Images
## 从天池基础镜像构建
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.4-cuda10.1-py3
## 把当前文件夹里的文件构建到镜像的根目录下
ADD . /
## 指定默认工作目录为根目录(需要把 run.sh 和生成的结果文件都放在该文件夹下,提交后才能运
行)
WORKDIR /
## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]
创建镜像
在该目录用powershell打开
登入阿里云上自己创建的镜像仓库
进行docker build -t …
查看镜像id:docker images
进入容器:docker run -it 你自己的镜像 /bin/bash
往容器中安装必要的包
pip用镜像源 安装这三个包
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy
其实之后还有一些配置和操作的坑,大家可以参考这两位大佬写的博客去做。我也还在尝试当中
链接1
链接2
说实话这个docker还是需要好好学习一下,对于这个新技术我完全没有接触过,而且这个数据8GB还废了我10块钱租的gpu,不过还是强烈推荐一下这个mistgpu平台,便宜好用支持命令行,vscode,jupyter.