[更新]:此存储库是我研究的驱动程序代码。我刚刚毕业,非常忙于寻找研究实习 /奖学金角色,然后最终申请硕士。我暂时没有时间研究问题。谢谢。
该存储库包含基于Yolov3的对象检测器的代码:一个增量改进,实现了pytorch。该代码基于Marvis的Yolo V3的官方代码以及原始代码的Pytorch端口。该代码的目标之一是通过删除代码的冗余部分来改进原始端口(官方代码基本上是一个完全爆炸的深度学习库,其中包括诸如sequence模型之类的内容,这些模型在Yolo中未使用)。我还试图将代码保持最小,并尽可能地进行记录。
如果您想了解如何从头开始实现此检测器,那么您可以通过我在论文空间上写的这个非常详细的5部分教程系列。非常适合想要从初学者转变为中级Pytorch技能的人。
从头开始实施Yolo V3
截至目前,代码仅包含检测模块,但是您应该很快期望训练模块。 :)
使用Pytorch 0.3将打破检测器。
克隆和cd进入回购目录。您需要做的第一件事是这次获取权重文件,对于V3,作者仅在此处为可可提供了一个权扣,然后放置
权重文件到您的存储库目录中。或者,您可以输入(如果您在Linux上)
wget https://pjreddie.com/media/files/yolov3.weights
python detect.py --images imgs --det det
--images标志将目录定义为从或单个图像文件加载图像的目录(它将弄清楚), --det是将图像保存到的目录。其他设置,例如批处理大小(使用--bs标志),可以使用可以查找的标志来调整对象阈值置信度。
python detect.py -h
您可以通过--reso标志更改输入图像的分辨率。默认值为416。无论您选择哪种值,记忆,它的倍数应该是32的倍数,大于32 。如果不这样做,奇怪的事情就会发生。您已被警告。
python detect.py --images imgs --det det --reso 320
为此,您应该运行文件,video_demo.py,带有-video标志指定视频文件。视频文件应为.AVI格式,因为OPENCV仅接受OpenCV作为输入格式。
python video_demo.py --video video.avi
可以使用-h标志可以看到可调整的设置。
为了加快视频推理,您可以尝试使用Video_demo_half.py文件,而不是使用16位半精度浮点而不是32位浮点。我还没有看到很大的进步,但我将其归因于拥有较旧的卡(Tesla K80,Kepler Arch)。如果您有一张具有快速Float16支持的卡,请尝试一下,如果可能的话,请进行基准测试。
与视频模块相同,但是您不必指定视频文件,因为Feed将从相机中获取。确切地说,将从openCV(识别为相机0)的feed中取出。默认图像分辨率为160,尽管您可以使用reso标志更改它。
python cam_demo.py
您可以轻松地调整代码以使用不同的权重命令,可在YOLO网站上找到
注意:秤功能已被禁用以更好地进行重构。
Yolo V3在不同尺度上进行检测,每个尺度都在检测不同尺寸的对象取决于它们是否捕获粗糙的特征,细粒度的特征或之间的其他内容。您可以通过--scales标志对这些量表进行实验。
python detect.py --scales 1,3