差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
インタラクションデザイン演習実習a [2018/05/23 03:22] – [You Only Look Once: Unified, Real-Time Object Detection] baba | インタラクションデザイン演習実習a [2018/05/23 03:56] (現在) – 削除 baba | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ユーザとモノをつなぐ対話設計であるインタラクションデザインに関する体系的知識及び実践的基礎技術を身に付けることを目標とする.近年の論文からいくつかのトピックを議論し,最先端の研究分野をフォローできるための知識を獲得し,それらを実際に再現するために必要な技術要素を同時に身に付けることを目標とする. | ||
- | <WRAP center round tip 60%> | ||
- | 本授業は首都大学東京インダストリアルアートコースに向けて開講している授業となります. | ||
- | </ | ||
- | ====== 論文読解1:The smart floor: a mechanism for natural user identification and tracking ====== | ||
- | [[http:// | ||
- | >Robert J. Orr and Gregory D. Abowd. 2000. The smart floor: a mechanism for natural user identification and tracking. In CHI '00 Extended Abstracts on Human Factors in Computing Systems (CHI EA '00). ACM, New York, NY, USA, 275-276. DOI=10.1145/ | ||
- | |||
- | 2ページの英文ショートペーパーです.ロードセルを利用したシンプルなユーザ識別装置に関する報告です.識別にはユークリッド距離を 利用しています.なお,ウェブで検索をするとフルペーパーも見つかるので,詳細はそっちで確認することをおすすめします.ユーザが歩いた際における圧力や時間,力の分散などを特徴量として学習済みの特徴量をf,入力データをf' | ||
- | |||
- | * Nearest Neighbor参考ページ:[[http:// | ||
- | |||
- | |||
- | ---- | ||
- | |||
- | |||
- | ====== 論文読解2:SmartVoice: | ||
- | [[https:// | ||
- | > 李 翔, 暦本 純一, SmartVoice:言語の壁を越えたプレゼンテーションサポーティングシステム, | ||
- | |||
- | WISS2013での和文論文です.OF及びofxFaceTrackerを利用しています.読み上げテキストと音声フレーズとのマッチングにDPアルゴリズムを用いています. DPはDynamic Programingのことで,動的なプログラム(編集)を指します.一般的に原稿にそって人間が読み上げを行い,その結果,音声データの位置と 原稿データの位置のマッチングをとるには音声信号処理を行うことが多いです.一方でこの論文ではそのような真っ向勝負はせず, 原稿データを一度ボイスシンセサイザーから再生し,音声データ2を作成します.この2つのデータはフレーズ区切り情報が含まれていますが, その順番が一致していない可能性が大いにあります.そこで音声再生時間をマッチングの為のコスト距離として動的に順番を合わせること を行っています.また読み上げの際は,ただ単純に読むだけでなく発表者の表情をインタフェースに声量や速度を調整できるようにしています. | ||
- | |||
- | ここではDPアルゴリズムを理解することと,フェイストラッカーを利用して簡単な表情認識を行うことをします. 表情認識には,smart floorで学習した多次元特徴量の距離計算をベースに実装してみます. | ||
- | |||
- | <wrap em> | ||
- | FaceTrackerのgetGesture関数より口の開閉等の各データを取得し,それらリアルタイムデータと記録したデータ間においてN次のユークリッド距離を用いることで,任意表情の区別をせよ. ただし利用するGestureはLEFT_EYEBROW_HEIGHT, | ||
- | |||
- | <wrap em> | ||
- | 上記練習問題の条件より,3種類以上の表情を識別するプログラムを記述せよ | ||
- | |||
- | |||
- | <wrap danger> | ||
- | 表情認識を利用して,緑色のプレイヤーを赤色のゴールに向かわせるシンプルなゲームを楽しみ,より早くクリアできるようにインタフェースを最適化して下さい.キーボードを利用してはいけません.あくまで顔の表情認識及び特徴データを利用してプレイヤーを操作して下さい. | ||
- | * 日程:5月30日10: | ||
- | * 場所:2号館501室 | ||
- | * 優勝者には景品をプレゼント | ||
- | * [[https:// | ||
- | |||
- | |||
- | ---- | ||
- | |||
- | |||
- | ====== 論文読解3:Scratch Input: Creating Large, Inexpensive, | ||
- | <wrap hi> | ||
- | > 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> |