差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン | ||
インタラクションデザイン演習実習a [2018/05/23 02:28] – [論文読解2:SmartVoice: 言語の壁を超えたプレゼンテーションサポーティングシステム] baba | インタラクションデザイン演習実習a [2018/05/23 03:28] – [Abstract] baba | ||
---|---|---|---|
行 11: | 行 11: | ||
* Nearest Neighbor参考ページ:[[http:// | * Nearest Neighbor参考ページ:[[http:// | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
====== 論文読解2:SmartVoice: | ====== 論文読解2:SmartVoice: | ||
行 33: | 行 37: | ||
* 優勝者には景品をプレゼント | * 優勝者には景品をプレゼント | ||
* [[https:// | * [[https:// | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
====== 論文読解3:Scratch Input: Creating Large, Inexpensive, | ====== 論文読解3:Scratch Input: Creating Large, Inexpensive, | ||
<wrap hi> | <wrap hi> | ||
> Harrison, Chris and Hudson, Scott E. Scratch Input: Creating Large, Inexpensive, | > Harrison, Chris and Hudson, Scott E. Scratch Input: Creating Large, Inexpensive, | ||
+ | |||
+ | タイトルにあるようにスクラッチ(ひっかき)音を入力とした操作インタフェースの提案を行っています.4ページの限られた文章の中で十分に技術再現が記述されていない部分が見受けられます. 音響信号の特徴量について,Early prototypeの際にはどのような特徴量を利用したかが明確に記述されておらず,動的伸縮法(Dynamic Time Warping)とナイーブベイズ分類器によって認識処理を行っています. おそらく入力信号から直接学習済み信号をDTWを利用して単純ベイズによるマッチング計算を行ったのだと思います. 最終的にはピークカウント及び振幅変動をベースとした決定木(Decision Tree)によるシンプルなアルゴリズムに落ち着いています.ただしこの部分も十分な記載が無いため,読解に少し努力が要ります. | ||
+ | |||
+ | スクラッチ音は3KHz以上の周波数成分を強く持つため,日常生活における様々な騒音環境下でも有効に機能すると述べています.実際に様々な素材で実験を行いある程度の認識精度があることを実験から示しています. | ||
+ | |||
+ | ここでは,信号処理をインタフェースとして利用するための基礎的な技術・知識を身に付けることが目標です. ここでは決定木(if文)ベースで実装を行いますが,興味のある人はDTWでナイーブベイズ識別行うプログラムも挑戦 してみるとよいでしょう.ただし著者らは精度が良くなかったと述べています.ナイーブベイズ識別に関しては 本サイトのインタラクションデザインの為のパターン認識入門を参照してください. この他ウェブサイトや参考書でもナイーブベイズに関する解説は多く入手できると思います. | ||
+ | |||
+ | ===== 基礎知識:Easy DFT, DFT, FFT ===== | ||
+ | 入力された信号がどのような周波数成分を持つかを解析する一般的な手法です.すべての信号はsinとcosの足し合わせで表現できる.というフランスの数学者フーリエの考えに基づいた理論です. ここではその考えを直感的に表現してみたEasy DFTを実際に利用し,その後DFTを理解します.さらに高速化手法であるFFTを用いて周波数解析する方法に慣れてみましょう. ちなみにEasy DFTというのは存在しません.馬場が勝手に授業用に用意した簡易なDFTとなります. | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | ===== 基礎練習===== | ||
+ | プログラムを実装していくにあたり,幾つかの基礎練習をします. | ||
+ | |||
+ | ==== ofxGui ==== | ||
+ | 様々なパラメータを利用して,ユーザの入力値を調整していく際,GUI(Graphical User Interface)を利用してその値を手軽に変更できると,作業が捗ります. そこで,OpenFrameworksに標準(v.0.8以降)のofxGuiを利用して,プログラム内の変数を動的に変更する方法を練習します. このあたりは / | ||
+ | |||
+ | ==== C++における vector型 ==== | ||
+ | 様々な処理に配列は多く利用されます.信号処理や画像処理にかぎらず,一般的な計算には配列は多用されます. この配列を何度も利用しているうちに,いろいろと不便なことに気づきます.例えば最初は配列サイズを100確保 したのに途中からそれ以上必要になってしまった時,配列の中にあるデータを削除し,削除した分を詰めて配列に 再度格納したいとき等です.vector型に関する詳しい説明は多くの参考書やウェブサイトに譲るとして,ここでは 基本的な使い方を抑えたいと思います.emptyExampleをベースに実習してみましょう. | ||
+ | |||
+ | < | ||
+ | | ||
+ | a.push_back(1); | ||
+ | a.push_back(2); | ||
+ | a.push_back(3); | ||
+ | ofDrawBitmapString(ofToString(a.size()), | ||
+ | | ||
+ | a.pop_back(); | ||
+ | a.push_back(4); | ||
+ | | ||
+ | a.erase(a.begin()); | ||
+ | | ||
+ | for( int i = 0; i < a.size(); i++ ){ | ||
+ | ofDrawBitmapString(" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | これまでの基礎知識を踏まえていよいよScratchInputの技術再現を行います.ただし著者らは認識のための特徴量に 関して詳細な情報を論文に載せていないので,ここではすこしアレンジを加えて実装を行ってみます.そこで,これから このプログラムのことをScratchInputZと呼ぶことにします. | ||
+ | |||
+ | ==== 正規化 ==== | ||
+ | 論文読解2の最後にユーザの表情を認識するプログラムを実装しましたが,ここで,厳密にその評価を行うと 一つ問題があることがわかります.眉毛の高さや口の開閉等の中にはその変化の度合いが全て均等とは言い切れません. 例えばx, | ||
+ | 先ほどの例では(10, | ||
+ | |||
+ | ===== ScratchInputZ ===== | ||
+ | * [[https:// | ||
+ | |||
+ | |||
+ | まずは上記のテンプレートをダウンロードして実行して下さい.ofxGuiとvector型を用いて記述されています. 一緒に読んでプログラムになにが記述されているかを把握します. | ||
+ | |||
+ | <wrap danger> | ||
+ | テンプレートを利用して,数種類のスクラッチインプットを識別するプログラムを記述してみましょう. ただし,特徴量として,次を利用してみます.ピークカウント,正規化周波数積分(0-3000), | ||
+ | |||
+ | {{youtube> | ||
+ | |||
+ | ====== 論文読解4:You Only Look Once: Unified, Real-Time Object Detection ====== | ||
+ | [[https:// | ||
+ | >Joseph Redmon∗, Santosh Divvala∗†, | ||
+ | ===== Abstract ===== | ||
+ | We present YOLO, a new approach to object detection. Prior work on object detection repurposes classifiers to per- form detection. Instead, we frame object detection as a re- gression problem to spatially separated bounding boxes and associated class probabilities. A single neural network pre- dicts bounding boxes and class probabilities directly from full images in one evaluation. Since the whole detection pipeline is a single network, it can be optimized end-to-end directly on detection performance. | ||
+ | Our unified architecture is extremely fast. Our base YOLO model processes images in real-time at 45 frames per second. A smaller version of the network, Fast YOLO, processes an astounding 155 frames per second while still achieving double the mAP of other real-time detec- tors. Compared to state-of-the-art detection systems, YOLO makes more localization errors but is less likely to predict false positives on background. Finally, YOLO learns very general representations of objects. It outperforms other de- tection methods, including DPM and R-CNN, when gener- alizing from natural images to other domains like artwork. | ||
+ | |||
+ | {{youtube> | ||
+ | |||
+ | ここでは,リアルタイム物体検出で有名なYOLOの論文を読み,実際にYOLOを利用してみます.YOLOそのものを実装しませんが,深層学習におけるネットワークのデザインや意味に関して概略的に学び,それを利用したアプリケーションを作成するところまでを行ってみます. | ||
+ | |||
+ | ===== YOLO をOpenframeworksで動かす ===== | ||
+ |