Macなんとなくやってみた。以下がインストールされている状態です。以下のコマンドを実行します。インストール完了後にLauchpadにgtkwave.appがあると思うので、ダブルクリックで起動します。セキュリティの問題で起動しない場合があるので、起動しない場合はこちらを試してください。あるので、そこで許可すれば画面が立ち上がる。詳細やったことをぐだぐたと書いているので、あまり見る価値はないかも。これではインストール出来ないのね。https://www.xquartz.org/まずは、xquartzをインストールしないといけないもよう。installed!コマンドラインで起動しようとすると以下のエラーが出る。directoryインストール完了後にLauchpadにgtkwave.appがあると思うので、ダブルクリックで起動セキュリティの問題で起動しない場合があるので、起動しない場合はこちらを試してください。あるので、そこで許可すれば画面が立ち上がる。したら、今後波形見る機会が来るかもしれない。Hubに飛ぶんかい!!!ってツッコミどころがあったりおっ!PyTorchだとめっちゃ簡単に理解できるし、後から色々カスタマイズ出来るじゃん!!!とか思ってないし、ほんとただのキマグレンです。Detectionで動かしてみました。Colabにて実行して確認してます。(必要であれば、Notebook公開します。Versionありますので、そちらを見ていただければOKかなと。(アクセレータのタイプはGPUありのほうが良いと思います。必要らしいので、インストール。installカスタムデータセットをダンロードしてきます。PennFudanPed.zip2人のおっちゃんが歩いてる。Segmentation用だったので不必要なものをコメントにしてます。target["masks"]のところです。矩形位置boxesの算出に使用していたので、そのまま使ってます。boxesっていう情報があればPedMasksのファイル読み込みはいらないです。今回はLabelが1個だけのようなので複数ある時は修正しないとですね。len(self.imgs)出てくる情報は以下のような感じです。R-CNNに変えてます。ついても記載されてますので、必要な方は見てみると理解できると思います。augmentationや変換するための補助関数を定義するようです。DataLoaderを作成するようです。Optimizerの設定ですね。gamma=0.1)いよいよ学習です。device=device)実行結果の最後はこんな感じでした。0.860推論テストデータの一つで実施。model.eval()っていう実行が必要なんですね。model([img.to(device)])推論結果として出てくるデータ:precisionは以下のようです。device='cuda:0')}]画像で見てみるとこんな感じでした。簡単に実行できて、やりたいことに対してどういうところを変えていかないといけないかイメージすることができました。PyTorchやっていきたいと思います。18日目」になります。本コンテストの詳しい概要については、EDA-Expressさんのほうで記事になってますので詳しくはこちらのほうを参照されるのが良いかと思います。画像認識のFPGA実装で性能を競う!経産省/NEDOらが懸賞金付きAIエッジコンテスト開催さて、実は本コンテストの「評価方法」にこんな一文があります。Yoloのネットワークに基づく精度基準は、12月初旬までに情報提供(暫定精度値)し、最終必要精度は年内に確定予定。暫定精度値が出てきておりません。いうことで、運営側がどうなっているのか想像ながらFPGA実装について考えていきたいと思います。コンテスト内容の話ガッと要約すると、アルゴリズムを開発しハードウェアに実装する。車両前方カメラ画像から特定の物体を検出する。3点つまり、精度を確保しながら、処理性能をだし、エリアを小さく実装したものが勝ちというコンテストです。第2回の開催となってます。第1回が開催されています。第1回は同じデータセット?で「オブジェクト検出」と「セグメンテーション」の各アルゴリズムを競うコンテストでした。コンテストは終わっており入賞者レポートが掲載されてます。精度は十分!っていうことです。公開されているため、少し見ていきたいと思います。多少違うところもありますが、話をしたい部分ではないので省略します。こちらの図ですが、ILSVRCの歴史とともにCNNレイヤの層が深くなっていっていることがわかるかと思います。層が深くなることで、パラメータ数や演算コストが増えていきます。ImageNetのTop-1の認識率になります。円グラフはパラメータ数になります。パラメータ数が小さいものになるかと思います。Architecturesよりモデルとパラメータ数を少しピックアップすると以下になります。MobileNetのパラメータが小さいことが分かると思います。Once)についても少し。Detection上のサイトはYOLO-v3のCOCOデータセットの結果が記載されてます。一部だけ抜粋すると、こんな感じです。v2」のVOCデータセットの比較が想定しやすいと思います。207というような感じで、整理してみると第一回のアルゴリズムでは処理性能やエリア(回路規模)といった点で不利かもしれないというのがなんとなく感じることが出来たのではないでしょうか。ImageNetといった世界中の人がこれまでやってきたデータでの結果です。コンテスト用のデータで、VOCやCOCOで結果が出たアルゴリズムが上手くいくはやってみないとわかりません。1216)デカイし、夜の画像とかかなりヘンタイだと思います。基準値がまだ出てこないのってもしかしてアルゴリズム開発から・・・みたいな想像もしてみたり。アルゴリズム実装(本題の本題)序章が長すぎました。本題のアルゴリズム実装(FPGA実装)についてです。XILINX(WP514)概要は、リンク先の資料に頼るとして今回のコンテストの対象となるFPGA「ZU3EG」を見ていきたいと思います。知っている人には当たり前の話ですが、「CPU(SoC)+FPGA」が一体となっているデバイスです。PLという分類分けになってます。4で実装して確認しても面白いかもしれません。処理性能(FPS)はそんなに出ないでしょう。Slicesでは、ちょっと実装を考えてみましょう。処理性能が良いのは、DNNモデルをFPGAに実装することでしょう。残念ながらそれを実現するには非常に設計工数がかかり専門的な知識と技術が必要になります。WP514資料内での呼び名「DPUアーキテクチャ」になるかと思います。支配的とされています。そのためConvolutionをどうやって高速化するかが肝になります。参考になるか分かりませんが、ハードウェア実装のイメージを掴んでもらえればなと。最低垂直方向2line分のメモリを使います。(1チャネル当たり)5x5の場合には最低4line分ですね。9,984[byte]と、約10KBのメモリが必要になります。チャネル数やカーネルサイズにより並列数をメモリ容量を考える必要があります。次に積和演算についてです。Sliceに割り当てることで低遅延で処理可能です。Sliceのファンクション的なものは上図の通りです。真ん中に乗算器があり、前後に+/-演算器があります。18(bit)の乗算器です。Slices:360なので、積和演算の並列数の限界もここまでとなってしまいます。HLS」を使用して設計するのかもしれませんが、いざ設計してみると、デバイスに入らない!!!となってしまう可能性も十分にありえるのではないかと思います。まとめ概要レベルのざっくりした内容でしたが、まだコンテスト基準値が公表されてない裏側を想像しつつ、コンテストの難しさやFPGA実装について記載させていただきました。19日目」になります。空きがいっぱいあるので、良かったら書いてください。Networkをインストールしたので、メモ。3.7.4nngenインストールREADMEを見ながらポチポチと。veriloggen-1.8.1pytestやPyTorchインストール私は、先にPyTorchはインストールしてしまっていたのでスキップされて必要なものだけ。1%]ってことで、まだ終わってなくてファンがファンファンいってる。15:47nngenインストールTweet広告を非表示にするもっと読むコメントを書く2019-08-16最適化抑制属性(optnone)LLVM会社の技術情報共有ということでLLVMを紹介しようと思ってコードを書きながら試していたら昔(LLVM3.4世代)と違ったところがあり、ちょっとハマったのでメモしておく。/usr/local/opt/llvm/binやりたかったことある関数のLLVM-IRを出力して、PASSで最適化する。func_add.cこれで、func_add.llが生成される。PASS(-mem2reg)で最適化する。追加されていたもよう。-disable-O0-optnoneを追加する。func_add.c結果func_add.llの比較optnone属性が削除されている。%3}できた!全然watchできてないからこんな事に。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。