I. 概要
tf.image.crop_and_resize および torchvision.ops.roi_align は、画像処理およびコンピューター ビジョンの分野で一般的に使用される画像のトリミングおよびサイズ変更関数です。
tf.image.crop_and_resize 関数は、TensorFlow の画像処理関数であり、入力画像から指定されたサイズの一連の長方形領域 (対象領域や候補ボックスなど) を切り取り、これらの領域を指定されたサイズに調整するために使用されます。対象のサイズです。tf.image.crop_and_resize は、ターゲット検出や画像セグメンテーションなどのタスクでよく使用され、対象領域のインターセプト、正および負のサンプルの生成、またはトレーニング データの生成を行います。
torchvision.ops.roi_align は、特定の特徴マップと一連の関心領域 (ROI) をトリミングおよびサイズ変更するための PyTorch のコンピューター ビジョン関数です。tf.image.crop_and_resize 関数とは異なり、torchvision.ops.roi_align はさまざまなサイズと比率の関心領域を処理できます。他の関数と比較して、torchvision.ops.roi_align は、対象領域の特定の形状とサイズに基づいて各領域のピクセルをより正確に補間および要約できるため、より正確な特徴表現が得られます。
tf.image.crop_and_resize と torchvision.ops.roi_align は両方とも、入力画像または特徴マップから指定されたサイズの一連の長方形領域を切り取って、指定されたターゲット サイズにサイズ変更するために使用されますが、それらの実装の詳細と用途は若干異なります。具体的な選択は、必要な精度と速度の要件によって異なります。
2. 入力と出力
tf.image.crop_and_resize 関数への入力には次のものが含まれます。
- image: 入力画像テンソル、データ型は float32、形状は [batch_size、image_height、image_width、channels]、batch_size はバッチ サイズを表し、image_height と image_width はそれぞれ画像の高さと幅を表し、channel は数を表します画像のチャンネル数。
- ボックス: 関心領域 (ROI) の座標とサイズ テンソル、形状は [num_boxes, 4]、ここで num_boxes はトリミングする必要がある領域の数、4 は各領域の座標とサイズを表します。具体的な式は次のとおりです。 [y1, x1, y2, x2] はそれぞれ左上隅と右下隅の座標を表します。ここでの y と x はそれぞれ画像の列 (x) と行 (y) を表しており、一般的な座標系とは異なることに注意してください。
- box_indices: 各関心領域が属する <image> のインデックス。形状は [num_boxes] で、範囲は[0,batch_size-1] です。これは、各領域が属する <入力画像> の番号を示します。ボックスは、画像の最初の次元に対応して属します (深さの数値ではないことに注意してください)。
- Crop_size: ターゲット サイズ、形状は [高さ、幅] で、トリミング後の各領域のサイズを指定します。
出力: 処理された特徴マップ (サイズ[num_rois, output_size, output_size, C]
)
torchvision.ops.roi_align 関数への入力には次のものが含まれます。
- input: 入力特徴マップ テンソル、データ型は float32、形状は [batch_size、channels、feature_height、feature_width]、ここで、batch_size はバッチ サイズを表し、channel は特徴マップのチャネル数を表し、feature_height と feature_width は高さと幅を表します。機能マップの。
- ボックス: 関心領域の座標とサイズ テンソル、形状は [num_boxes, 5]、ここで num_boxes は ROI を抽出する必要がある領域の数、5 は各領域の座標とサイズを表します。そのうちの最初の 4 つは、は [y1, x1 , y2, x2], tf.image.crop_and_resize 関数のボックスパラメータと一致しており、最後の次元は対象領域のバッチ内の画像のインデックスです。
- Output_size: 出力サイズ、形状は [output_height、output_width] で、調整後の各関心領域のサイズを指定します。
- spatial_scale: 各関心領域の入力特徴マップに対応するスケーリング係数。通常は 1/feature_map_stride に設定されます。ここで、feature_map_stride は特徴マップを抽出するネットワーク層のストライドです。
出力: 処理された特徴マップ (サイズ[num_rois, C, output_size, output_size]
)
つまり、関心領域が属する画像のインデックスは tf の入力パラメータ box_indices であり、torch のボックスの 5 次元目です。
tf.image.crop_and_resize と torchvision.ops.roi_align のボックスパラメータの順序は、それぞれ[y1, x1, y2, x2] と [x1, y1, x2, y2] であることに注意してください。電話の際に注文します。同時に、両方の関数では入力テンソルが浮動小数点型である必要があり、入力イメージの前処理が必要な場合があることに注意してください。