yolo和yolo-tiny实际使用对比
最近在学习使用yolo进行目标识别,然而由于显存问题,yolo官方的train.py跑不了,所以尝试了两种方法,一种是减小yolo训练时的batch_size,另一种是使用yolo-tiny,现记录一下两者的效果对比。
先交代一下前提,我的显卡是GTX1050Ti的,显存4G,训练只有一种类别,训练集有140张图,平均每张图上有3个左右目标。使用的是yolov3。
首先使用yolo-tiny,batch_size32时还是吃不消,故改成16,训练了50+50次,期间gpu利用率一直是百分之十几,几乎没有达到20%,时间也不长,但是最终损失函数较大,100轮结束后还是140左右。
但是测试一下表现还是不错的
接下来使用yolo进行训练,由于显存不够,故把batch_size改成了3,还是50+50轮,期间gpu利用率基本上在80%左右,训练了半个小时,到总第70轮自动停止了,损失函数大概在14左右,比起140还是好了很多,并且训练出的结果在识别较为密集的图片时比tiny版本要好,见下图。
上面的图是tiny版本识别结果,下面的图是yolo识别的结果可见除了把一片叶子错误识别成梨之外,yolo把tiny版本不能识别的有遮挡的梨也识别出来了。
从这个故事我们知道了,如果你的gpu足够顶,尽量不使用tiny版本的yolo,tiny一百轮训练的损失还不如yolo十轮左右的损失,同样也反映出机器学习确实是很吃硬件的一个专业。