全球人工智能技术创新大赛【热身赛一】布匹疵点智能识别:比赛全流程体验(baseline训练+Docker提交)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 全球人工智能技术创新大赛【热身赛一】布匹疵点智能识别:比赛全流程体验(baseline训练+Docker提交)

相关链接:

天池:全球人工智能技术创新大赛【热身赛一】布匹疵点智能识别

阿里云容器镜像服务平台

datawhale学习计划以及baseline的代码下载地址

训练以及镜像构建全是在 windows10 专业版 上完成的。主要为了先完成流程,并不关心代码本身。参考着赵大佬的博客,完成了本次的比赛流程体验。于是结合着博客的主要核心内容,以及我自己遇到的坑和解决方案,完成了本篇文章。

一.完成baseline的训练

本该运行train.sh

  • 当前文件目录打开git bash
  • 输入source activate virtual_name激活你的虚拟环境
  • 输入python train.sh去运行

但是由于存在一些坑点,我们不这么做,正确的步骤是:

1.首先运行convertTrainLabel.py,当前目录生成了convertor文件夹,这是解析json文件的过程。

2.接下来运行process_data_yolo.py,当前目录生成process_data文件夹,这是数据预处理过程。

注意要生成train和val数据集,因此将process_data_yolo.py中的val替换成train再运行一次。

3.train.py 文件121行附近作如下修改

4.直接运行train.py,它提示你在weights中加入best.pt,我们可以下载预训练权重

YOLOV5预训练权重下载

在yolo.py文件中可以看到,默认使用的是yolov5s,所以下载yolov5s的预训练权重就行了,该名称best.pt放入到weight文件夹中

5.再次运行train.py,有可能会出现显存不够的情况

train.py 364行附近

修改默认批次,我直接修改成了1

6.运行train.py,终于通了

15分钟一轮,训练了8轮,感觉差不多了,就暂停了,毕竟先要完成流程,提高分数是后续的事情了。

二.镜像打包并上传到镜像仓库

2.1首先在阿里云容器服务平台创建本次比赛的镜像仓库

win10使用Docker以及在天池比赛上提交容器镜像文件

2.2准备所需的文件

天池准备的常用基础镜像

由于pytorch1.4为老版本,不能读取pytorch1.7版本的best.pt

修改

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

创建一个文件夹(名字自己起),把除了数据集的所有文件全部copy到该目录下。

requirements不要动

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"]

2.3创建镜像

在该目录用powershell打开

  • 登入阿里云上自己创建的镜像仓库
  • 进行docker build -t …
  • 查看镜像id:docker images
  • 进入容器:docker run -it 你自己的镜像 /bin/bash


2.4往容器中安装必要的包

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

进入python模式

python
>>>import cv2

如果出现报错(如果没有直接进入2.5保存镜像环节)

返回命令行模式

>>>exit()

进行下面步骤

docker 容器内没有vi/vim,只能通过这种方式修改成阿里源

cat > /etc/apt/sources.list << EOF
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
EOF

接下来

apt update
apt install libgl1-mesa-glx
apt-get install -y libglib2.0-0

2.5保存镜像

1.退出但不关闭容器 ctrl+p+q

2.docker ps 查看 容器的id

注意是 容器的id 不是镜像的 id

3.将容器保存为镜像

docker commit 你的容器id  registry.cn……….(自己的仓库地址)……….:1.0

4.查看镜像

docker images

5.测试镜像

docker run 你的镜像id sh run.sh

因为tcdata是空的,所以报错也很正常

6.推送镜像

docker push  registry.cn……….(自己的仓库地址)……….:1.0

这样子的结果就是推送成功了

在比赛中提交结果,约等待半小时左右,结果就出来了。

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
10天前
|
Kubernetes 调度 Docker
深入探讨容器编排技术:从Docker到Kubernetes
容器编排在现代IT中日益关键,从Docker到Kubernetes,助力应用的自动化部署和扩展。Docker提供容器技术,打包应用及环境为镜像,通过引擎、镜像、容器、网络和存储组件实现隔离运行。Kubernetes作为高级容器编排平台,管理Pod(多容器集合),其核心包括API服务器、控制器管理器、调度器和Kubelet。Kubernetes集群由Master和Worker节点构成,实现Pod的高效调度和运行。
36 6
|
19天前
|
持续交付 开发者 Docker
深入了解 Docker:革命性的容器化技术
Docker,自2013年起,革新了软件开发和部署,解决了环境差异问题。这个轻量级容器技术基于Linux容器(LXC),提供应用程序隔离和环境一致性。Docker通过容器化实现快速部署、CI/CD集成和微服务架构。相比虚拟机,Docker更轻便,不需模拟完整操作系统。它简化流程,提升效率,促进了容器化技术的普及。
58 0
|
2月前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与机器学习:开启智能新时代的密钥
人工智能与机器学习:开启智能新时代的密钥
30 0
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
springboot基于人工智能和自然语言理解技术的医院智能导医系统源码
智能导诊系统可为患者提供线上挂号智能辅助服务,患者根据提示手动输入自己的基本症状,通过智能对话方式,该系统会依据大数据一步步帮助患者“诊断”,并最终推荐就医的科室和相关专家。患者可自主选择,实现“一键挂号”。这一模式将精确的导诊服务前置,从源头上让医疗服务更高效。
373 2
|
2月前
|
人工智能 自然语言处理 人机交互
吴泳铭:拥抱人工智能驱动的产业智能革命
吴泳铭:拥抱人工智能驱动的产业智能革命
108823 483
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(NLP自然语言处理概念介绍)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(NLP自然语言处理概念介绍)
50 0
|
3天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
2月前
|
机器学习/深度学习 人工智能 运维
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(二)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
60 1
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(一)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
76 1