アーカイブ / Computer Vision
標準型と混合型の画像Transformerを同じFPGA回路で処理するFlexViT
FlexViT
FlexViTの原論文から掲載した図です。細部はクリックして拡大できます。
原論文の図の説明を読む
Fig. 1 : Vision Transformer Architecture.
概要
- 全結合層と畳み込み層を共通の行列積回路で処理し、層ごとに入力または重みの共有方式を切り替える。
- PYNQ-Z2上の五つのINT8モデルで、著者らはCPU単独実行比で移管層1.77~2.74倍、モデル全体で最大1.40倍の速度向上を報告した。
- 製造画像への適用には対象画像とラベルによる学習・精度確認に加え、CPU側の処理とデータ転送を含む遅延測定が必要になる。
補足:編集した模式図で仕組みを確認する
VISUAL EXPLAINER
図でつかむ、FlexViTの仕組み
- 01INT8層入力
- 02畳み込みを行列化
- 03共有方式を選択
- 04行列積と8ビット化
- 05INT8層出力
原論文の説明をもとにした模式図です。処理の細部は省略しています。
研究の背景
FlexViTは、画像Transformerの推論を端末上で実行する際の計算量とメモリ使用量に対応する。画像Transformerは画像を小さな領域に分け、その領域間の関係を扱うモデルである。畳み込みと全結合を併用する混合型では、層によって計算するデータの形も変わる。
FPGAは用途に合わせて処理回路を構成できる半導体だが、小型基板の回路資源と内部メモリには限りがある。異なる形の層を同じ回路で処理できれば、標準型と混合型の両方を対象にできる。
手法
FlexViTは、8ビット整数で表したモデルの全結合層と畳み込み層をFPGAで計算する。全結合層は入力と重みの行列積として扱い、畳み込み層ではCPUがim2colという並べ替えで画像の局所領域を行列に直してから、同じ行列積回路へ渡す。例えば、画像の一部分ずつを調べる畳み込みも、この変換後は共通の計算回路で処理できる。
実行前に層の種類と行列の形を見て、入力を複数の計算回路で共有するか、重みを共有するか選ぶ。計算途中の和は回路内に保持して加算を終え、結果を再び8ビットの値に変換してCPUへ返す。FPGAに移さない演算はCPUが続け、モデル全体の推論結果を得る。
新規性
著者らが提案するのは、全結合層と畳み込み層を一つの行列積回路で扱い、層ごとに入力と重みのどちらを計算回路間で共有するか切り替える構成である。
さらに、計算途中の和を回路内に保持して加算を完了し、途中結果を外部メモリへ書き戻す転送を減らす。異なる形の層を、同じ小型FPGA上で処理するための設計である。
従来手法との違い
性能比較の基準は、同じPYNQ-Z2基板のCPUでモデル全体を実行する構成である。FlexViTは全結合層と畳み込み層をFPGAに移し、Softmaxなどの演算と制御はCPU側に残す。
本文の比較表には、標準型か混合型の一方を対象とする既存のFPGA設計が挙げられている。ただし、報告された速度向上は基板上CPUとの比較であり、表中の既存設計との直接的な性能比較を示すものではない。
実験結果
著者らはPYNQ-Z2上で、ViT-T、DeiT-T、Swin-T、MobileViT-S、EfficientViT-b1の五つのINT8モデルを評価した。比較対象はNEON命令を有効にした基板上CPUで、実行時間は100回の平均、回路の動作周波数は200MHzと記している。
著者らは、FPGAへ移した層でCPU比1.77~2.74倍、モデル全体の遅延で最大1.40倍の速度向上を報告した。五つのモデルの出力はCPU実行とのコサイン類似度が99%超だったという。事前学習に用いたImageNet-21kまたはImageNet-1kは記載されているが、確認できた本文の範囲では速度測定に使った画像集合の詳細とモデル別の遅延値は分からない。
応用の可能性
編集上の応用案 · 論文が実証した用途とは区別しています。
編集上の応用案:製造ラインで撮影した製品画像を分類し、欠陥候補を作業者の確認一覧に載せる。入力はカメラ画像、出力は製品ごとの分類結果と確認対象とし、モデル内の全結合層と畳み込み層の実行にFlexViTを使う。
対象ラインの撮影画像、良品・不良品のラベル、画像を取得するカメラが必要になる。撮影条件と画像サイズを定め、対象製品に合わせたモデルの学習とINT8形式への変換を行う。欠陥判定の精度や処理速度は、この用途で別途確かめる。
導入時の検証
導入時の検証案 · 対象データでの再評価が必要です。
導入時の検証案:対象ラインのカメラ画像を集め、良品・不良品のラベルを付ける。撮影条件と画像サイズを固定し、製品に合わせて学習したモデルをINT8形式へ変換する。同じ画像を使い、まず基板上CPUだけで推論時間と分類結果を記録する。
次にFlexViTで実行し、モデル全体の遅延、移した層の実行時間、CPU側に残る時間、両者の出力の一致度を比べる。行列化と転送の時間も含めて測定し、ラベル付き画像で誤判定率を確認する。撮影条件が変わった画像でも結果を分けて記録する。
限界と課題
著者らが明示する設計上の範囲は、FPGAで扱う演算を全結合層と畳み込み層に絞る点である。設定した回路内バッファの深さは、評価対象のうちEfficientViT-b1の特徴抽出部44層をカバーする一方、最後の分類層の深さには届かない。
編集上の検証事項は、対象モデルでCPU側に残る処理、畳み込み入力の行列化、データ転送が全体の遅延に与える影響である。確認できた本文の範囲では、製造ラインの欠陥画像での判定精度や、別の基板での性能は確認できない。
出典
元のタイトル・要旨を確認する(英語)
FlexViT: A Flexible FPGA-based Accelerator for Edge Vision Transformers
Deploying Vision Transformer (ViT) models on edge platforms remains challenging due to their high computational demands and the architectural heterogeneity of modern hybrid ViT models, which incorporate both fully connected and convolutional layers. This heterogeneity leads to significant variation in tensor shapes, requiring flexible and efficient FPGA-based acceleration. In this paper, we present FlexViT, a reconfigurable FPGA accelerator for efficient ViT inference on resource-constrained edge devices. Built on the SECDA-TFLite framework, FlexViT employs a hardware-software co-design approach that maps both fully connected and convolutional layers onto a unified high-throughput INT8 GEMM engine using a runtime im2col transformation. To efficiently support diverse layer configurations, we propose a dual-mode dataflow that dynamically switches between input and weight reuse by reconfiguring the compute array at runtime. We further introduce a depth-first tiling strategy that completes accumulation in a single pass, eliminating off-chip partial-sum transfers and reducing memory bandwidth requirements. We implement FlexViT on a PYNQ-Z2 FPGA and evaluate it across a representative set of ViT models. FlexViT achieves up to 2.74x speedup on accelerator-executed layers, translating into up to 1.40x end-to-end speedup compared to CPU-only execution. The code is available at: https://github.com/gicLAB/FlexViT
論文本体の取得範囲に基づく解説。AIが作成した未校閲の記事です。性能の数値は著者の評価条件に依存します。応用例と検証計画は編集上の提案です。解説更新:2026-10-01




