全球人工智能技术创新大赛【热身赛一】布匹疵点智能识别:比赛全流程体验(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

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

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

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。 &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与未来教育:探索智能教学的新纪元
【10月更文挑战第16天】 在21世纪这个信息爆炸的时代,技术革新正以惊人的速度改变着我们的生活和工作方式。其中,人工智能(AI)作为引领变革的先锋力量,不仅重塑了工业、医疗、金融等多个行业的面貌,也正悄然渗透进教育领域,预示着一场关于学习与教学方式的革命。本文旨在探讨人工智能如何为未来教育带来前所未有的机遇与挑战,从个性化学习路径的定制到教育资源的优化分配,再到教师角色的转变,我们一同展望一个更加智能、高效且包容的教育新纪元。
|
2月前
|
传感器 数据采集 机器学习/深度学习
人工智能与环境保护:智能监测与治理的新策略
【9月更文挑战第21天】人工智能在环境保护中的应用,为智能监测与治理提供了新的策略和方法。通过实时数据采集与分析、智能预警与应急响应、精准化决策支持等技术的应用,AI正在引领一场革命性的变革。未来,随着技术的不断发展和应用场景的拓展,AI将在环境保护中发挥更加重要的作用,助力我们构建更加绿色、可持续的未来。让我们携手共进,共同迎接一个更加美好的明天。
|
4月前
|
机器学习/深度学习 人工智能 Shell
人工智能平台PAI操作报错合集之在分布式训练过程中遇到报错,是什么原因
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
3月前
|
人工智能 监控 算法
智能时代的伦理困境:AI技术的道德边界探索人工智能在教育领域的革新之路未来编程:人工智能与代码共生的新篇章
【8月更文挑战第21天】在人工智能(AI)技术飞速发展的今天,我们正处在一个前所未有的科技变革时期。随着AI技术的深入人类生活的方方面面,它不仅带来了便利和效率的提升,同时也引发了关于道德和伦理的深刻讨论。本文将探讨AI技术发展中遇到的伦理挑战,以及如何建立合理的道德框架来指导AI的未来应用,确保技术进步与人类社会价值观的和谐共存。
243 61
|
2月前
|
人工智能 API 数据库
FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
【9月更文挑战第5天】 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
|
25天前
|
机器学习/深度学习 移动开发 自然语言处理
基于人工智能技术的智能导诊系统源码,SpringBoot作为后端服务的框架,提供快速开发,自动配置和生产级特性
当身体不适却不知该挂哪个科室时,智能导诊系统应运而生。患者只需选择不适部位和症状,系统即可迅速推荐正确科室,避免排错队浪费时间。该系统基于SpringBoot、Redis、MyBatis Plus等技术架构,支持多渠道接入,具备自然语言理解和多输入方式,确保高效精准的导诊体验。无论是线上医疗平台还是大型医院,智能导诊系统均能有效优化就诊流程。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
智能新纪元:人工智能如何重塑我们的未来
想象一下,未来的世界被一种无形的智能所包围,它不仅理解我们的需求,还能预测我们的欲望。这不是科幻小说的情节,而是人工智能(AI)技术正在逐步实现的愿景。本文将带你一探AI技术的最新进展,以及它是如何悄然改变我们的生活、工作和思维方式。从深度学习到自然语言处理,我们将一同见证这场科技革命如何开启智能新纪元的大门。
|
2月前
|
机器学习/深度学习 数据采集 人工智能
智能化运维的探索之旅:从自动化到人工智能
在数字化浪潮中,运维领域正经历一场革命。本文将带你领略从传统手动操作到自动化脚本,再到集成人工智能的智能运维平台的演变之路。我们将探讨如何通过技术创新提升效率、降低成本并增强系统的可靠性和安全性。文章不仅分享技术演进的故事,还提供了实现智能化运维的实践策略和未来趋势的展望。
|
3月前
|
机器学习/深度学习 人工智能 自动驾驶
探索人工智能的未来应用:从智能助手到自动驾驶
【8月更文挑战第30天】 在本文中,我们将深入探讨人工智能(AI)的未来应用,从智能助手到自动驾驶。我们将看到AI如何改变我们的生活,并讨论其潜在的影响和挑战。让我们一起探索这个令人兴奋的领域吧!
66 1
|
3月前
|
物联网 Serverless API
函数计算产品使用问题之怎么部署Docker镜像进行lora训练
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。