teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

ボックスの結果を追記

2021/07/12 07:35

投稿

Ar-Ray
Ar-Ray

スコア16

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
- vc = cv2.imread("./abc.png")
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( vc , CONFIDENCE_THRESHOLD, NMS_THRESHOLD)
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(vc, box, color, 2)
50
+ cv2.rectangle(img, box, color, 2)
50
- cv2.putText(vc, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
51
+ cv2.putText(img, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
51
- end_drawing = time.time()
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", vc)
54
+ cv2.imshow("detections", img)
54
55
  cv2.waitKey(0)
55
56
  ```

3

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

2021/07/12 07:34

投稿

Ar-Ray
Ar-Ray

スコア16

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
- サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でもv3でも動きます。
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.VideoCapture(0)
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
- while cv2.waitKey(1) < 1:
43
+ classes, scores, boxes = model.detect( vc , CONFIDENCE_THRESHOLD, NMS_THRESHOLD)
32
- (grabbed, frame) = vc.read()
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
- start = time.time()
49
+ cv2.rectangle(vc, box, color, 2)
37
- classes, scores, boxes = model.detect(frame, CONFIDENCE_THRESHOLD, NMS_THRESHOLD)
50
+ cv2.putText(vc, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
38
- end = time.time()
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
- cv2.imshow("detections", frame)
53
+ cv2.imshow("detections", vc)
54
+ cv2.waitKey(0)
51
55
  ```

2

v4→v3に変更

2021/07/12 07:30

投稿

Ar-Ray
Ar-Ray

スコア16

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でもv4でも動きます。
7
+ サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でもv3でも動きます。
8
8
 
9
9
  ```Python
10
10
  # reference src : https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py

1

追加リンクの挿入

2021/07/12 06:54

投稿

Ar-Ray
Ar-Ray

スコア16

answer CHANGED
@@ -1,9 +1,10 @@
1
1
  学習済のdarknetの重みはOpencv(Python,C++)のdnnライブラリで直接読み込むことができるので、コレを使用してみてはいかがでしょうか?
2
2
 
3
- この場合、yolov4の実装ではありすが、v2でもv4でも動きます。
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
- https://gist.github.com/Ar-Ray-code/b07012e047883fbe7dd50dfe55c7f531
7
+ サンプルプログラムを貼っておきます。この場合、yolov4の実装ではありますが、v2でもv4でも動きます。
7
8
 
8
9
  ```Python
9
10
  # reference src : https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49#file-yolov4-py