目前yolov3在工业界目标检测领域获得了广泛的应用,在github上有很多yolov3源码的资源。现在做深度学习使用pytorch最为方便,在github上pytorch版本的yolov3的star数量最多的的是https://github.com/ultralytics/yolov3和https://github.com/eriklindernoren/PyTorch-YOLOv3这两个。然而,仔细观察这两个项目里,定义yolov3网络结构的文件models.py,可以看到这两个版本的区别。使用beyond compare软件比较这两个项目里的models.py文件。首先看create_modules函数,它们在定义卷积层时,命名有区别,如下图所示:
还有池化层,upsample层等等,都在命名上有区别的。接下来看forward函数,它们的区别在route层的计算上,如下图所示
可以看到,右边的route层计算时,是有if else分支的,而且在else里有一个try except,当进入except时,会进行一个特征图缩小一半的插值计算,小伙伴们有没有发现这个差异呢?我在想,如果使用同一个数据集,在这两个项目里训练,它们的map会不会是一样的呢