質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

4389閲覧

tensorflow object detection API bounding box 座標について

PayaLiv

総合スコア13

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

1クリップ

投稿2017/11/08 10:32

質問させていただきます.
現在私は,tensorflow の"object detection API" を利用しています.
利用しているのはgit上にある以下のプログラムです.

https://github.com/tensorflow/models/blob/master/research/object_detection/object_detection_tutorial.ipynb

そこで私は 物体認識をして画像上に表示される bouding box の座標をしりたいと思っています.
通常 opencv などで行った際には (boundingboxの左上のx座標,boundingboxの左上のy座標, 横の長さ,縦の長さ)のように値が保持してあります.
プログラミングコード上でおそらく関係があると思われる Detection の部分にある"boxes"などの中身を調べてみました.
以下がその近辺のコードです.


python

1with detection_graph.as_default(): 2 with tf.Session(graph=detection_graph) as sess: 3 # Definite input and output Tensors for detection_graph 4 image_tensor = detection_graph.get_tensor_by_name('image_tensor:0') 5 # Each box represents a part of the image where a particular object was detected. 6 detection_boxes = detection_graph.get_tensor_by_name('detection_boxes:0') 7 # Each score represent how level of confidence for each of the objects. 8 # Score is shown on the result image, together with the class label. 9 detection_scores = detection_graph.get_tensor_by_name('detection_scores:0') 10 detection_classes = detection_graph.get_tensor_by_name('detection_classes:0') 11 num_detections = detection_graph.get_tensor_by_name('num_detections:0') 12 for image_path in TEST_IMAGE_PATHS: 13 image = Image.open(image_path) 14 # the array based representation of the image will be used later in order to prepare the 15 # result image with boxes and labels on it. 16 image_np = load_image_into_numpy_array(image) 17 # Expand dimensions since the model expects images to have shape: [1, None, None, 3] 18 image_np_expanded = np.expand_dims(image_np, axis=0) 19 # Actual detection. 20 (boxes, scores, classes, num) = sess.run( 21 [detection_boxes, detection_scores, detection_classes, num_detections], 22 feed_dict={image_tensor: image_np_expanded}) 23 # Visualization of the results of a detection. 24 vis_util.visualize_boxes_and_labels_on_image_array( 25 image_np, 26 np.squeeze(boxes), 27 np.squeeze(classes).astype(np.int32), 28 np.squeeze(scores), 29 category_index, 30 use_normalized_coordinates=True, 31 line_thickness=8) 32 plt.figure(figsize=IMAGE_SIZE) 33 plt.imshow(image_np)

以下が結果になります.
しかしながら,直接boudingbox の座標に関係があるのかが分かりませんでした.
他の変数の中身も見てみましたが,座標に関係のあるものが無いように思えました.

result

1[[[ 3.70766222e-02 2.32391059e-02 8.62020969e-01 3.18441600e-01] 2 [ 1.00141376e-01 3.91916126e-01 9.58822250e-01 9.73572135e-01] 3 [ 5.80091894e-01 4.02289629e-01 9.10106719e-01 6.81827903e-01] 4 [ 2.67864764e-03 5.37680089e-01 2.50190973e-01 6.97518170e-01] 5 [ 6.59326911e-02 3.71420026e-01 9.47743475e-01 9.82712150e-01] 6 [ 2.68082619e-02 7.62826264e-01 6.32788718e-01 9.91576493e-01] 7 [ 1.74010396e-02 3.69260252e-01 8.60050261e-01 6.47671759e-01] 8 [ 2.62468457e-02 2.15394646e-01 7.13022113e-01 6.44605398e-01] 9 [ 1.07638836e-01 5.58825672e-01 7.33044744e-01 7.30897963e-01] 10 [ 3.79294306e-02 1.11420602e-01 3.52208912e-01 3.05902272e-01] 11 [ 0.00000000e+00 4.11696434e-01 6.22777462e-01 6.51909351e-01] 12 [ 2.79582739e-02 6.83753192e-03 4.81684983e-01 3.11877012e-01] 13 [ 7.44389296e-02 2.71154195e-01 9.00867224e-01 9.64441538e-01] 14 [ 4.99033928e-03 2.87592858e-01 6.27175033e-01 5.26544154e-01] 15 [ 4.67826426e-03 3.77882779e-01 3.10840487e-01 6.87657654e-01] 16 [ 1.08135045e-02 2.45042488e-01 8.66623044e-01 4.76782322e-01] 17 [ 5.08013368e-02 0.00000000e+00 8.92649353e-01 5.29527903e-01] 18 [ 6.39598444e-03 6.85519636e-01 8.14009309e-02 7.63971627e-01] 19 [ 7.34354928e-03 7.00937867e-01 8.37567449e-02 7.99702287e-01] 20 [ 9.56903398e-03 7.89382577e-01 2.77421892e-01 9.53748822e-01] 21 [ 1.14383996e-02 2.46351182e-01 7.93706298e-01 4.77306306e-01] 22 [ 1.47813708e-02 2.62614429e-01 2.61748374e-01 7.37113655e-01] 23 [ 2.08409131e-03 5.27146995e-01 2.99976110e-01 7.69435227e-01] 24 [ 6.45412028e-01 5.97376883e-01 7.72994697e-01 7.08751142e-01] 25 [ 1.76023692e-01 8.01044524e-01 2.56199092e-01 8.36520731e-01] 26 [ 1.77701205e-01 8.30787718e-01 2.77940273e-01 8.98237050e-01] 27 [ 4.49800789e-01 4.20949638e-01 8.72183025e-01 6.59005344e-01] 28 [ 4.21552211e-02 7.85431147e-01 3.13383758e-01 9.55286980e-01] 29 [ 0.00000000e+00 5.06608784e-02 7.51202464e-01 5.64320087e-01] 30 [ 2.52031386e-02 1.14164032e-01 6.10430717e-01 3.33315998e-01] 31 [ 8.68688524e-03 9.93093550e-02 2.13545889e-01 3.07423383e-01] 32 [ 9.36175287e-02 7.85452187e-01 4.23507959e-01 9.72094476e-01] 33 [ 0.00000000e+00 5.60392439e-01 6.07045770e-01 7.04684317e-01] 34 [ 1.60332471e-02 3.91475856e-04 4.99358475e-01 1.80552453e-01] 35 [ 6.36043251e-02 3.12048316e-01 8.48924041e-01 5.44608653e-01] 36 [ 5.27268648e-03 6.59941792e-01 2.47535557e-01 7.97456503e-01] 37 [ 1.02197461e-01 7.63699412e-01 3.39428455e-01 9.21994090e-01] 38 [ 6.34029388e-01 4.12018538e-01 7.77234197e-01 7.11640954e-01] 39 [ 4.99218106e-02 5.12819707e-01 6.33476317e-01 7.85471737e-01] 40 [ 1.41868293e-02 9.28779602e-01 4.37340528e-01 9.98276949e-01] 41 [ 8.84260982e-04 5.37971973e-01 8.48287344e-02 7.90319443e-01] 42 [ 1.74092352e-02 3.24149430e-01 5.37369490e-01 6.78354681e-01] 43 [ 8.63035023e-03 6.22962892e-01 3.05343926e-01 8.98170769e-01] 44 [ 5.36475003e-01 3.25907648e-01 9.20678198e-01 7.30400264e-01] 45 [ 1.32080913e-03 7.76022434e-01 3.40186447e-01 9.96103764e-01] 46 [ 0.00000000e+00 6.62098348e-01 8.21765587e-02 9.03941929e-01] 47 [ 1.66808799e-01 7.63557017e-01 4.42327499e-01 9.08092916e-01] 48 [ 1.39167011e-02 9.07135189e-01 3.12922806e-01 1.00000000e+00] 49 [ 1.57200694e-02 8.35942447e-01 7.62703001e-01 9.97816980e-01] 50 [ 9.23319161e-03 4.49134111e-01 2.72807360e-01 8.67401481e-01] 51 [ 6.45412028e-01 5.97376883e-01 7.72994697e-01 7.08751142e-01] 52 [ 0.00000000e+00 6.07310951e-01 8.00046027e-02 8.40086758e-01] 53 [ 6.11052752e-01 6.06802702e-01 7.49152660e-01 7.06053734e-01] 54 [ 2.38389701e-01 0.00000000e+00 7.98261642e-01 7.60288477e-01] 55 [ 3.70766222e-02 2.32391059e-02 8.62020969e-01 3.18441600e-01] 56 [ 8.88931751e-03 0.00000000e+00 3.26228440e-01 3.33230644e-01] 57 [ 2.04673111e-02 4.26852524e-01 4.37012225e-01 6.71041191e-01] 58 [ 0.00000000e+00 4.76602226e-01 2.65630186e-01 6.75271511e-01] 59 [ 1.80710256e-02 2.36390218e-01 3.94988418e-01 7.23949134e-01] 60 [ 0.00000000e+00 3.33192140e-01 2.98385859e-01 5.26110590e-01] 61 [ 1.00441381e-01 6.81784824e-02 2.73970127e-01 3.16320151e-01] 62 [ 7.04130530e-03 0.00000000e+00 6.89402938e-01 4.04221177e-01] 63 [ 2.88287550e-01 0.00000000e+00 6.87736273e-01 5.00128388e-01] 64 [ 1.72952354e-01 7.29220152e-01 2.93541282e-01 9.44286823e-01] 65 [ 1.17731392e-02 3.24624926e-01 2.20594078e-01 5.77684522e-01] 66 [ 6.86677277e-01 4.09583986e-01 8.14984739e-01 7.10663617e-01] 67 [ 2.02762514e-01 6.69540823e-01 3.74175936e-01 9.30079639e-01] 68 [ 1.18174672e-01 0.00000000e+00 3.58328700e-01 3.40447336e-01] 69 [ 1.63917422e-01 8.00174356e-01 5.13882160e-01 9.61729050e-01] 70 [ 2.43298978e-01 2.45772272e-01 7.61221290e-01 1.00000000e+00] 71 [ 0.00000000e+00 3.50008696e-01 6.97703511e-02 6.64999008e-01] 72 [ 0.00000000e+00 6.56346321e-01 1.34895504e-01 7.82198906e-01] 73 [ 6.88554347e-03 2.51892745e-01 3.99504662e-01 4.55886722e-01] 74 [ 0.00000000e+00 6.88617468e-01 1.44334793e-01 8.23197842e-01] 75 [ 0.00000000e+00 3.20033640e-01 1.47724807e-01 5.30816138e-01] 76 [ 0.00000000e+00 6.29961789e-02 3.88361305e-01 3.91400486e-01] 77 [ 0.00000000e+00 8.28370631e-01 2.65981734e-01 9.88341630e-01] 78 [ 1.82754733e-03 3.41375083e-01 5.76723889e-02 4.78018731e-01] 79 [ 0.00000000e+00 3.58040571e-01 1.53169647e-01 6.13790154e-01] 80 [ 5.31935155e-01 3.84203613e-01 7.78207958e-01 7.21878469e-01] 81 [ 6.36111915e-01 3.22093010e-01 7.82574832e-01 5.45183182e-01] 82 [ 58412367e-01 6.44178033e-01 7.31922507e-01 8.87382388e-01] 83 [ 5.28672636e-02 2.11526453e-03 7.16688514e-01 1.32305130e-01] 84 [ 1.46860301e-01 8.43356252e-01 5.86594760e-01 9.81495738e-01] 85 [ 6.22597337e-03 1.72302663e-01 5.41191220e-01 8.17064404e-01] 86 [ 9.56874192e-02 0.00000000e+00 7.61249065e-01 9.89065170e-01] 87 [ 6.58449531e-03 9.32844043e-01 1.69511288e-01 9.95045900e-01] 88 [ 1.99106708e-03 6.38102531e-01 6.89450651e-02 7.14508414e-01] 89 [ 0.00000000e+00 7.84308791e-01 7.88945258e-02 1.00000000e+00] 90 [ 1.57109201e-02 3.17976117e-01 4.13692623e-01 4.79996681e-01] 91 [ 7.31878519e-01 1.56241953e-02 9.86946940e-01 9.25869226e-01] 92 [ 2.26111412e-02 2.12461650e-01 9.71305549e-01 8.51539791e-01] 93 [ 4.04597819e-02 5.12805581e-02 8.00263524e-01 9.93615806e-01] 94 [ 3.79322648e-01 5.40679693e-01 8.81464958e-01 9.43988562e-01] 95 [ 1.76028907e-02 3.19518447e-01 4.30800200e-01 4.78415072e-01] 96 [ 0.00000000e+00 1.83706462e-01 2.29834288e-01 5.22784472e-01] 97 [ 1.68697685e-02 2.61039078e-01 4.68145788e-01 5.87137640e-01] 98 [ 6.86408281e-01 3.27755451e-01 8.19596648e-01 5.54131150e-01] 99 [ 2.23855555e-01 4.12261397e-01 6.54340148e-01 7.17972040e-01] 100 [ 0.00000000e+00 8.49669576e-01 1.65976733e-01 9.89492893e-01]]] 101

ちなみに物体認識をした画像についてはsample として使用されている以下の画像を利用しました.

イメージ説明

bouding box の座標の調べ方がわかる方がおりましたらよろしくお願いします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

元のコードを見てみるとよいです。
tensorflow/models/blob/master/research/object_detection/utils/visualization_utils.py#L385

Python

1# Draw all boxes onto image. 2for box, color in box_to_color_map.items(): 3 ymin, xmin, ymax, xmax = box

こうあるので、boxの中身の要素が何を意味するのかわかります。


ついでなので、実際に描画する部分も見てみましょう。
tensorflow/models/blob/master/research/object_detection/utils/visualization_utils.py#L124

Python

1(left, right, top, bottom) = (xmin * im_width, xmax * im_width, 2 ymin * im_height, ymax * im_height)

これを真似ればいいですね。

投稿2017/11/08 10:54

編集2017/11/08 10:56
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PayaLiv

2017/11/08 11:49

ご丁寧な回答有難うございます. 元のコードを調べるという基本的なことができていなかったようです,スミマセン. ご指摘いただいた部分を中心に自分でもよく見てみようと思います.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問