回答編集履歴
4
ボックスの結果を追記
answer
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
|
|
@@ -7,7 +7,7 @@
|
|
7
7
|
- OpenCV4
|
8
8
|
- CPU:Intel Core i5 10210u
|
9
9
|
- OS:Ubuntu 20.04 LTS
|
10
|
-
- 対象画像:abc.png
|
10
|
+
- 対象画像:./abc.png
|
11
11
|
- クラス名:./darknet_cfg/coco.names
|
12
12
|
- cfgファイル:./darknet_cfg/yolov4-tiny.cfg
|
13
13
|
- weightsファイル:./darknet_cfg/yolov4-tiny.weights
|
@@ -20,6 +20,7 @@
|
|
20
20
|
|
21
21
|
```Python
|
22
22
|
# reference src : https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py
|
23
|
+
|
23
24
|
import cv2
|
24
25
|
import time
|
25
26
|
|
@@ -31,7 +32,7 @@
|
|
31
32
|
with open("./darknet_cfg/coco.names", "r") as f:
|
32
33
|
class_names = [cname.strip() for cname in f.readlines()]
|
33
34
|
|
34
|
-
|
35
|
+
img = cv2.imread("./abc.png")
|
35
36
|
|
36
37
|
net = cv2.dnn.readNet("./darknet_cfg/yolov4-tiny.weights", "./darknet_cfg/yolov4-tiny.cfg")
|
37
38
|
|
@@ -40,16 +41,16 @@
|
|
40
41
|
model = cv2.dnn_DetectionModel(net)
|
41
42
|
model.setInputParams(size=(416, 416), scale=1/255, swapRB=True)
|
42
43
|
|
43
|
-
classes, scores, boxes = model.detect(
|
44
|
+
classes, scores, boxes = model.detect( img , CONFIDENCE_THRESHOLD, NMS_THRESHOLD)
|
44
45
|
start_drawing = time.time()
|
45
46
|
|
46
47
|
for (classid, score, box) in zip(classes, scores, boxes):
|
47
48
|
color = COLORS[int(classid) % len(COLORS)]
|
48
49
|
label = "%s : %f" % (class_names[classid[0]], score)
|
49
|
-
cv2.rectangle(
|
50
|
+
cv2.rectangle(img, box, color, 2)
|
50
|
-
cv2.putText(
|
51
|
+
cv2.putText(img, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
|
51
|
-
|
52
|
+
# print box
|
52
|
-
|
53
|
+
print("box[0]=" + str(box[0]) + " box[1]=" + str(box[1]) + " box[2]=" + str(box[2]) + " box[3]=" + str(box[3]))
|
53
|
-
cv2.imshow("detections",
|
54
|
+
cv2.imshow("detections", img)
|
54
55
|
cv2.waitKey(0)
|
55
56
|
```
|
3
プログラムの仕様を画像用に変更
answer
CHANGED
@@ -1,14 +1,25 @@
|
|
1
|
-
学習済のdarknetの重みはOpencv(Python,C++)のdnn
|
1
|
+
学習済みのdarknetの重みはOpencv(Python,C++)のdnnモジュールでも直接読み込むことができ、次のプログラムで示す配列box[]で取得することができます。
|
2
2
|
|
3
|
+
ぜひお試しください。
|
4
|
+
|
5
|
+
以下のプログラムは、次の環境で動作確認をしています。
|
6
|
+
- Python3.8
|
7
|
+
- OpenCV4
|
8
|
+
- CPU:Intel Core i5 10210u
|
9
|
+
- OS:Ubuntu 20.04 LTS
|
10
|
+
- 対象画像:abc.png
|
11
|
+
- クラス名:./darknet_cfg/coco.names
|
12
|
+
- cfgファイル:./darknet_cfg/yolov4-tiny.cfg
|
13
|
+
- weightsファイル:./darknet_cfg/yolov4-tiny.weights
|
14
|
+
|
3
15
|
この記事を参考にしました
|
4
16
|
・https://opencv-tutorial.readthedocs.io/en/latest/yolo/yolo.html
|
5
17
|
・https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py
|
6
18
|
|
7
|
-
サンプルプログラムを
|
19
|
+
サンプルプログラムを示します。この場合、yolov4の実装ではありますが、v2でもv3でも動きます。パスは適宜変更してください。
|
8
20
|
|
9
21
|
```Python
|
10
22
|
# reference src : https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py
|
11
|
-
|
12
23
|
import cv2
|
13
24
|
import time
|
14
25
|
|
@@ -20,32 +31,25 @@
|
|
20
31
|
with open("./darknet_cfg/coco.names", "r") as f:
|
21
32
|
class_names = [cname.strip() for cname in f.readlines()]
|
22
33
|
|
23
|
-
vc = cv2.
|
34
|
+
vc = cv2.imread("./abc.png")
|
24
35
|
|
25
36
|
net = cv2.dnn.readNet("./darknet_cfg/yolov4-tiny.weights", "./darknet_cfg/yolov4-tiny.cfg")
|
37
|
+
|
26
38
|
net.setPreferableBackend(cv2.dnn.DNN_TARGET_CPU)
|
27
39
|
net.setPreferableTarget(cv2.dnn.DNN_TARGET_CPU)
|
28
40
|
model = cv2.dnn_DetectionModel(net)
|
29
41
|
model.setInputParams(size=(416, 416), scale=1/255, swapRB=True)
|
30
42
|
|
31
|
-
|
43
|
+
classes, scores, boxes = model.detect( vc , CONFIDENCE_THRESHOLD, NMS_THRESHOLD)
|
32
|
-
|
44
|
+
start_drawing = time.time()
|
33
|
-
if not grabbed:
|
34
|
-
exit()
|
35
45
|
|
46
|
+
for (classid, score, box) in zip(classes, scores, boxes):
|
47
|
+
color = COLORS[int(classid) % len(COLORS)]
|
48
|
+
label = "%s : %f" % (class_names[classid[0]], score)
|
36
|
-
|
49
|
+
cv2.rectangle(vc, box, color, 2)
|
37
|
-
|
50
|
+
cv2.putText(vc, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
|
38
|
-
|
51
|
+
end_drawing = time.time()
|
39
52
|
|
40
|
-
start_drawing = time.time()
|
41
|
-
for (classid, score, box) in zip(classes, scores, boxes):
|
42
|
-
color = COLORS[int(classid) % len(COLORS)]
|
43
|
-
label = "%s : %f" % (class_names[classid[0]], score)
|
44
|
-
cv2.rectangle(frame, box, color, 2)
|
45
|
-
cv2.putText(frame, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
|
46
|
-
end_drawing = time.time()
|
47
|
-
|
48
|
-
fps_label = "FPS: %.2f (excluding drawing time of %.2fms)" % (1 / (end - start), (end_drawing - start_drawing) * 1000)
|
49
|
-
cv2.putText(frame, fps_label, (0, 25), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 2)
|
50
|
-
|
53
|
+
cv2.imshow("detections", vc)
|
54
|
+
cv2.waitKey(0)
|
51
55
|
```
|
2
v4→v3に変更
answer
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
・https://opencv-tutorial.readthedocs.io/en/latest/yolo/yolo.html
|
5
5
|
・https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py
|
6
6
|
|
7
|
-
サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でも
|
7
|
+
サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でもv3でも動きます。
|
8
8
|
|
9
9
|
```Python
|
10
10
|
# reference src : https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py
|
1
追加リンクの挿入
answer
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
学習済のdarknetの重みはOpencv(Python,C++)のdnnライブラリで直接読み込むことができるので、コレを使用してみてはいかがでしょうか?
|
2
2
|
|
3
|
-
この
|
3
|
+
この記事を参考にしました
|
4
|
+
・https://opencv-tutorial.readthedocs.io/en/latest/yolo/yolo.html
|
5
|
+
・https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py
|
4
6
|
|
5
|
-
https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py
|
6
|
-
|
7
|
+
サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でもv4でも動きます。
|
7
8
|
|
8
9
|
```Python
|
9
10
|
# reference src : https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py
|