安装成功后,可以更换conda以及pip的下载源地址。
Windows 用户无法直接创建名为
.condarc
的文件,可先执行conda config --set show_channel_urls yes
生成该文件之后再修改。
然后用文本编辑器打开.conda
文件,将内容更改为下列内容。
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
运行 conda clean -i
清除索引缓存,保证用的是镜像站提供的索引。
在Windows的个人目录下C:\Users\xxxxx
,创建pip
文件夹,然后在文件夹中创建名为pip.ini
的文件,添加以下内容
[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn
创建一个名为yolo的虚拟环境
conda create -n yolo python=3.9
查看虚拟环境列表
conda env list
切换虚拟环境
conda activate yolo
LabelImg下载地址:https://github.com/tzutalin/labelImg
安装结束后,使用Anaconda Powershell Prompt(conda 命令行)
进入到labelimg目录,删除掉labelImg\data\predefined_classes.txt
文件的内容,不然标记图片的时候会自动添加一些奇怪的类别,也可以选择不删除,如果想要用到默认的分类。依次执行下列命令:
conda install pyqt=5
conda install -c anaconda lxml
pyrcc5 -o libs/resources.py resources.qrc
这里安装时可能会出现 python 报错:from lxml import etree
首先,因为有的lxml版本没有etree部分,所以import会报错;其次,若lxml版本没有问题,检查是否激活conda环境(windows下有时候base也需要激活),不激活conda环境的话可能会默认使用pip下的lxml,pip下的lxml或许会因为版本问题出现这个错误。又或者重新打开conda命令行,重新执行一次上诉命令。
然后输入python labelimg.py
打开qt界面,如下图更改配置,打开这个就是对我们的图片进行标注。
快捷键操作:用的最多就是w、d、a、Ctrl + s
Ctrl + u Load all of the images from a directory
Ctrl + r Change the default annotation target dir
Ctrl + s Save
Ctrl + d Copy the current label and rect box
Ctrl + Shift + d Delete the current image
Space Flag the current image as verified
w Create a rect box
d Next image
a Previous image
del Delete the selected rect box
Ctrl++ Zoom in
Ctrl-- Zoom out
↑→↓← | Keyboard arrows to move selected rect box
操作区块,它会提示你输入类别,例如我这里输入的是A,只要前面我们选择了单一类别模式,后续的所有图片都会默认为A类别。值得注意的是要设置好存放目录,存放目录存放的是我们标注的信息,我选择放在了labels文件下。
对于A.yaml
文件,文件里面内容如下,其中train和val都是我们images的目录,labels的目录不用写进去,会自动识别。nc代表识别物体的种类数目,这里nc=1,names代表种类名称,如果多个物体种类识别的话,可以自行增加。
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ../yolo_A/images/
val: ../yolo_A/images/
# number of classes
nc: 1
# class names
names: ['A LAN']
yolov5地址: https://github.com/ultralytics/yolov5
下载yolov5源码后,进行解压,可以看到里面有requirements.txt
文件,里面记录了需要安装的包,这个txt文件可以帮助我们一键下载这些依赖包。
文件夹里也包含了train.py文件,这个也是我们接下来训练yolo模型需要用到的启动文件。
我们首先打开我们下载好的yolov5文件夹,打开conda 命令行进入该目录,注意要从base环境切换到yolo环境。
执行命令
pip install -r requirements.txt
到了这一步,就可以开始准备训练yolov5模型了。
查看torch的版本,这里默认安装了cpu版本的,我们想要的是支持GPU的,所以要更改一下。
卸载原有的torch
pip unintsall torch
下载对应版本的torch,主机上的CUDA版本可以在Windows命令行使用nvcc --version
或者NVIDIA-smi
查看,我的就是11.6。
相关torch版本下载地址:https://download.pytorch.org/whl/torch_stable.html
这里对于这些文件命名规则做一些解释:
1、最前面的’cu116’指的是支持11.6版本的cuda。如果是’cpu’则说明是cpu版本的包,不适配gpu。
2、cuda版本号后的’/‘和’%'之间的是包的内容和版本,比如torch-1.10.0就是1.10.0版本的torch,这个很容易理解。
再往后的’2B’没猜出来是什么意思,可能是to B?
3、紧接着的’cu116’和前面是一个意思,表示支持的cuda版本,'cp3x’则表示支持的Python版本是3.x,如果是由于我安装的是Python3.9.13,因此我选择的是cp39的包。
4、最后面的’Linux_x86_64’和’win_amd64’就很简单了,Linux版本就选前一个,Windows版本就选后一个,MacOS的就不知道了,可能也是后一个(瞎猜)。
这里需要下载torch以及torchvision两个文件
然后使用命令进行安装即可,需要注意的是应该先安装torch再安装torchvision
pip install F:\download\torch-1.12.1+cu116-cp39-cp39-win_amd64.whl
pip install F:\download\torchvision-0.13.1+cu116-cp39-cp39-win_amd64.whl
接着重新查看torch版本以及查看是否支持GPU,至此,走完了一半的路。
打开pycharm导入yolov5的项目,加载环境,就是之前我们创建的虚拟环境yolov5。File->Setting->Project,点击Add Interpreter。
yolov5里面有个detect.py,运行后根据路径打开图片如图一样就成功了。
然后运行train.py,记得先更换对应的yaml文件。
训练完成后会出现train文件夹,前面的detect.py执行后会出现detec文件夹。打开train文件夹会看到一个weights文件夹,里面的best.pt就是训练中效果最好的,last.pt就是最后一次训练的。
我在images文件下放了一个test文件,用于测试
修改detec.py的设置。第一个就是训练中最好的例子,第二个就是测试文件,第三个就不用说了。
运行测试之后,查看结果,效果一般般,其中有一张把暖羊羊给检测出来了,准确度有待提高啊。
希望这篇文章能够帮助到大家,因为自己也是一窍不通开始的,人生的路上我很多时候都是个小白的身份,但是记得要永远保持热情。成长的路上诚然不会一帆风顺的,但是转过头来想想,不经历风风浪浪的水手又怎么会是一个强大的水手呢,不出港,就永远不会翻船,但也永远体会不到大海的辽阔与精彩。共勉!