マスク-rcnn解釈(A):clip_boxes_graph

マスクrcnn clip_boxes_graph()関数のこの部分が使用されます。:まず、コードは基本的な機能を解決した後、次のように詳細がある、コード、実行するために使用される
次のようにコードを:
TF ASインポートtensorflow 
インポートnumpyのAS NP
インポートランダム
セッション数= tf.Session()
ウィンドウ= [0.0,0.0,1.0,1.0]

範囲でI(用box_rand np.array =([ラウンド(はrandom.Random(),. 1) 32)])。変形(( 8,4))# ランダムに生成された数] 1,0 [の間にボックスをシミュレートする座標
box_rand = box_rand.astype(np.float32)
プリント( '表示box_rand ='、box_rand)位アナログ表示ボックス

wind_split = tf.split(ウィンドウ,. 4)
wind_sp = sess.run(wind_split)
プリント( 'wind_split ='、wind_sp)#分割ビューここで分割
印刷(np.array(wind_split).shape) #1 印刷寸法
Y1は、X1、Y2、X2 = tf.split(box_rand、4、軸= 1)#は4テンソルに分けて延びる第二の寸法を示し
、Y = sess.run(Y1)#表示最初の分割コンテンツを他の同様のトーン
印刷( '表示値= Y1'、Y)


DEFのclip_boxes_graph(ボックス、ウィンドウ):
"" "
ボックス:[N、(Y1、X1、Y2、X2)]
ウィンドウ:Y1、X1、Y2、X2における形態[4]
"" "
スプリット
WY1、WX1、WY2、WX2 = tf.split(ウィンドウ,. 4)
Y1、X1、Y2、X2 = tf.split(ボックス、 。4、軸= 1)
クリップ
範囲のX1 / Y1 / X2 / Y2の例では#1 Y1、WY1 <Y1 <WY2を必要とし、残りの部分と同様、その対応する[0,1]間隔閉じ
(Y1 = tf.maximum tf.minimum(Y1、WY2)、WY1)
X1 = tf.maximum(tf.minimum(X1、WX2)、WX1)
Y2 = tf.maximum(tf.minimum(Y2、WY2)、WY1)
X2 = tf.maximum (tf.minimum(X2、WX2)、WX1)
クリッピングtf.concat =(Y1、X1、Y2、X2]、軸= 1、名前= "clipped_boxes")
clipped.set_shape((clipped.shape [0]、 。4))
のリターンクリップされた

クリップ= clip_boxes_graph(box_rand、窓)
クリップ= sess.run(クリップ)
を印刷( 'ショークリッピング関数値='、クリップ)
印刷(「クリップされた表示関数値形状 =」、clip.shape)

結果は次の通り:

表示さbox_rand = [[0。0.5 0.1 0.7]
、[0.3 0.5 0.6 0.2]
、[0.1 0.6 0.6 0.6]
、[0.8 0.8 0.9 0.6]
、[0.5 0.1 0.8 0.3]
、[0.2 0.2 0.1 0.7]
[1。0.3 1 0.2]
、[0.1 0.8 0 0.1]
wind_split = [配列([0]、DTYPE =のfloat32)、アレイ([0]、DTYPE =のfloat32)、アレイ([1]、DTYPE =のfloat32 )、アレイ([1]、DTYPE =のfloat32)]
(4)
表示値Y1 = [0。]
[0.3]
、[0.1]
、[0.8]
、[0.5]
、[0.2]
、[1。]
[0.1]
ショー関数値クリッピング= [0。0.5 0.1 0.7]
、[0.3 0.5 0.6 0.2]
、[0.1 0.6 0.6 0.6]
、[0.8 0.8 0.9 0.6]
、[0.5 0.1 0.8 0.3]
、[0.2 0.2 0.1 0.7]
[1。0.3 1 0.2]
、[0.1 0.8 0 0.1]
ショー関数値クリッピング形状=(8,4)

 






おすすめ

転載: www.cnblogs.com/tangjunjun/p/11963362.html