用服务器在ImageNet上进行DL训练分析(一)

SSH服务器配置

用cmd连接服务器使用

直接在cmd中输入

ssh yuhao@10.130.147.227

然后输入密码即可进入服务器使用

用VSCode连接远程服务器使用

可以使用前端图形化界面直接查找操作文件,也可以使用终端进行控制

用服务器在ImageNet上进行DL训练分析(一)

参考https://zhuanlan.zhihu.com/p/89662757

使用VNC联网(校园网)

在服务器输入vncserver根据提示创建并配置一个服务器

在本地下载VNC Viewer,输入10.130.147.227:6(6为创建时的序号)

但打开后出现灰屏鼠标为x标记情况

查询资料后将/yuhao/.vnc/xstartup文件使用vim修改如下(若使用VSCode则可直接打开修改)

#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[-r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
#gnome-session &
x-session-manager & xfdesktop & xfce4-panel &
xfce4-menu-plugin &
xfsettingsd &
xfconfd &
xfwm4 &
# Fix to make GNOME work

export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession

之后先后使用vncserver -kill :6(注意kill和冒号中间有一个空格)和vncserver :6重启VNC服务器。就可以正常看到图形化界面并连接网络使用了。

Python环境配置

连接网络后就可以使用wget指令进行下载

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh

之后先使用nvcc -V查询具体平台的CUDA Toolkit版本,本客户端查询为10.2

使用conda create -n pyt-gpu python=3.6 pytorch torchvision cudatoolkit=10.2 -c pytorch创新新的虚拟环境(名为pyt-gpu可替换,cudatoolkit=10.2处改为查询到的版本)

注:若报错‘conda:未找到命令’
	只需按以下方式配置环境变量即可:
	#(1)修改环境变量
	vim ~/.bashrc
	#(2)在最后一行加上
	export PATH=‘/your_miniconda3_path/bin‘:$PATH
		#保存退出
	#(3)重新激活环境变量
	source ~/.bashrc

之后就可通过source activate pyt-gpuconda deactivate来激活和退出虚拟环境

ImageNet2012数据集使用

数据集文件下载介绍

训练集及验证集(val):

可自行寻找网盘资源下载

ILSVRC2012_img_train.tar及ILSVRC2012_img_val.tar

下载后需要进一步处理,训练集内部压缩包未解压,验证集未分类

验证集标签(label)所需数据:

https://download.csdn.net/download/Bixiwen_liu/15813514?spm=1001.2101.3001.5697

原始数据集处理

训练集(train):

解压后重命名文件夹为train

在train文件夹下创建shell文件如下

# 创建 shell 文件: unzip.sh; shell 文件运行 bash unzip.sh
 
dir=./
 
for x in `ls *.tar`
 
do
 
    filename=`basename $x .tar`
 
    mkdir $filename
 
    tar -xvf $x -C ./$filename
 
done 

验证集:

解压后重命名文件夹为val

将验证集标签数据文件夹(ILSVRC2012_devkit_t12)放在与val同一目录,并创建python文件如下

def move_valimg(val_dir=‘./val‘, devkit_dir=‘./ILSVRC2012_devkit_t12‘):
    """
    move valimg to correspongding folders.
    val_id(start from 1) -> ILSVRC_ID(start from 1) -> WIND
    organize like:
    /val
       /n01440764
           images
       /n01443537
           images
        .....
    """
    # load synset, val ground truth and val images list
    synset = scipy.io.loadmat(os.path.join(devkit_dir, ‘data‘, ‘meta.mat‘))
    
    ground_truth = open(os.path.join(devkit_dir, ‘data‘, ‘ILSVRC2012_validation_ground_truth.txt‘))
    lines = ground_truth.readlines()
    labels = [int(line[:-1]) for line in lines]
    
    root, _, filenames = next(os.walk(val_dir))
    for filename in filenames:
        # val image name -> ILSVRC ID -> WIND
        val_id = int(filename.split(‘.‘)[0].split(‘_‘)[-1])
        ILSVRC_ID = labels[val_id-1]
        WIND = synset[‘synsets‘][ILSVRC_ID-1][0][1][0]
        print("val_id:%d, ILSVRC_ID:%d, WIND:%s" % (val_id, ILSVRC_ID, WIND))
 
        # move val images
        output_dir = os.path.join(root, WIND)
        if os.path.isdir(output_dir):
            pass
        else:
            os.mkdir(output_dir)
        shutil.move(os.path.join(root, filename), os.path.join(output_dir, filename))

但在服务器中尝试直接运行失败

  • [ ] 尝试在Windows中进行分类后再上传至服务器

之后就可以直接使用example,或使用keras中的ImageDataGeneratorflow_from_directory方法或是pytorch中的torchvision.datasets.ImageFolder来读取数据

用服务器在ImageNet上进行DL训练分析(一)

上一篇:Android Library上传到JCenter仓库实践,美团点评APP在移动网络性能优化的实践


下一篇:R绘制散点图