回答編集履歴

4

ボックスの結果を追記

2021/07/12 07:35

投稿

Ar-Ray
Ar-Ray

スコア16

test CHANGED
@@ -1,4 +1,4 @@
1
- 学習済みのdarknetの重みはOpencv(Python,C++)のdnnモジュールでも直接読み込むことができ、次のプログラムで示す配列box[]で取得することができます。
1
+ 学習済みのdarknetの重みはOpencv(Python,C++)のdnnモジュールでも直接読み込むことができ、次のプログラムで示す配列box[](最後から3行目あたり)で取得することができます。
2
2
 
3
3
 
4
4
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  - OS:Ubuntu 20.04 LTS
18
18
 
19
- - 対象画像:abc.png
19
+ - 対象画像:./abc.png
20
20
 
21
21
  - クラス名:./darknet_cfg/coco.names
22
22
 
@@ -42,6 +42,8 @@
42
42
 
43
43
  # reference src : https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py
44
44
 
45
+
46
+
45
47
  import cv2
46
48
 
47
49
  import time
@@ -64,7 +66,7 @@
64
66
 
65
67
 
66
68
 
67
- vc = cv2.imread("./abc.png")
69
+ img = cv2.imread("./abc.png")
68
70
 
69
71
 
70
72
 
@@ -82,7 +84,7 @@
82
84
 
83
85
 
84
86
 
85
- classes, scores, boxes = model.detect( vc , CONFIDENCE_THRESHOLD, NMS_THRESHOLD)
87
+ classes, scores, boxes = model.detect( img , CONFIDENCE_THRESHOLD, NMS_THRESHOLD)
86
88
 
87
89
  start_drawing = time.time()
88
90
 
@@ -94,15 +96,15 @@
94
96
 
95
97
  label = "%s : %f" % (class_names[classid[0]], score)
96
98
 
97
- cv2.rectangle(vc, box, color, 2)
99
+ cv2.rectangle(img, box, color, 2)
98
100
 
99
- cv2.putText(vc, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
101
+ cv2.putText(img, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
100
102
 
101
- end_drawing = time.time()
103
+ # print box
102
104
 
105
+ print("box[0]=" + str(box[0]) + " box[1]=" + str(box[1]) + " box[2]=" + str(box[2]) + " box[3]=" + str(box[3]))
103
106
 
104
-
105
- cv2.imshow("detections", vc)
107
+ cv2.imshow("detections", img)
106
108
 
107
109
  cv2.waitKey(0)
108
110
 

3

プログラムの仕様を画像用に変更

2021/07/12 07:34

投稿

Ar-Ray
Ar-Ray

スコア16

test CHANGED
@@ -1,4 +1,28 @@
1
- 学習済のdarknetの重みはOpencv(Python,C++)のdnnライブラリで直接読み込むことができので、コレを使用してみてはいかがでしょうか?
1
+ 学習済のdarknetの重みはOpencv(Python,C++)のdnnモジュール直接読み込むことができ、次プログラム示す配列box[]で取得することができます。
2
+
3
+
4
+
5
+ ぜひお試しください。
6
+
7
+
8
+
9
+ 以下のプログラムは、次の環境で動作確認をしています。
10
+
11
+ - Python3.8
12
+
13
+ - OpenCV4
14
+
15
+ - CPU:Intel Core i5 10210u
16
+
17
+ - OS:Ubuntu 20.04 LTS
18
+
19
+ - 対象画像:abc.png
20
+
21
+ - クラス名:./darknet_cfg/coco.names
22
+
23
+ - cfgファイル:./darknet_cfg/yolov4-tiny.cfg
24
+
25
+ - weightsファイル:./darknet_cfg/yolov4-tiny.weights
2
26
 
3
27
 
4
28
 
@@ -10,15 +34,13 @@
10
34
 
11
35
 
12
36
 
13
- サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でもv3でも動きます。
37
+ サンプルプログラムを示します。この場合、yolov4の実装ではありますが、v2でもv3でも動きます。パスは適宜変更してください。
14
38
 
15
39
 
16
40
 
17
41
  ```Python
18
42
 
19
43
  # reference src : https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py
20
-
21
-
22
44
 
23
45
  import cv2
24
46
 
@@ -42,11 +64,13 @@
42
64
 
43
65
 
44
66
 
45
- vc = cv2.VideoCapture(0)
67
+ vc = cv2.imread("./abc.png")
46
68
 
47
69
 
48
70
 
49
71
  net = cv2.dnn.readNet("./darknet_cfg/yolov4-tiny.weights", "./darknet_cfg/yolov4-tiny.cfg")
72
+
73
+
50
74
 
51
75
  net.setPreferableBackend(cv2.dnn.DNN_TARGET_CPU)
52
76
 
@@ -58,44 +82,28 @@
58
82
 
59
83
 
60
84
 
61
- while cv2.waitKey(1) < 1:
85
+ classes, scores, boxes = model.detect( vc , CONFIDENCE_THRESHOLD, NMS_THRESHOLD)
62
86
 
63
- (grabbed, frame) = vc.read()
87
+ start_drawing = time.time()
64
-
65
- if not grabbed:
66
-
67
- exit()
68
88
 
69
89
 
70
90
 
71
- start = time.time()
91
+ for (classid, score, box) in zip(classes, scores, boxes):
72
92
 
73
- classes, scores, boxes = model.detect(frame, CONFIDENCE_THRESHOLD, NMS_THRESHOLD)
93
+ color = COLORS[int(classid) % len(COLORS)]
74
94
 
95
+ label = "%s : %f" % (class_names[classid[0]], score)
96
+
97
+ cv2.rectangle(vc, box, color, 2)
98
+
99
+ cv2.putText(vc, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
100
+
75
- end = time.time()
101
+ end_drawing = time.time()
76
102
 
77
103
 
78
104
 
79
- start_drawing = time.time()
105
+ cv2.imshow("detections", vc)
80
106
 
81
- for (classid, score, box) in zip(classes, scores, boxes):
82
-
83
- color = COLORS[int(classid) % len(COLORS)]
84
-
85
- label = "%s : %f" % (class_names[classid[0]], score)
86
-
87
- cv2.rectangle(frame, box, color, 2)
88
-
89
- cv2.putText(frame, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
90
-
91
- end_drawing = time.time()
107
+ cv2.waitKey(0)
92
-
93
-
94
-
95
- fps_label = "FPS: %.2f (excluding drawing time of %.2fms)" % (1 / (end - start), (end_drawing - start_drawing) * 1000)
96
-
97
- cv2.putText(frame, fps_label, (0, 25), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 2)
98
-
99
- cv2.imshow("detections", frame)
100
108
 
101
109
  ```

2

v4→v3に変更

2021/07/12 07:30

投稿

Ar-Ray
Ar-Ray

スコア16

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でもv4でも動きます。
13
+ サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でもv3でも動きます。
14
14
 
15
15
 
16
16
 

1

追加リンクの挿入

2021/07/12 06:54

投稿

Ar-Ray
Ar-Ray

スコア16

test CHANGED
@@ -2,13 +2,15 @@
2
2
 
3
3
 
4
4
 
5
- この場合、yolov4の実装ではありすが、v2でもv4でも動きます。
5
+ この記事を参考にしした
6
+
7
+ ・https://opencv-tutorial.readthedocs.io/en/latest/yolo/yolo.html
8
+
9
+ ・https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py
6
10
 
7
11
 
8
12
 
9
- https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py
10
-
11
- https://gist.github.com/Ar-Ray-code/b07012e047883fbe7dd50dfe55c7f531
13
+ サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でもv4でも動きます。
12
14
 
13
15
 
14
16