最近正在研究的一些项目都需要使用物体识别这个功能,所以专门研究了一下yolov5的使用,讲的可能不是很精确,但是还是值得记录一下的。
安装
安装的话这里就不过多说明了,因为网上非常的多,应该是没有问题的,我们直接说重点
CPU更换成GPU
当我们直接下载yolov5的包时一般默认的是cpu运行,但是cpu会比GPU满很多,比如我这里用cpu一张照片是11s左右,但是GPU只需要大概3s左右就能够完成
如果我们想使用GPU需要把自己的PyTorch卸载掉,然后进入官网安装
![](https://img-blog.csdnimg.cn/img_convert/8f6e7d342d2eb5d74aa0d4bcf0c3f6a6.png)
其中CUDA版本选择自己对应的版本,然后复制下面的命令运行即可
尽量不要用清华源
模型训练:
模型标记:
我们在模型训练前先对模型进行标记
先创建如下文件夹:
![](https://img-blog.csdnimg.cn/img_convert/212e712a93fe8f7b23d879d44160e1c1.png)
除了pen那个名称自定之外其他名称尽量相同,且都需要有,data.yaml文件按下面的格式写
![](https://img-blog.csdnimg.cn/img_convert/e52691662db9ae660d07cf9fb261c4e1.png)
names:
- pen
- bird
nc: 2
train: E:\Laboratory\yolov5\pen\train
val: E:\Laboratory\yolov5\pen\valid
如果有多个标签就按上面的格式写多个
nc为标签对应的个数,train就是train文件夹路径,val就是valid文件夹路径
然后把照片放到对应的image文件夹里,一个是训练的照片,一个是对照的照片
然后我们需要在cmd中下载一个可以标记模型的插件:labelImg
pip install labelImg
下载之后启动labelImg.exe就可以使用了
![](https://img-blog.csdnimg.cn/img_convert/21285d9307caa2bde32156f2f1163bda.png)
![](https://img-blog.csdnimg.cn/img_convert/5acc932a8fad4931a8e293c49dedea31.png)
进行训练:
python train.py --batch-size 2 --epochs 150 --data .\pen\data.yaml --weights E:\pyitem\yolov5-master\yolov5s.pt
.\pen\data.yaml为文件夹中data.yaml的路径,最后一个为需要训练模型的路径
其中2代表每次训练几张,150代表一共训练多少次
照片识别:
将照片进行识别:
python .\detect.py --source .\data\images --weights E:\pyitem\yolov5-master\runs\train\exp7\weights\best.pt
用视频进行实时识别:
在detect.py同目录下创建一个文件夹stream.txt,在里面写入一个0以此代表使用本机摄像头,如果有USB摄像头则为1,2,3等。
![](https://img-blog.csdnimg.cn/img_convert/d3bd30420cfe9c8ecac4dd0d57f64878.png)
将source注释掉,然后改为下面的这行。
parser.add_argument('--source', type=str,default='stream.txt', help='source') #单网络多线程 实时检测
然后直接运行:delect.py即可