【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matchingharmonylab
公開URL:https://arxiv.org/pdf/2404.19174
出典:Guilherme Potje, Felipe Cadar, Andre Araujo, Renato Martins, Erickson R. ascimento: XFeat: Accelerated Features for Lightweight Image Matching, Proceedings of the 2024 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) (2023)
概要:リソース効率に優れた特徴点マッチングのための軽量なアーキテクチャ「XFeat(Accelerated Features)」を提案します。手法は、局所的な特徴点の検出、抽出、マッチングのための畳み込みニューラルネットワークの基本的な設計を再検討します。特に、リソースが限られたデバイス向けに迅速かつ堅牢なアルゴリズムが必要とされるため、解像度を可能な限り高く保ちながら、ネットワークのチャネル数を制限します。さらに、スパース下でのマッチングを選択できる設計となっており、ナビゲーションやARなどのアプリケーションに適しています。XFeatは、高速かつ同等以上の精度を実現し、一般的なラップトップのCPU上でリアルタイムで動作します。
セル生産方式におけるロボットの活用には様々な問題があるが,その一つとして 3 体以上の物体の組み立てが挙げられる.一般に,複数物体を同時に組み立てる際は,対象の部品をそれぞれロボットアームまたは治具でそれぞれ独立に保持することで組み立てを遂行すると考えられる.ただし,この方法ではロボットアームや治具を部品数と同じ数だけ必要とし,部品数が多いほどコスト面や設置スペースの関係で無駄が多くなる.この課題に対して音𣷓らは組み立て対象物に働く接触力等の解析により,治具等で固定されていない対象物が組み立て作業中に運動しにくい状態となる条件を求めた.すなわち,環境中の非把持対象物のロバスト性を考慮して,組み立て作業条件を検討している.本研究ではこの方策に基づいて,複数物体の組み立て作業を単腕マニピュレータで実行することを目的とする.このとき,対象物のロバスト性を考慮することで,仮組状態の複数物体を同時に扱う手法を提案する.作業対象としてパイプジョイントの組み立てを挙げ,簡易な道具を用いることで単腕マニピュレータで複数物体を同時に把持できることを示す.さらに,作業成功率の向上のために RGB-D カメラを用いた物体の位置検出に基づくロボット制御及び動作計画を実装する.
This paper discusses assembly operations using a single manipulator and a parallel gripper to simultaneously
grasp multiple objects and hold the group of temporarily assembled objects. Multiple robots and jigs generally operate
assembly tasks by constraining the target objects mechanically or geometrically to prevent them from moving. It is
necessary to analyze the physical interaction between the objects for such constraints to achieve the tasks with a single
gripper. In this paper, we focus on assembling pipe joints as an example and discuss constraining the motion of the
objects. Our demonstration shows that a simple tool can facilitate holding multiple objects with a single gripper.
14. シェーダーと実行パイプライン
Traversal
• この部分のDXRとしての正式な呼称はない
• RayとAcceleration Structuresとの交差判定を行うプログラム
• ここをプログラムすることはできない。DXRに隠蔽されている
• 役割
• ASとRayの交差判定を行う
• BLASの末端ノードとの交差が発生した場合は、
必要に応じて後述のIntersectionやAny Hitを呼び出す
Ray Generation TraceRay() Traversal Intersection Any Hit
Closest Hit MissCallable
15. シェーダーと実行パイプライン
Intersection (IS)
• BLASの末端ノードに定義したAABBとRayの交差が発生した際に呼び出される
• 基本的な役割の例
• AABB内にユーザーが定義したジオメトリと交差判定を行い、交差している場合は、
ReportHit()というHLSL組み込み関数を呼び出す
• ReportHit()を呼び出す際は、Attributeと呼ばれるPayloadとは別のユーザー定義構造体に
任意のデータを格納し、AnyHitに情報を渡す
• このシェーダーは、三角形との交差判定を行う場合は省略する
• DXRが三角形との交差判定を行い、システム定義のAttributeと共にAnyHitを呼び出す
Ray Generation TraceRay() Traversal Intersection Any Hit
Closest Hit MissCallable
16. シェーダーと実行パイプライン
Any Hit (AH)
• ISがReportHit()を呼び出すか、DXRの三角形との交差判定プログラムが、
交差を検出した場合に呼び出される
• AnyHitはRayがジオメトリと交差するたびに複数回呼び出される可能性がある
• 呼び出される順番は、RayのOriginに近い方からとは限らない
• ISが定義したAttributeを読むことができる
• RGが定義したPayloadを読をみ書きすることができる
Ray Generation TraceRay() Traversal Intersection Any Hit
Closest Hit MissCallable
1
2
3
17. シェーダーと実行パイプライン
Any Hit (AH)
• IgnoreHit()という組み込み関数を呼び出すことで、Rayとジオメトリの交差が無効であ
ることを通知できる
• AcceptHitAndEndSearch()という組み込み関数を呼び出すことで、
直ちにRayのTraversalを終了することができる
• 基本的な役割
• 交差判定の最終的な決定
• ISではできない、Payloadの更新作業
• このシェーダーは、省略可能
Ray Generation TraceRay() Traversal Intersection Any Hit
Closest Hit MissCallable
1
2
3
18. シェーダーと実行パイプライン
Closest Hit (CHS)
• RayのTraverseが終了した後、ジオメトリとの交差が発生した中で、T値がもっとも小さ
かった時の、各種システム定義変数とAttributeとともに一度だけ呼び出される
• システム定義変数は、たとえば、インスタンスのIDやプリミティブのIDなど
• RGが定義した、Payloadを読をみ書きすることができる
• 主な役割
• サーフェースのシェーディング(?)
• 2次Rayの生成
• このシェーダーは省略可能
Ray Generation TraceRay() Traversal Intersection Any Hit
Closest Hit MissCallable
20. シェーダーと実行パイプライン
Callable
• RG, CHS, MS, Callableは、組み込み関数CallShader()を介して呼び出すことができる
• 呼び出し元が定義した任意の構造体を読み書きすることができる
• ただのサブルーチンではない
• Rayや、プリミティブに関するシステム定義の値にアクセスすることはできない
• ShaderTable(後述)の定義に基づいたシェーダーリソース(TextureやCBなど)にアクセスできる
• このシェーダーの定義は任意
Ray Generation TraceRay() Traversal Intersection Any Hit
Closest Hit MissCallable
21. Ray Tracing Programsについて
• 6種類のShaderが、4種類のRay Tracing Programとして定義される
• 個々のRay Tracing Programは
• 別々のRoot Signatureを定義できる
• ユニークなShader Identifierを持つ
• Shader identifierは後述するShader Tableに設定することができる
• CHS,IS,AHはRoot Signatureを共有しなくてはならない。
• これをHit Groupと呼ぶ
Ray Generation TraceRay() Traversal Intersection Any Hit
Closest Hit MissCallable
22. Ray Tracing Pipeline State Objectについて
• Ray Tracing Pipeline State Object(RtPSO)は複数のRay Tracing Programを
まとめたもの
• 実質的には、シェーダーコードのリンク作業
• 使用するすべてのRoot Signatureと、AttributeやPayloadの最大サイズや、
TraceRay()の再帰呼び出しの最大回数も定義する
• このオブジェクトをDispatchRays()を呼び出すときに指定する
• 使用するすべてのシェーダーが含まれていなければならない
• RtPSOを作成した後、各Shader ProgramのShader Identifierが取得できる
Shader
Shader
Shader
Shader
Shader
Shader
Program
Program
Program
Program
Ray Tracing Pipeline State Object
38. GPUのThreadのスケジューリングについて
• ある一定の数のThreadが、ひとつの塊として扱われ、
同じプログラムを同時に実行する必要がある
DispatchRays() [10000]
Thread Group [50]Thread Group [50] Thread Group [50]Thread Group [50]
Thread Group [50]Thread Group [50] Thread Group [50]Thread Group [50]
Thread Group [50]Thread Group [50] Thread Group [50]Thread Group [50]
Thread Group [50]Thread Group [50] Thread Group [50]Thread Group [50]
Thread Group [50]Thread Group [50] Thread Group [50]Thread Group [50]
x10
50. Closest Hit, Missの呼び出し
• Closest Hit, MissはTraversalの動作から独立している
• 同じHitGroupに属する場合は並列実行される
• 異なれば、ThreadGroup内で、逐次実行される
Hit Group : A
Hit Group : B
Closest Hit
Closest Hit
Miss
51. TraceRay()の再帰呼び出し
• Miss, Closest HitはTraceRay()を再帰的に呼び出すことができる
• HitGroupが異なるShaderで逐次実行となっていると、
TraceRay()も逐次呼び出しとなる
TraceRay() Hit Group : A
Hit Group : B
Closest Hit
Closest Hit