Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FPGAを用いたフルパイプラインによるバイラテラルフィルタの高速化手法

 FPGAを用いたフルパイプラインによるバイラテラルフィルタの高速化手法

バイラテラルフィルタの高速化手法についての発表です。
バイラテラルグリッドを改良することで、ウィンドウ半径に応じた演算回数や回路規模の増大を抑え、フルパイプライン化することでその高速なFPGA実装を実際に行いました。
電子情報通信学会研究会のリコンフィギャラブルシステム研究会 (RECONF) での発表資料です (2021/06/09)。
プロフィールはこちら: https://n-hassy.info/ja/

290a66d9796825297c2cdb438a372f6a?s=128

Nobuho Hashimoto

June 09, 2021
Tweet

Transcript

  1. FPGAΛ༻͍ͨϑϧύΠϓϥΠϯʹΑΔ όΠϥςϥϧϑΟϧλͷߴ଎Խख๏ ౦ژେֶ େֶӃ৘ใཧ޻ֶܥݚڀՊ ίϯϐϡʔλՊֶઐ߈ ڮຊ ৴าɾߴલా ৳໵ 2021/06/09 ϦίϯϑΟΪϟϥϒϧγεςϜݚڀձ

    (RECONF)
  2. ຊݚڀͷ֓ཁ ❖όΠϥςϥϧάϦουͷվྑख๏ΛఏҊ Ø όΠϥςϥϧάϦου͸όΠϥςϥϧϑΟϧλΛߴ଎Խ͢Δख๏ Ø ΞϧΰϦζϜϨϕϧͰͷߩݙ ❖ϑϧύΠϓϥΠϯʹΑΓόΠϥςϥϧάϦουͷখن໛Ͱߴ଎ͳ FPGA ࣮૷ΛఏҊ Ø

    ϋʔυ΢ΣΞϨϕϧͰͷߩݙ ❖ఏҊख๏ͷ଎౓ɾճ࿏ن໛Λ࣮ػͰධՁ 2021/6/29 1
  3. όΠϥςϥϧϑΟϧλͷಛ௃ ❖ΤοδΛอ࣋ͨ͠··ฏ׈Խ͕Ͱ͖Δ ❖Ԡ༻ൣғ͕޿͍ Ø ϊΠζআڈ Ø ςΫενϟฤू Ø τʔϯ੍ޚ Ø

    σϞβΠΫ Ø ΦϓςΟΧϧϑϩʔਪఆ 2021/6/29 2 ϑΟϧλલ ϑΟϧλޙ
  4. όΠϥςϥϧϑΟϧλͷఆٛ ❖े෼ʹߴ଎ͱ͸ݴ͍೉͍ 2021/6/29 3 C. Tomasi and R. Manduchi, “Bilateral

    filtering for gray and color images,” ICCV, 1998 ۭؒΧʔωϧ ৭Χʔωϧ ਖ਼نԽ߲ ۭؒతʹ΋৭తʹ΋ ͍ۙըૉʹେ͖ͳॏΈ͕ͭ͘
  5. ܭࢉ্ͷ໰୊఺ ❖΢Οϯυ΢൒ܘ 𝑟 ʹԠͯ͡ԋࢉճ਺ɾճ࿏ن໛͕૿େ͢Δ Ø ܭࢉྔ͸ϐΫηϧ͝ͱʹ 𝑂 𝑟! ❖ඇઢܗͳϑΟϧλͳͷͰ࣍ݩ͝ͱʹ෼ׂͰ͖ͳ͍ ➜ըૉ਺͕ଟ͘ɼ΢Οϯυ΢൒ܘ͕େ͖͘ͳΓ΍͍͢େن໛ߴղ૾

    ౓ը૾ͷϦΞϧλΠϜॲཧΛখن໛ͳճ࿏Ͱߦ͏ͷ͸೉͍͠ 2021/6/29 4 ߴղ૾౓ ௿ղ૾౓
  6. ຊݚڀͰͷऔΓ૊Έ ❖େن໛ߴղ૾౓ը૾Ͱ͋ͬͯ΋ɼখن໛ͳճ࿏Ͱߴ଎ʹಈ࡞͢Δ όΠϥςϥϧϑΟϧλͷ࣮ݱ Ø ճ࿏ن໛͕΢Οϯυ΢൒ܘʹԠͯ͡૿Ճ͠ͳ͍ l όΠϥςϥϧάϦουͱ͍͏ख๏ΛԠ༻͢Δ͜ͱʹΑͬͯୡ੒ Ø ߴεϧʔϓοτɾ௿஗Ԇ l

    II = 1 ͷύΠϓϥΠϯԽɼೖྗͷஞ࣍తॲཧʹΑͬͯୡ੒ 2021/6/29 5 II (Initiation Interval): ͋ΔೖྗΛॲཧ࢝͠Ί͔ͯΒ ࣍ͷೖྗΛॲཧ࢝͠ΊΔ·ͰͷΫϩοΫ਺ ͋Δըૉͷॲཧ ࣍ͷըૉͷॲཧ ࣌ؒ II
  7. όΠϥςϥϧάϦου 1. ը૾Λۭؒํ޲ͱً౓ํ޲ʹ཭ࢄԽͯ͠άϦουʹ֨ೲ 2. άϦου্ͰϑΟϧλϦϯά 3. ิؒ͢Δ͜ͱͰݩͷ࠲ඪͰͷॲཧޙͷ஋Λܭࢉ 2021/6/29 6 J

    Chen, S Paris, and F Durand, “Real-time edge-aware image processing with the bilateral grid,” ACM Trans. Graph., 2007
  8. όΠϥςϥϧάϦουͷվྑ ❖άϦου্Ͱͷ΢Οϯυ΢൒ܘͷΈมԽͤ͞Δ͜ͱ͕Մೳ Ø ࡾ࣍ݩͳͷͰɼ΢Οϯυ΢൒ܘΛ૿Ճͤͨ͞ͱ͖ͷճ࿏ن໛ͷ૿େ͕େ ͖͍ Ø όΠϥςϥϧϑΟϧλͷग़ྗͱؔ࿈͚ͮΔͷ͕೉͍͠ ❖ݩͷը૾্Ͱͷ΢Οϯυ΢൒ܘΛมԽ͍ͤͨ͞ Ø 𝒓

    × 𝒓 ͷਖ਼ํܗΛմͱͯ͠ݟΔ Ø άϦου্ͷ΢Οϯυ΢൒ܘΛ 1 ʹݻఆ͢Δ 2021/6/29 7 طଘख๏ ఏҊख๏ ݩը૾্ͷ൒ܘ ߟྀ͍ͯ͠ͳ͍ Մม άϦου্ͷ൒ܘ Մม 1 ʹݻఆ
  9. ఏҊख๏ͷΞϧΰϦζϜ 1. άϦουੜ੒: ೖྗը૾ΛάϦου্ʹࣹӨ Ø ೖྗըૉ͝ͱʹ࣮ߦ 2. Ψ΢γΞϯϑΟϧλ: άϦου্ͰͷΨ΢γΞϯϑΟϧλ Ø

    άϦουͷཁૉ͝ͱʹ࣮ߦ 3. ࡾ࣍ݩઢܗิؒ: ೖྗը૾ͷً౓஋Λݩʹࡾ࣍ݩઢܗิؒ Ø ೖྗըૉ͝ͱʹ࣮ߦ ➜ஞ࣍తʹߦ͏ͱ஗͍ͷͰɼ͜ΕΒͷϧʔϓΛ݁߹͢Δ 2021/6/29 8
  10. ఏҊΞΫηϥϨʔλΞʔΩςΫνϟ 2021/6/29 9 όΠϥςϥϧ άϦουΛ༻͍ͨ όΠϥςϥϧ ϑΟϧλΛ ࣮૷ͨ͠ྫ͸ͳ͍

  11. ϧʔϓͷ݁߹ ❖2.5 𝑟 ߦ෼ఔ౓ͷ஗ԆͰ 𝑟 ߦͷೖྗʹରͯ͠ 𝑟 ߦͷग़ྗ͕ಘΒΕΔ 2021/6/29 10

    ಛʹ੨৭ͷ෦෼ʹ஫໨ ಉ͡৭ͰృΒΕͨ෦෼͕ॱʹ׬੒͢Δ ˞֤৭͸ը૾ͷ৭Λද͢ͷͰ͸ͳ͘ɼ આ໌ͷͨΊʹ৭෼͚Λߦ͚ͬͨͩͰ͋Δ
  12. ϑϧύΠϓϥΠϯԽ ❖৭ಉ࢜ΛύΠϓϥΠϯԽ Ø ϚΫϩύΠϓϥΠϯ ❖৭͝ͱʹύΠϓϥΠϯԽ Ø ϚΠΫϩύΠϓϥΠϯ 2021/6/29 11

  13. ఏҊख๏ͷ࠷దԽ ❖άϦουੜ੒Ͱ͸ಉ͡ཁૉʹࣹӨ͞ΕΔ͜ͱ͕͋ΔͨΊɼRead- Modify-Write ॲཧʹͳΔ (֤ਫ৭͸ಉ͡ཁૉʹࣹӨ) Ø II = 1 Ͱ͸࣮ݱͰ͖ͳ͍

    ❖y ࣠ํ޲ʹ͸࿈ଓͯ͠ 𝑟 ճͷΞΫηε͕͋Δ (੺৭) ͜ͱΛར༻ ❖1.5~2ഒఔ౓ͷߴ଎Խ 2021/6/29 12 ֤ཁૉ΁ͷ ΞΫηεύλʔϯ ೖྗը૾
  14. ࣮ݧ ❖ఏҊख๏Λ ZCU 104 Ϙʔυʹ࣮૷ ❖࢖༻ͨ͠πʔϧ౳ Ø Vivado HLS 2019.2

    l ߴҐ߹੒Λߦ͍ɼVerilog ͷίʔυ౳Λੜ੒ Ø Vivado 2019.2 l ϏοτετϦʔϜΛੜ੒ Ø PYNQ v2.6 l Ϙʔυͱͷσʔλͷ΍ΓͱΓ౳Λࢧԉ 2021/6/29 13 ZCU 104 Ϙʔυ (૊ΈࠐΈγεςϜͰ࢖͑Δ ఔ౓ͷখن໛ͳ FPGA)
  15. ϊΠζআڈੑೳ 2021/6/29 14 ݩͷը૾ ඪ४ภࠩͷΨ΢γΞϯϊΠζΛͷͤͨը૾ όΠϥςϥϧϑΟϧλͰॲཧޙ όΠϥςϥϧάϦουͰॲཧޙ

  16. ճ࿏ن໛ɾ଎౓ͱ΢Οϯυ΢൒ܘͷൺֱ 2021/6/29 15 ΢Οϯυ΢൒ܘΛ େ͖ͯ͘͠΋֤ࢦ ඪʹେ͖ͳมԽ͸ ݟΒΕͳ͍ ΢Οϯυ΢൒ܘͱճ࿏ن໛ɾ଎౓ͷؔ܎

  17. ఏҊख๏ͱGPU࣮૷ɾطଘख๏ͷൺֱ ❖ճ࿏ن໛Λ཈͑ͭͭɼ େ͖ͳը૾ɾେ͖ͳ ΢Οϯυ΢൒ܘͰ࣮ࡍ ʹߴ଎ʹॲཧՄೳ Ø ଎౓ʹؔͯ͠͸ GPU A100 PCIe

    ΑΓ΋ߴ଎ 2021/6/29 16 (2) A. Gabiger-Rose, M. Kube, R. Weigel, and R. Rose, “An FPGA-based fully synchronized design of a bilateral filter for real-time image denoising,” Transactions on Industrial Electronics, 2014 (3) S. D. Dabhade, G. N. Rathna, and K. N. Chaudhury, “A reconfigurable and scalable FPGA architecture for bilateral filtering,” Transactions on Industrial Electronics, 2018 ఏҊख๏ɼطଘख๏ʹ͓͚Δճ࿏ن໛ɾ଎౓ͷؔ܎
  18. ·ͱΊ ❖ೖྗը૾ͷ΢Οϯυ΢൒ܘ͕ՄมʹͳΔΑ͏ʹόΠϥςϥϧά ϦουΛ֦ுͨ͠ ❖ϋʔυ΢ΣΞࢿݯͷ૿ՃΛ཈͑ΒΕΔΑ͏ʹ׬શʹύΠϓϥΠϯ Խ͞Εͨ FPGA ࣮૷ΛఏҊͨ͠ ❖ఏҊख๏Λ࣮ࡍʹ FPGA ্ʹ࣮૷͠ɼܭࢉ଎౓ͱϋʔυ΢ΣΞࢿ

    ݯͷ؍఺͔Βଞͷطଘख๏Λ্ճΔੑೳΛୡ੒ͨ͠ ❖FPGA ܥͷτοϓձٞ FPL Ͱ΋ൃද༧ఆ (2021/08/30-09/03) 2021/6/29 17