配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型

这篇具有很好参考价值的文章主要介绍了配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

对于没有GPU训练机的人来讲,使用云服务器训练自己的模型应该最最优选择,只是在训练的时候开个按时计费的服务器,训练完成后保存环境镜像之后,可以完全停掉服务器,期间不产生任何费用,下次再训练时,启动环境就可以,很容易保护好自己的训练环境不受污染。

一、选择服务器

1.这里选择的是阿里有服务器,直接用支付宝账号登录。
2.选择配置,按量计费,我训练yolov5的模型,2万多的数据集,V100完全够用了。
配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型
3.选择系统和安装GPU启动
配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型
3.选择网络速度(上行下行的速度),之后确认订单就可以了。
配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型

二、配置服务器

1.连接服务器,直接点远程连接。
配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型
配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型
2.切换到root并安装需要的文件。

su
cd 
sudo apt-get install vim #vim
sudo apt-get install unzip #解压
sudo apt-get install zip #压缩
sudo apt-get install screen #保护进程会话

三、配置环境(使用Anaconda3)

1.先把Anaconda3下载到自己本地目录,之后用scp上传到服务器

 scp data/Anaconda3-5.3.0-Linux-x86_64.sh root@39.xxx.xx.xxx:/home/data/ 

等待上传完成之后,在服务器上安装Anaconda3,一路确认到安装完成。
配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型
把Anaconda3加到环境变量

sudo vim ~/.bashrc

把bin路径加到文件末尾,之后保存文件退出。

 export PATH=$PATH:/root/anaconda3/bin

配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型

使用环境生效

source ~/.bashrc

2.创建环境

 conda create --name yolov5 python=3.7
 conda activate yolov5

3.下载算法代码,可以直接从git上下载源码,也可以把自己改好的源码上传。
从git 上下载源码,yolov5s为例:

git下载

 git clone https://github.com/ultralytics/yolov5.git
 cd yolov5
 pip install -r requirements.txt

本地上传与手动安装依赖

scp data/yolov5.zip root@39.xxx.xx.xxx:/home/data/

等上传完成之后,切到服务器

unzip yolov5.zip
cd yolov5
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
pip install cython matplotlib tqdm opencv-python tensorboard scipy pillow onnx pyyaml pandas seaborn

四、数据处理

1.上传数据集到服务器

 scp data/dataset.zip root@39.xxx.xx.xxx:/home/data/yolov5 

2.上传完成之后,把数据分成训练集和测试集,这里面使用的coco数据格式,要转成yolov5的格式。

unzip dataset.zip
python generate_txt.py --img_path data/XXXXX/JPEGImages --xml_path data/XXXXX/Annotations --out_path data/XXXXX

数据转换与生成 generate_txt.py源码

import os
import glob
import argparse
import random
import xml.etree.ElementTree as ET
from PIL import Image
from tqdm import tqdm

def get_all_classes(xml_path):
    xml_fns = glob.glob(os.path.join(xml_path, '*.xml'))
    class_names = []
    for xml_fn in xml_fns:
        tree = ET.parse(xml_fn)
        root = tree.getroot()
        for obj in root.iter('object'):
            cls = obj.find('name').text
            class_names.append(cls)
    return sorted(list(set(class_names)))

def convert_annotation(img_path, xml_path, class_names, out_path):
    output = []
    im_fns = glob.glob(os.path.join(img_path, '*.jpg'))
    for im_fn in tqdm(im_fns):
        if os.path.getsize(im_fn) == 0:
            continue
        xml_fn = os.path.join(xml_path, os.path.splitext(os.path.basename(im_fn))[0] + '.xml')
        if not os.path.exists(xml_fn):
            continue
        img = Image.open(im_fn)
        height, width = img.height, img.width
        tree = ET.parse(xml_fn)
        root = tree.getroot()
        anno = []
        xml_height = int(root.find('size').find('height').text)
        xml_width = int(root.find('size').find('width').text)
        if height != xml_height or width != xml_width:
            print((height, width), (xml_height, xml_width), im_fn)
            continue
        for obj in root.iter('object'):
            cls = obj.find('name').text
            cls_id = class_names.index(cls)
            xmlbox = obj.find('bndbox')
            xmin = int(xmlbox.find('xmin').text)
            ymin = int(xmlbox.find('ymin').text)
            xmax = int(xmlbox.find('xmax').text)
            ymax = int(xmlbox.find('ymax').text)
            cx = (xmax + xmin) / 2.0 / width
            cy = (ymax + ymin) / 2.0 / height
            bw = (xmax - xmin) * 1.0 / width
            bh = (ymax - ymin) * 1.0 / height
            anno.append('{} {} {} {} {}'.format(cls_id, cx, cy, bw, bh))
        if len(anno) > 0:
            output.append(im_fn)
            with open(im_fn.replace('.jpg', '.txt'), 'w') as f:
                f.write('\n'.join(anno))
    random.shuffle(output)
    train_num = int(len(output) * 0.9)
    with open(os.path.join(out_path, 'train.txt'), 'w') as f:
        f.write('\n'.join(output[:train_num]))
    with open(os.path.join(out_path, 'val.txt'), 'w') as f:
        f.write('\n'.join(output[train_num:]))

def parse_args():
    parser = argparse.ArgumentParser('generate annotation')
    parser.add_argument('--img_path', type=str, help='input image directory')
    parser.add_argument('--xml_path', type=str, help='input xml directory')
    parser.add_argument('--out_path', type=str, help='output directory')
    args = parser.parse_args()
    return args

if __name__ == '__main__':
    args = parse_args()
    class_names = get_all_classes(args.xml_path)
    print(class_names)
    convert_annotation(args.img_path, args.xml_path, class_names, args.out_path)

五、训练模型

1.训练模型前,要先运行screen,以保证服务终端断线之后还能继续训练。

screen -S  yolo
yolo 是一个标记,可以自己随便填,用来分辨该窗口的用途,避免窗口多了自己混淆

screen 常用命令

screen -ls #查看进程
screen -r -d 1020  #后台运行的screen进程
kill -9 1020 #杀死不需要的进程
screen  -wipe #检查目前所有的screen作业,并删除已经无法使用的screen作业

2.重新激活环境

conda activate yolov5

3.训练模型

python train.py --cfg models/yolov5s.yaml --data data/ODID.yaml --hyp data/hyp.scratch.yaml --epochs 100 --multi-scale --device 0

配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型

六、Linux下常用的一些指令

  1. scp

从服务器下载文件

  scp username@IP:/remote_path/filename ~/local_destination

上传本地文件到服务器

  scp ~/local_path/local_filename username@IP:/remote_path  
从服务器下载整个目录
   scp -r username@servername:/remote_path/remote_dir/ ~/local_destination

上传目录到服务器

	scp  -r ~/local_dir username@servername:/remote_path/remote_dir
  1. vim配置
    系统级配置文件目录:/etc/vim/vimrc
    用户级配置文件目录:~/.vim/vimrc
    修改配置文件vimrc或者.vimrc

//显示行号

set nu
  1. 压缩与解压
    zip命令
    zip -r file.zip ./*
    将当前目录下的所有文件和文件夹全部压缩成file.zip文件,-r表示递归压缩子目录下所有文件.

unzip命令
unzip -o -d /home/sunny file.zip
把file.zip文件解压到 /home/sunny/
-o:不提示的情况下覆盖文件;
-d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下;

其他
zip -d file.zip smart.txt
删除压缩文件中smart.txt文件
zip -m file.zip ./rpm_info.txt
向压缩文件中file.zip中添加rpm_info.txt文件文章来源地址https://www.toymoban.com/news/detail-455042.html

  1. 终端代理
export ALL_PROXY=socks5://127.0.0.1:4081 #端口号
curl -L cip.cc #验证是否成功
  1. 显卡驱动
nvidia-smi

到了这里,关于配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用网上服务器(AutoDL)训练模型

    ①请把数据集放到名为dataset文件夹下;②数据集请压缩,后缀名为.zip;③点击确定 ①请把代码放到名为coad文件夹下;②代码请压缩,后缀名为.zip;③点击确定 下面我们有两个压缩包。 https://www.autodl.com/register?code=e0ab7117-bd25-4480-8184-5953048a2502 ①打开界面。 ②注册用户会有

    2024年02月02日
    浏览(54)
  • 本地连接服务器使用GPU训练模型

    直接运行上面的文件,然后输入密码,这密码不是服务器的密码,但是可以直接连接到服务器上面,这个东西是什么?好厉害,居然可以跳过去服务器的账号密码 我本来想忽略一些不需要上传文件,但是无法成功忽略,scp好像不支持 下面这个命令是从服务器上面传输数据到

    2024年02月07日
    浏览(54)
  • 手把手教你租用服务器以及使用Pycharm远程连接服务器训练模型

    由于模型优化过后训练时间太长,所以想使用显卡或者租服务器进行训练,but显卡太贵(只有A卡),那就租服务器好了,开始了解怎么租,去哪租一系列问题,果然只要开始思考,就是一个接一个的困难,直接被击碎。终于找到了AutoDL,美美的开始租服务器,结果又绊在了选

    2024年02月10日
    浏览(62)
  • 华为云GPU服务器使用PaddleClas和PaddleServing训练、部署车辆类型分类模型服务

    以下针对最近使用PaddleClas和PaddleServing在华为云GPU服务器上训练和部署一个车辆类型识别模型过程进行记录,以供日后自己参考和其他有需要的朋友一些帮助,接触这方面东西时间较短,如有问题欢迎批评指正。 如何在华为云服务器上搭建GPU版本的PaddlePaddle环境请参考以下文

    2024年02月13日
    浏览(42)
  • 使用pycharm连接远程GPU训练神经网络模型(超详细!)

    前言: 博主是一名学生党,因经费限制购买的电脑配置并不是很高,显存大小仅4GB,虽然日常学习时的模型训练基本能满足,但做项目或者有大模型训练需求时,就没办法满足要求了。今天这篇博客给大家分享一下如何利用pycharm连接远程GPU训练我们的神经网络模型,这篇文

    2024年02月20日
    浏览(45)
  • 【人工智能概论】 使用kaggle提供的GPU训练神经网络

    注册账号的时候可能会遇到无法进行人际验证的问题,因此可能需要科学上网一下。具体步骤略。 kaggle的GPU资源需要绑定手机号才能使用 点击右上角的头像。 点击Account 找到手机验证界面Phone Verification,会看到下图,根据1处的提示知,这种情况下手机是收不到验证码的,因

    2024年02月04日
    浏览(53)
  • SSH?Termius?一篇文章教你使用远程服务器训练!

    做深度学习自己电脑配置差?一篇文章教你使用gpu服务器! 在这个迅速变化的数字时代, 深度学习 已经成为科技革命的先锋,而拥有强大并行计算能力的 gpu 则可以成为它强大力量的源泉。 随着现在网络模型的逐渐增大,训练一个基于自己数据集的模型所需要的 gpu算力和显

    2024年02月20日
    浏览(48)
  • 使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 1.1第一代神经网络 1.2 第二代神经网络:BP 神经网络 1.

    2023年04月26日
    浏览(78)
  • matlab 使用预训练神经网络和SVM进行苹果分级(带图形界面)支持其他物品图片分级或者分类

    目录 数据集: 实验代码:alexnet版 如果你的matlab不是正版,先看这里: 数据集结构: 训练代码: 训练结果:  图形界面: 界面展示: 其他:   输出结果:         实验思路是使用预训练神经网络对图片进行特征提取,然后再使用SVM对得到的特征进行处理。         写

    2024年02月09日
    浏览(54)
  • 【云服务器 ECS 实战】云服务器新手指南(配置+使用详解)

    谈起云计算,相信大家都不陌生,可以说它已经颠覆了我们生活中的很多应用场景,如虚拟化办公、物联网、虚拟 IDC 以及日常的生活娱乐、金融、教育等多个行业领域都享受到了来自“云”技术的红利,毫不夸张的说:“云”已经渗透到了我们日常生活中的各个领域。 那么

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包