回答編集履歴
4
ボックスの結果を追記
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
|
-
|
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(
|
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(
|
99
|
+
cv2.rectangle(img, box, color, 2)
|
98
100
|
|
99
|
-
cv2.putText(
|
101
|
+
cv2.putText(img, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
|
100
102
|
|
101
|
-
|
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",
|
107
|
+
cv2.imshow("detections", img)
|
106
108
|
|
107
109
|
cv2.waitKey(0)
|
108
110
|
|
3
プログラムの仕様を画像用に変更
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
|
-
サンプルプログラムを
|
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.
|
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
|
-
|
85
|
+
classes, scores, boxes = model.detect( vc , CONFIDENCE_THRESHOLD, NMS_THRESHOLD)
|
62
86
|
|
63
|
-
|
87
|
+
start_drawing = time.time()
|
64
|
-
|
65
|
-
if not grabbed:
|
66
|
-
|
67
|
-
exit()
|
68
88
|
|
69
89
|
|
70
90
|
|
71
|
-
|
91
|
+
for (classid, score, box) in zip(classes, scores, boxes):
|
72
92
|
|
73
|
-
cl
|
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
|
-
|
101
|
+
end_drawing = time.time()
|
76
102
|
|
77
103
|
|
78
104
|
|
79
|
-
|
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
|
-
|
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に変更
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でもv
|
13
|
+
サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でもv3でも動きます。
|
14
14
|
|
15
15
|
|
16
16
|
|
1
追加リンクの挿入
test
CHANGED
@@ -2,13 +2,15 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
この
|
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
|
-
|
13
|
+
サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でもv4でも動きます。
|
12
14
|
|
13
15
|
|
14
16
|
|