一、准备
1、pycharm专业版
2、FileZilla
3、AutoDL算力平台
二、远程连接
详细步骤在许多平台都有,不再详细描述。
连接时需要注意三个问题,记住连接时本地目录映射到了服务器哪个目录,Yolov5运行完的权重文件等都存在那里,还有连接完在Tool // Deployment // Upload那里上传自己的代码等文件,以及在pycharm下端从本地切换到远端服务器。
三、上传数据
推荐使用FileZilla上传文件,因为可以一整个文件夹上传,而且速度很快。这里需要上传train、valid、权重文件和配置文件。
3.1、修改数据路径
上传后还需要修改train.py文件里的权重文件和配置文件路径、以及配置文件data.yaml中的数据路径。如何找到路径,路径在FlieZilla中,选中文件,右键复制url,然后将端口前的那截去掉,例如:/root/voc/yolov5x.pt。
四、运行train.py
开始运行后可能会出现各种bug。
4.1 bug 1:
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xd0 in position 43: invalid continuation byte
定位到主函数if name == ‘main’:下方好几十行,在open那里加上encoding。
修改前:
logger.info(opt)
with open(opt.hyp) as f:
hyp = yaml.load(f, Loader=yaml.FullLoader) # load hyps
修改后:
logger.info(opt)
with open(opt.hyp,encoding = 'gb2312') as f:
hyp = yaml.load(f, Loader=yaml.FullLoader) # load hyps
4.2 bug 2:AssertionError: Image Not Found
报哪个图片或者标签找不到就在云服务器中把哪个文件给删了,images和labels都要删。
4.3 bug 3:RuntimeError: CUDA out of memory. Tried to allocate 20.00 MiB
定位到主函数,batch-size那里把default改小。
4.4 bug 4:TypeError: can’t convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
找到pytorch库中的tensor.py文件,定位到630行附件,加上.cpu()即可。
修改前:
return self.numpy()
修改后:
return self.cpu().numpy()
注意:
如果是本地运行出现问题,就修改本地的tensor.py。
如果是远程运行出现问题,就修改服务器的tensor.py。
五、结果
前面说了,要记得连接时本地目录映射到了服务器哪个目录,运行结果就在服务器的目录里。
六、回答自己刚学时最想问的无聊问题
问题一、数据需不需要上传
需要。
问题二、编程和运行如何实现
编程在本地编,实现在服务器实现,结果存在服务器里。