前面已经完成了windows下训练基于pytorch的yolov3,接下来学习在ubuntu下训练。
看了一点csdn,现在要解决的问题有两个:
1、ubuntu下的指令,怎么编译?怎么运行?
2、darknet所使用的标签是txt,又要格式转换。
第2个问题我找到一个更好的项目,应该可以直接三种数据格式相互转换:
premkumar25/Convert_VOC_COCO_YOLO: XML parser to parse the PASCAL VOC annotiation xml's and convert it to .txt files (github.com)
新问题1:
我的xml文件是用程序从json转换来的,在pytorch下确实可以使用。但是现在要从xml转换为yolo用的txt文件出现一个问题:我转换过的xml文件里没有difficult这个类。
解决方法:
修改代码,因为difficult在voc的标签中如果取1代表该目标难以被识别,在转yolo代码中会忽略该目标,我之前直接json转xml根本没这个属性,所以把转换代码中跟difficult有关的都去掉就行。
新问题2:
ubuntu下上不去github了,因为没有fastgithub了。
解决方法:
1、似乎gitee就能找项目。
2、fastgithub,下载下来以后按照教程输入sudo ./fastgithub没用,但不知道进入root是否有用,正在尝试。进入root的方法是:
sudo passwd root设置一个密码
然后输入su,再输入刚刚的密码
要退出就输入exit即可。
似乎进入root也没用。
3、dev-sidecar,可以去gitee网站上找这个项目,下载的直接就是安装包。
事实证明,ubuntu下载东西真的慢,我的建议是在windows下载完用移动硬盘转移至ubuntu安装。
建议用这个网址下载:https://gh.api.99988866.xyz/https://github.com/docmirror/dev-sidecar/releases/download/v1.7.3/DevSidecar-1.7.3.deb
新问题3:
因为fastgithub实在是没有头绪,所以打算安装devsidecar,然后遇到一个问题。/opt文件夹在哪???
解决方法:
点开文件,会发现主目录没这玩意,这时应该点+其他位置,然后点计算机,就可以看到/opt文件夹和其他很多找不着的文件夹了。(一般deb安装的软件似乎默认都在/opt下)
新问题4:
打开word文档以及查询软件及安装软件
解决方法:
用LibreOffice Writer软件即可。
查询软件例如:sudo dpkg -L firefox
安装软件:sudo dpkg -i xxx.deb
其中xxx是你安装包的名字,复制粘贴过来就好。
新问题5:
安装dev-sidecar似乎要搞定安全证书的问题,以及要打开sudo不用输入密码的模式
解决方法:
sudo不用输入密码:
先输入sudo chmod +w /etc/sudoers
再输入su
这一步要是报错看这个:
Ubuntu下su:authentication failure的解决办法_山鬼谣me的博客-CSDN博客
输入密码后进入root模式
再输入visudo
光标下移至如图:
Ubuntu20.04 sudo免密码_ibless的博客-CSDN博客_ubuntu20 免密
我输入的是%sudo ALL=(ALL:ALL)NOPASSWD:ALL
然后ctrl+o(保存),弹出”File Name to Write sudoers.tmp”,然后在tmp后按一下回车。再按ctrl+x(退出)。
原链接说groups指令我有点没看懂所以这样搞的。
上github网站最终解决方案:
兜兜转转又回到了fastgithub上:
FastGithub下载及使用 - 知乎
这里不用输入yum install libicu
直接输入后面的指令就行。
wget -c https://github.com/dotnetcore/FastGithub/releases/download/2.0.4/fastgithub_linux-x64.zip # 下载FastGithub
unzip fastgithub_linux-x64.zip #解压
cd fastgithub_linux-x64 #进入到FastGithub文件夹下
./fastgithub #运行FastGithub
然后运行了./fastgithub之后把终端放在一旁就能访问github了。
我怀疑之前没弄好fastgithub估计是git clone下来的是windows下用的,里面压根没有fastgithub这个文件所以用不了。
看了一下确实是,应该去那个releases下去下载相应的安装包的。
torch=1.2.0,官方推荐的Cuda版本是10.0,因此会用到cuda10.0,与cuda10.0对应的cudnn是7.4.1.5
记录一个小技巧:按tab可以自动补全文件名,很好用!!!
vscode似乎直接官网下个deb安装就行。
anaconda去官网上下载就行,下载下来的是个sh文件。
运行方法是:
sh xxx.sh
然后回车,按Q跳过条款,该yes的就yes,中间有一步是设置路径。
最后安装完用which python指令验证一下,如果指向anaconda下的说明可以。
这里注意一点,原来的终端最后which python可能还指向ubuntu自带的python,这里可以两种方法。
一种是重开一个终端输入which pythoin
还一种是输入source ~/.bashrc就可以刷新,再输入which python即可。
然后我记得在显示安装完成后还一行报错,不过目前没啥影响,我就先忽略了,之后遇到问题再说。
下面这个链接是装nvidia驱动的,我按照里面的步骤安装成功。
我的显卡:
NVIDIA GeForce Force 940M
产品类型GeForce
产品系列是 900M Series
产品家族940MX
ubuntu16.04安装NVIDIA显卡驱动或者更换高版本显卡驱动详细(下载.run包方式)_berry丶的博客-CSDN博客_ubuntu更换显卡驱动
cuda+cudnn:
ubuntu16.04安装CUDA10.0和对应版本的cudnn详细流程_berry丶的博客-CSDN博客_cuda10.0对应的cudnn版本
nvcc -V那步修改完bashrc文件后,要把终端关闭再打开,然后输入nvcc -V,凡是修改bashrc基本都有这步,或者source ~/.bashrc
短短一个make花了我一个下午,甚至还不敢保证完全ok。
遇到很多错误,截过图的就有:
记录下来看过的博客有:
1、
conda 安装R包报错:/bin/sh: x86_64-conda_cos6-linux-gnu-c++: command not found - 简书
2、
https://blog.csdn.net/qq_18649781/article/details/89848797
3、
ERROR: This cross-compiler package contains no program /home/zxm/anaconda3/bin/x86_64-conda_cos6-linux-gnu-gfortran
以及无数看过的。
我这里给一个我认为我解决编译问题的比较合理的思路:
我觉得最核心问题离不开gcc、g++和gfortran(最后这个不一定)。所以这几个一定要正常,然后从报错图可以看出,除了这三个之外还一个很要命的是anaconda。第一张图的错误我在网上找到个要我装gcc_linux等等的,装好以后就有第二三个错误,第三个错误找了半天真找不到解决方法,第二个错误我看到一个这个说法:
unsupported GNU version! gcc versions later than 6 are not supported!_littlehaes的博客-CSDN博客
我还特地装了个gcc5的版本,生怕版本太高不支持。但是奇怪的是,这个错误依旧报,按理来说,我已经用低版本代替gcc执行,不可能版本太高。我最后冒出个想法,我用的apt-get install安装的,但是我的python指向的是anaconda下,并且第三个错误也解决不了,于是我想先得把anaconda解决,就把它给卸载了。
然后我再次make,报了最后一张图的错。于是我又想到下午看过的一篇博客:
Ubuntu16.04编译cuda_10.2实例遇到的问题_Amelie_xiao的博客-CSDN博客
不用make编译,而是用make -k忽略过程中的错误来实现编译,最后成功按上面这个博客的说法算是成功了。
但老实说,毕竟不是直接make编译的,我并不能保证这样就算cuda装好了,但至少上面的思路已经是我觉得最合理的了,也想不出更好的解决方法了。
说到底是因为我没有好好利用anaconda,当时其实不用直接卸载anaconda的,我既可以新创建一个环境,也可以去sudo gedit ~/.bashrc中注释掉有关anaconda的export。
cudnn:
按教程走就行
项目测试:
这基于我之前博客里的yolov3项目
conda create -n pytorch python=3.6
激活conda:source activate
source deactivate
conda activate pytorch
conda deactivate pytorch
值得注意的是,anaconda同样需要更换下载源。
Anaconda切换国内高速源 - 简书
conda config --show-sources可以用来查看当前anaconda下载源
sudo gedit ~/.condarc
记得https改成http
pip install -r requirements.txt
pip3 install future
pip install tensorboard
用ubuntu跑了一下项目,感觉其实跟windows上的操作基本一样。
然后有两个注意:
1、[Errno 12] Cannot allocate memory
解决方法:
典中典之内存不够,把num_workers从2改到了0即可。
2、还是要先运行voc_annotation,因为即使用移动硬盘,ubuntu下路径和windows依旧不一样,还是得改好路径。