1 / 65

ネットワーク配信可能な hw/sw 複合体 動画像仮想回路コーデック WEB ビデオストリーミングへの応用

ネットワーク配信可能な hw/sw 複合体 動画像仮想回路コーデック WEB ビデオストリーミングへの応用. システム LSI 工学  講義資料 2010.11.19. Internet Booster. 背景 ~WEB アプリケーション ~. インターネットの人口普及率 75% 超 ! ※ 様々なクライアントの普及 ( ネットブック , 携帯電話 , etc.) CPU の限界. サーバー 負荷が大きい. クライアント 負荷が大きい. Cloud computing. 3D オンラインゲーム. User Generated Contents

tambre
Télécharger la présentation

ネットワーク配信可能な hw/sw 複合体 動画像仮想回路コーデック WEB ビデオストリーミングへの応用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ネットワーク配信可能なhw/sw複合体動画像仮想回路コーデックWEBビデオストリーミングへの応用ネットワーク配信可能なhw/sw複合体動画像仮想回路コーデックWEBビデオストリーミングへの応用 システムLSI工学  講義資料 2010.11.19

  2. Internet Booster 背景 ~WEBアプリケーション~ • インターネットの人口普及率 75%超!※ • 様々なクライアントの普及 (ネットブック, 携帯電話, etc.) • CPU の限界 サーバー 負荷が大きい クライアント負荷が大きい Cloud computing 3D オンラインゲーム User Generated Contents ニコニコ動画,YouTube Ustream, etc. Wiki E-Commerce FPGA融合タイプ FPGAとの融合による新しいWEBアプリの可能性 ※ 総務省 平成20年「通信利用動向調査」, 2009.

  3. Internet Booster: コンセプト Software FPGA FPGA + + Virtual hardware circuit CPU CPU Network IB Client IB Server • 仮想回路(ハードウェア)をネットワーク経由で転送 • 仮想回路によるWEBアプリの高速化 • 柔軟性と高速演算の両方を実現! “仮想化技術”と“開発環境”が非常に重要である!

  4. 応用例:回路配信を伴う動画像伝送システム 動画送信側PC ソフトウェア 形式Aの 圧縮回路 形式C 形式B 形式B 形式C 形式Aの 伸張回路 インターネット ソフトウェア 動画受信側PC

  5. 応用例:回路配信を伴う動画像伝送システム 動画送信側PC 圧縮 回路 適切な圧縮回路を ダウンロード ソフトウェア 形式Aの 圧縮回路 形式C 形式B 形式B 形式C 形式Aの 伸張回路 インターネット ソフトウェア 動画受信側PC

  6. 応用例:回路配信を伴う動画像伝送システム 動画送信側PC 圧縮 回路 適切な圧縮回路を ダウンロード 動画形式情報 ソフトウェア 形式Aの 圧縮回路 形式C 形式B 形式B 形式C 形式Aの 伸張回路 インターネット ソフトウェア 動画受信側PC

  7. 応用例:回路配信を伴う動画像伝送システム 動画送信側PC 圧縮 回路 適切な圧縮回路を ダウンロード 動画形式情報 ソフトウェア 形式Aの 圧縮回路 形式C 形式B 形式B 形式C 形式Aの 伸張回路 インターネット 適切な伸張回路を ダウンロード 伸張 回路 ソフトウェア 動画受信側PC

  8. 応用例:回路配信を伴う動画像伝送システム 動画送信側PC 圧縮 回路 適切な圧縮回路を ダウンロード 圧縮された動画 動画形式情報 ソフトウェア 形式Aの 圧縮回路 形式C 形式B 形式B 形式C 形式Aの 伸張回路 インターネット 適切な伸張回路を ダウンロード 伸張 回路 ソフトウェア 動画受信側PC

  9. 応用例:回路配信を伴う動画像伝送システム 動画送信側PC ●ソフトウェアと組み合わせることで,  回路への簡単なアクセスが可能 ●作りきりの回路と違い,入れ替え可 ●インターネット環境があれば,誰でも  回路を利用できる 圧縮 回路 適切な圧縮回路を ダウンロード 圧縮された動画 動画形式情報 ソフトウェア 形式Aの 圧縮回路 形式C 形式B 形式B 形式C 形式Aの 伸張回路 ソフトウェアによるコーデックのような回路利用が可能 インターネット 適切な伸張回路を ダウンロード 伸張 回路 ソフトウェア 動画受信側PC

  10. 応用例:回路配信を伴う動画像伝送システム 動画送信側PC さらにいえば・・・ ●コーデック回路を対にして用意すること  で,独自形式でも問題なく動作 ●誰でも回路をコーディングして  配信することができる 圧縮 回路 適切な圧縮回路を ダウンロード 圧縮された動画 動画形式情報 ソフトウェア 形式Aの 圧縮回路 形式C 形式B 形式B 形式C 形式Aの 伸張回路 多様なユーザー作成回路が ネット配信される可能性 インターネット 適切な伸張回路を ダウンロード 伸張 回路 ソフトウェア 動画受信側PC

  11. なぜFPGAが良いのか? 再構成性(中の回路を自由に書き換えられること)はもちろんのこと・・・ 専用ハードウェア開発の視点より • ASICの置き換え (V. Betz, FPL2009) • Most architecture still in 130nm and above • 40nmプロセスでは開発費回収に4000万ドルの市場が必要 • 最新FPGAは古いプロセスのASICを追い抜く! FPGA vs CPU, IBM’s Cell, GPU(K. Benkrid, HEART2010) • Performance※ • ×1(CPU), ×45(Cell), ×14(GPU), ×228(FPGA) Speed-Up • ×1(CPU), ×31(Cell), ×25(GPU), ×584(FPGA) per Watt • Development time in Days※ • 1 Day (CPU), 90 (Cell), 45 (GPU), 300 (FPGA) ※Smith-Waterman Algorithm 課題:プログラマビリティの改善と開発環境(SDK)の確立が必須

  12. hw/sw 複合体, hwObject Model※ • ソフト部とハード部(大規模演算を担当)から構成 • hw/sw複合体システムの開発を支援 • FPGAの課題を解決! 抽象化(仮想化) control/status,data Construct! 動的再構成 • ソフトウェア開発者の視点 • swObjectと同様にhwObjectを取り扱うことが可能 • ハードウェアへのアクセスの詳細は カプセル化 • デザインの再利用が簡単 ※ K. Kudo, et al., “Hardware object model and its application to the image processing,” IEICE Trans., 2004.

  13. hw/sw 複合体, hwObject Model • ハードウェア開発者の視点 • インタフェース(I/F)回路は全てのhwModuleシリーズで共通化. • “hwNet”のみの開発で新しい機能を実現可能. • デザインの再利用が簡単. FPGAのプログラマビリティの改善と hw/sw複合体の効果的な開発を支援

  14. user application network network user application Web Server Web Browser HTTP HTTP C/S IBS (swObject) IBA (swObject) RTMP RTMP event event Application Layer Application Layer hwObject hwObject Protocol Stacks Protocol Stacks C/S C/S Virtual P2P access hwNet (Encoder) hwNet (Decoder) USER FPGA USER FPGA hw/sw複合体のネットワーク拡張 • ネットワーク経由でのhwNetアクセス プロトコル “RTMP”を用いたControl/Status signal の転送. 全てのオブジェクト(hw, sw)から,ネットワーク上の任意のhwNetを遠隔操作可能. RTMP: Adobe Real Time Message Protocol.

  15. Server ソフトウェア 回路データ 通信データ ・ActiveXコントロールの実装 ・Real Time Message Protocol           (RTMP)の実装 ソフトウェア Client 以上の2点から実現 hw/sw複合体ネットワーク拡張の詳細 • hw/sw複合体を        ネットワーク接続 • コンテンツ提供側: IBS(IB-Server) • クライアント側 IBA(IB-Agent)

  16. 回路データ 通信データ ActiveXコントロールの実装 • IBAをWebブラウザで動作 アプリケーション上で • IBSの状態をIBAに通知 • IBAの操作にIBSが応答 等の動作が可能 Server ソフトウェア (IBS.exe) ソフトウェア ActiveX (IBA.ocx) ソフトウェア Client

  17. セッション層 ~アプリケーション層 Server データリンク層 ネットワーク層 トランスポート層 データリンク層 • RTMPをアプリケーション層に実装することで接続 • IBS,IBAでpeer-to-peer通信 イーサネットヘッダ IPヘッダ TCPヘッダ TCPボディ イーサネットトレイラ ソフトウェア RTMPヘッダ RTMPボディ ソフトウェア Client IBのネットワーク接続 • コンテンツ提供側: IBS(InternetBoosterServer) • クライアント側 IBA(InternetBoosterAgent) ソフトウェア (IBS.exe) ActiveX (IBA.ocx)

  18. Server IBhwObject ソフトウェア (IBS.exe) IBhwObject Interface PCIバス 回路データ 通信データ IBhwObject IBhwObject IBhwObject IBhwObject ActiveX (IBA.ocx) IBhwObject Interface IBhwObject Interface IBhwObject Interface IBhwObject Interface IBhwObject Interface PCIバス Client FPGAとの接続 • IBhwObject(dll提供) • ソフト、ActiveX側から • hwModuleとの接続を隠蔽 • メンバ関数で回路操作可能

  19. Server 回路データ 通信データ IBhwObject IBhwObject PCIバス PCIバス IBhwObject Interface IBhwObject Interface Client FPGAとの接続 ソフトウェア (IBS.exe) 実際の記述 #include “IBHwObjectIntf.h“ //Intfのインクルード using IB::IBHwObjectIntf; //名前空間の宣言 IBHwObjectIntf* hwObj; //クラスの宣言 hwObj->download( path ); //pathの回路をDL実装 hwObj->play(); //動作開始 IBhwObject IBhwObject IBhwObject IBhwObject PCIバス PCIバス ActiveX (IBA.ocx) IBhwObject Interface IBhwObject Interface IBhwObject Interface IBhwObject Interface IBhwObject Interface

  20. Server ソフトウェア 回路データ 通信データ ソフトウェア Client InternetBoosterの特徴 • 簡便な回路利用 • 煩雑な回路使用手続きは         ソフトで隠蔽 • 遠隔でのFPGA書き換え • 回路データの送受信 • 遠隔での回路アクセス

  21. Server Webページ (.html) コンテンツ配信用 Webページ 回路A 回路B ソフトウェア 回路C ActiveX (.ocx) アプリケーションの ActiveXコントロール アプリ用の回路 ソフトウェア Client IBSの機能 Webサーバ機能

  22. Server 回路A 回路B ソフトウェア 回路C ソフトウェア Client IBAの機能 Webサーバ機能 Webページ (.html) Webページ (.html) ActiveX (.ocx) ActiveX (.ocx) 回路A ActiveX (.ocx)

  23. IBを使った動画転送システム • 動画像転送問題点 • ソフトウェア:処理が重く負担が大きい • ASIC:多数のコーデックに対応不能 • InternetBoosterによる利点 • FPGA上で符号化処理 • コーデックに応じた回路をダウンロ-ド

  24. USBカメラ Server ソフトウェア ソフトウェア Client IBを使った動画転送システム • 動画配信側:IBS • クライアント側:IBA

  25. USBカメラ 実装したRTMP種別 • Client Request • Get Meta • CMD_PLAY、 CMD_PAUSE、 CMD_STOP • CMD_UPLOAD • Upload Data Server ソフトウェア ソフトウェア Client

  26. USBカメラ 実装したRTMP種別 • Server Response • Set Meta • CMD_PLAY、 CMD_PAUSE、 CMD_STOP • CMD_UPLOAD • Video Data Server ソフトウェア ソフトウェア Client

  27. USBカメラ Server Webページ (.html) Webページ (.html) コンテンツ配信用 Webページ 動画配信用 Webページ 回路A 圧縮伸張 回路A 回路B 回路B ソフトウェア 回路C 回路C ActiveX (.ocx) ActiveX (.ocx) アプリケーションの ActiveXコントロール 動画プレイヤーの ActiveXコントロール 動画の コーデック回路 アプリ用の回路 ソフトウェア Client 動画転送でのIBS

  28. USBカメラ Server 回路A 回路B ソフトウェア 回路C ソフトウェア Client 動作シーケンス Webページ (.html) Webページ (.html) ActiveX (.ocx) ActiveX (.ocx) 回路A

  29. USBカメラ Get Meta Set Meta 動作シーケンス:回路実装 Server 回路A Webページ (.html) Webページ (.html) ソフトウェア 回路B ActiveX (.ocx) ActiveX (.ocx) 伸張 回路 圧縮 回路 CMD_PLAY 回路A 回路C ソフトウェア CMD_PLAY Client

  30. USBカメラ Server ソフトウェア ソフトウェア Client 動作シーケンス:動画再生 回路A Webページ (.html) Webページ (.html) 回路B ActiveX (.ocx) ActiveX (.ocx) 圧縮 回路 回路A 回路C 伸張 回路

  31. FPGA Platform • hwModule VC Cardbus FPGA card 3 LM0 (8MByte-SDRAM) LM1 (8MByte-SDRAM) Co-Board 4 CardBus-Interface LAN- PHY LAN connector GPIF 1 2 CBI_FPGA (xc3s700a -fg400) U_FPGA (xc3s2000 -fg676) 3 USB2- PHY USB2 connector 1 2 hwModule VC • CBI_FPGA (Fixed Function): Realizing dynamically reconfiguration of User_FPGA. Bus controlling. • User_FPGA: User application’s hwNet space. • CardBus Interface • Co-Board: Exchangeable module. 4

  32. System Development Kit (SDK) • 仮想回路ライブラリを提供 • アプリソフトとの接続方法を提供 • VC++,TurboC++,Web_ISEなど無料ソフトで構成安価

  33. 1.Web ページアクセスと ActiveX softwareのダウンロード 7. hwNet Encoder  実現 6.Request 3. Meta 情報 4. hwNetダウンロード 5. hwNet Decoder   実現 2.ActiveXスタート 8. Streaming 応用例: WEB 動画ストリーミング • hw/sw複合体のネットワーク転送 USB camera Encode hwNet 送信側 (Server) hwModule VC Web server (Apache) IB Server (VC++) Decode hwNet hwModule VC IB Agent (ActiveX) 受信側 (Client) Web browser

  34. 製作したコーデック回路について 回線容量が限られているため,動画を圧縮 基本的にはMPEG2を踏襲 相違①:離散ウェーブレット変換(DWT) JPEG2000等に用いられる 多重解像度テンプレートを生成 相違②:多重解像度テンプレートマッチング 動きベクトル探索の際に行う 探索領域削減,並列計算→処理クロック数削減 34/49 2009/1/26

  35. Reference Image Decoder RGB2YUV Motion Compensation 2D-WT Efficient-Scan and Quantization Run-length Huffman Encoding Input Image Bit Stream Reference Image Run-length Huffman Decoding Inverse Quantization 2D-IWT Motion Compensation YUV2RGB Bit Stream Output Image hwNet: 動画像コーデック仮想回路 • 16x16 pixels macro block • Intra and Predictive Frame (I-Frame,P-Frame)を生成 • Haar基底の離散ウェーブレット変換 Encoder Decoder

  36. Reference Image Decoder RGB2YUV Motion Compensation 2D-WT Efficient-Scan and Quantization Run-length Huffman Encoding Input Image Bit Stream Reference Image Run-length Huffman Decoding Inverse Quantization 2D-IWT Motion Compensation YUV2RGB Bit Stream Output Image hwNet: 動画像コーデック仮想回路 • 16個のPEを備えるSIMD architecture を用いた動きベクトルの計算. 1 Macro Block = 512 clock cycles • Lv1からLv3までのwavelet componentを計算. • 5ステージのパイプラインアーキテクチャ. Latency = 16 line buffer + (512 x 5 stage) Encoder Decoder

  37. 離散ウェーブレット変換 Haar基底のDWTを使用 Lv0

  38. 離散ウェーブレット変換 Lv1 平均化 縦エッジ 横エッジ 斜めエッジ

  39. 離散ウェーブレット変換 Lv2 縦エッジ 横エッジ 斜めエッジ

  40. 離散ウェーブレット変換 Lv3 縦エッジ 横エッジ 斜めエッジ

  41. 離散ウェーブレット変換 Lv3 • 変化の大きい部分が左上に集中 • 左上以外は変化がなだらか • 圧縮に利用 • Huffman,Run-Length符号化 • 多重解像度画像が得られる

  42. I-Frame、P-Frame 基本的には、規格化された手法と同様 • I-Frame • 現在の画像内のみ(Intra)の情報 • 圧縮率低となりがち • 高画質 • P-Frame • 過去の画像の情報から現在の画像を予測(Predict) • 圧縮率高 • 低画質となる可能性

  43. I-Frame時 入力画像をそのまま符号化 出力画像 入力画像 復元画像 ① ① 逆量子化 逆DWT ① ① ユーザーへ 符号化 逆符号化 ① 量子化 DWT ①’

  44. I-Frame時 表示画像をバッファ(参照画像) 出力画像 入力画像 復元画像 ① ① 逆量子化 参照画像 ① ① ① ユーザーへ 逆量子化 符号化 符号化 逆符号化 ① 量子化 DWT 逆DWT ①’

  45. P-Frame時 差分画像を符号化 参照画像 入力画像 ② 差分画像 復元差分画像 ② - ① ② - ① 参照画像 ① ② - ① ② - ① ユーザーへ 逆量子化 符号化 逆符号化 ①+(② - ①) =② 量子化 逆量子化 DWT 逆DWT

  46. 良い差分画像を作る工夫 0が多いのが良い差分画像⇒圧縮率高 マッチングによって,なるべく0の多い差分画像を作る 参照画像 入力画像 最も似ている 領域を探し 差分を取る 符号化差分画像 マッチング結果 動画受信側へ 差分画像 より0の多い差分画像に 動画受信側には 同じ参照画像があるので 「参照画像のどこにマッチングしたか」 という情報さえ送ればよい

  47. 1画像を1200分割 マクロブロックを単位として処理 • VGA画像を16x16ずつに分解 • 1ブロックずつ画像を生成

  48. 多重解像度テンプレートマッチング 目的 マッチング処理の高速化 FPS(Frame Per Second)向上 なぜ速い? 探索領域を絞込み,処理画素数を削減 回路による並列演算

  49. P-Frame時のパイプライン動作 符号化回路側での、1マクロブロックの処理は下図のような流れ 時間 入力画像WT RAM書き込み 動きベクトル探索 テンプレートマッチング 参照画像 RAM書き込み 量子化,符号化 送信

  50. P-Picture時のパイプライン動作 動きベクトル探索処理がボトルネックに 入力画像DWT RAM書き込み 入力画像DWT RAM書き込み 入力画像DWT RAM書き込み 入力画像DWT RAM書き込み 動きベクトル探索 テンプレートマッチング 動きベクトル探索 テンプレートマッチング 動きベクトル探索 テンプレートマッチング 動きベクトル探索 テンプレートマッチング 参照画像 RAM書き込み 参照画像 RAM書き込み 参照画像 RAM書き込み 参照画像 RAM書き込み 量子化,符号化 送信 量子化,符号化 送信 量子化,符号化 送信 量子化,符号化 送信 時間 ・・・

More Related