ubuntu16.04下YOLO V3的训练,测试识别图片中的目标和实时摄像头中的目标

  • Post author:
  • Post category:其他


一、环境


GPU:1080TI

CUDA:9.0

CUDNN:7.0.5

OpenCV:3.4.5


二、前期工作



1、下载darknet

git clone https://github.com/pjreddie/darknet


2、下载原版作者的权重文件

wget https://pjreddie.com/media/files/yolov3.weights

存放到

中的backup里


3、进入darknet修改Makefile配置

  • 因为用到了gpu,cudnn,opencv。因此0改为1


4、执行编译操作

  • 进入下载的darknet目录运行终端,此为编译命令:
make -j32







如果想退回编译之前可执行如下命令

make clean





编译下终端命令截图如下:

darknet-master文件中原本是如下文件:

编译之后的结果是如下文件:

  • 解释用make -j32的原因(


    加快编译速度



既然IO不是瓶颈,那CPU就应该是一个影响编译速度的重要因素了。

用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。

还是用Kernel来测试:

用make: 40分16秒

用make -j4:23分16秒

用make -j8:22分59秒

由此看来,在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核        心数目的两倍为宜。




5、测试图片

在darknet-master目录下终端运行下面代码

./darknet detect cfg/yolov3.cfg backup/yolov3.weights data/dog.jpg
  • 测试dog.jpg


终端过程:

layer     filters    size              input                output

0 conv     32  3 x 3 / 1   608 x 608 x   3   ->   608 x 608 x  32  0.639 BFLOPs

1 conv     64  3 x 3 / 2   608 x 608 x  32   ->   304 x 304 x  64  3.407 BFLOPs

2 conv     32  1 x 1 / 1   304 x 304 x  64   ->   304 x 304 x  32  0.379 BFLOPs

3 conv     64  3 x 3 / 1   304 x 304 x  32   ->   304 x 304 x  64  3.407 BFLOPs

4 res    1                 304 x 304 x  64   ->   304 x 304 x  64

5 conv    128  3 x 3 / 2   304 x 304 x  64   ->   152 x 152 x 128  3.407 BFLOPs

6 conv     64  1 x 1 / 1   152 x 152 x 128   ->   152 x 152 x  64  0.379 BFLOPs

7 conv    128  3 x 3 / 1   152 x 152 x  64   ->   152 x 152 x 128  3.407 BFLOPs

8 res    5                 152 x 152 x 128   ->   152 x 152 x 128

9 conv     64  1 x 1 / 1   152 x 152 x 128   ->   152 x 152 x  64  0.379 BFLOPs

10 conv    128  3 x 3 / 1   152 x 152 x  64   ->   152 x 152 x 128  3.407 BFLOPs

11 res    8                 152 x 152 x 128   ->   152 x 152 x 128

12 conv    256  3 x 3 / 2   152 x 152 x 128   ->    76 x  76 x 256  3.407 BFLOPs

13 conv    128  1 x 1 / 1    76 x  76 x 256   ->    76 x  76 x 128  0.379 BFLOPs

14 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256  3.407 BFLOPs

15 res   12                  76 x  76 x 256   ->    76 x  76 x 256

16 conv    128  1 x 1 / 1    76 x  76 x 256   ->    76 x  76 x 128  0.379 BFLOPs

17 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256  3.407 BFLOPs

18 res   15                  76 x  76 x 256   ->    76 x  76 x 256

19 conv    128  1 x 1 / 1    76 x  76 x 256   ->    76 x  76 x 128  0.379 BFLOPs

20 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256  3.407 BFLOPs

21 res   18                  76 x  76 x 256   ->    76 x  76 x 256

22 conv    128  1 x 1 / 1    76 x  76 x 256   ->    76 x  76 x 128  0.379 BFLOPs

23 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256  3.407 BFLOPs

24 res   21                  76 x  76 x 256   ->    76 x  76 x 256

25 conv    128  1 x 1 / 1    76 x  76 x 256   ->    76 x  76 x 128  0.379 BFLOPs

26 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256  3.407 BFLOPs

27 res   24                  76 x  76 x 256   ->    76 x  76 x 256

28 conv    128  1 x 1 / 1    76 x  76 x 256   ->    76 x  76 x 128  0.379 BFLOPs

29 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256  3.407 BFLOPs

30 res   27                  76 x  76 x 256   ->    76 x  76 x 256

31 conv    128  1 x 1 / 1    76 x  76 x 256   ->    76 x  76 x 128  0.379 BFLOPs

32 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256  3.407 BFLOPs

33 res   30                  76 x  76 x 256   ->    76 x  76 x 256

34 conv    128  1 x 1 / 1    76 x  76 x 256   ->    76 x  76 x 128  0.379 BFLOPs

35 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256  3.407 BFLOPs

36 res   33                  76 x  76 x 256   ->    76 x  76 x 256

37 conv    512  3 x 3 / 2    76 x  76 x 256   ->    38 x  38 x 512  3.407 BFLOPs

38 conv    256  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 256  0.379 BFLOPs

39 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512  3.407 BFLOPs

40 res   37                  38 x  38 x 512   ->    38 x  38 x 512

41 conv    256  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 256  0.379 BFLOPs

42 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512  3.407 BFLOPs

43 res   40                  38 x  38 x 512   ->    38 x  38 x 512

44 conv    256  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 256  0.379 BFLOPs

45 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512  3.407 BFLOPs

46 res   43                  38 x  38 x 512   ->    38 x  38 x 512

47 conv    256  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 256  0.379 BFLOPs

48 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512  3.407 BFLOPs

49 res   46                  38 x  38 x 512   ->    38 x  38 x 512

50 conv    256  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 256  0.379 BFLOPs

51 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512  3.407 BFLOPs

52 res   49                  38 x  38 x 512   ->    38 x  38 x 512

53 conv    256  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 256  0.379 BFLOPs

54 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512  3.407 BFLOPs

55 res   52                  38 x  38 x 512   ->    38 x  38 x 512

56 conv    256  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 256  0.379 BFLOPs

57 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512  3.407 BFLOPs

58 res   55                  38 x  38 x 512   ->    38 x  38 x 512

59 conv    256  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 256  0.379 BFLOPs

60 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512  3.407 BFLOPs

61 res   58                  38 x  38 x 512   ->    38 x  38 x 512

62 conv   1024  3 x 3 / 2    38 x  38 x 512   ->    19 x  19 x1024  3.407 BFLOPs

63 conv    512  1 x 1 / 1    19 x  19 x1024   ->    19 x  19 x 512  0.379 BFLOPs

64 conv   1024  3 x 3 / 1    19 x  19 x 512   ->    19 x  19 x1024  3.407 BFLOPs

65 res   62                  19 x  19 x1024   ->    19 x  19 x1024

66 conv    512  1 x 1 / 1    19 x  19 x1024   ->    19 x  19 x 512  0.379 BFLOPs

67 conv   1024  3 x 3 / 1    19 x  19 x 512   ->    19 x  19 x1024  3.407 BFLOPs

68 res   65                  19 x  19 x1024   ->    19 x  19 x1024

69 conv    512  1 x 1 / 1    19 x  19 x1024   ->    19 x  19 x 512  0.379 BFLOPs

70 conv   1024  3 x 3 / 1    19 x  19 x 512   ->    19 x  19 x1024  3.407 BFLOPs

71 res   68                  19 x  19 x1024   ->    19 x  19 x1024

72 conv    512  1 x 1 / 1    19 x  19 x1024   ->    19 x  19 x 512  0.379 BFLOPs

73 conv   1024  3 x 3 / 1    19 x  19 x 512   ->    19 x  19 x1024  3.407 BFLOPs

74 res   71                  19 x  19 x1024   ->    19 x  19 x1024

75 conv    512  1 x 1 / 1    19 x  19 x1024   ->    19 x  19 x 512  0.379 BFLOPs

76 conv   1024  3 x 3 / 1    19 x  19 x 512   ->    19 x  19 x1024  3.407 BFLOPs

77 conv    512  1 x 1 / 1    19 x  19 x1024   ->    19 x  19 x 512  0.379 BFLOPs

78 conv   1024  3 x 3 / 1    19 x  19 x 512   ->    19 x  19 x1024  3.407 BFLOPs

79 conv    512  1 x 1 / 1    19 x  19 x1024   ->    19 x  19 x 512  0.379 BFLOPs

80 conv   1024  3 x 3 / 1    19 x  19 x 512   ->    19 x  19 x1024  3.407 BFLOPs

81 conv    255  1 x 1 / 1    19 x  19 x1024   ->    19 x  19 x 255  0.189 BFLOPs

82 yolo

83 route  79

84 conv    256  1 x 1 / 1    19 x  19 x 512   ->    19 x  19 x 256  0.095 BFLOPs

85 upsample            2x    19 x  19 x 256   ->    38 x  38 x 256

86 route  85 61

87 conv    256  1 x 1 / 1    38 x  38 x 768   ->    38 x  38 x 256  0.568 BFLOPs

88 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512  3.407 BFLOPs

89 conv    256  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 256  0.379 BFLOPs

90 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512  3.407 BFLOPs

91 conv    256  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 256  0.379 BFLOPs

92 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512  3.407 BFLOPs

93 conv    255  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 255  0.377 BFLOPs

94 yolo

95 route  91

96 conv    128  1 x 1 / 1    38 x  38 x 256   ->    38 x  38 x 128  0.095 BFLOPs

97 upsample            2x    38 x  38 x 128   ->    76 x  76 x 128

98 route  97 36

99 conv    128  1 x 1 / 1    76 x  76 x 384   ->    76 x  76 x 128  0.568 BFLOPs

100 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256  3.407 BFLOPs

101 conv    128  1 x 1 / 1    76 x  76 x 256   ->    76 x  76 x 128  0.379 BFLOPs

102 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256  3.407 BFLOPs

103 conv    128  1 x 1 / 1    76 x  76 x 256   ->    76 x  76 x 128  0.379 BFLOPs

104 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256  3.407 BFLOPs

105 conv    255  1 x 1 / 1    76 x  76 x 256   ->    76 x  76 x 255  0.754 BFLOPs

106 yolo

Loading weights from backup/yolov3.weights…Done!

data/dog.jpg: Predicted in 0.039539 seconds.

dog: 100%

truck: 92%

bicycle: 99%

检测结果:

  • 测试person.jpg


终端过程:

………

………

Loading weights from backup/yolov3.weights…Done!

data/person.jpg: Predicted in 0.037217 seconds.

horse: 100%

dog: 99%

person: 100%


检测结果:

  • kite.jpg


终端过程:


………


………

Loading weights from backup/yolov3.weights…Done!

data/kite.jpg: Predicted in 0.036154 seconds.

kite: 99%

kite: 84%

kite: 80%

kite: 73%

person: 100%

person: 100%

person: 97%

person: 96%

person: 95%

person: 91%

person: 88%

person: 85%

person: 52%


检测结果:



6、测试实时摄像头中的目标

  • 在darknet-master目录下运行终端:
./darknet detector demo cfg/coco.data cfg/yolov3.cfg backup/yolov3.weights

上面的yolov3.weights是放在了darknet-master文件中的backup文件夹中了,因此此处路径要写对,和官网上有点区别。

  • 检测结果如下

参考:

https://blog.csdn.net/fqlovetb/article/details/81481115



版权声明:本文为gaoyu1253401563原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。