情報工学工房
どの学年どの類・学科でも取れる
工房スタイルの授業
http://pr.cei.uec.ac.jp/kobo2018/
とりまとめ役:岡本吉央
[email protected] 西4-206
情報工学工房とは?
授業じゃないような授業
プログラミング中心
出る杭を伸ばす
今年度のテーマ
• Pythonによる深層学習 (柳井啓司)• ハードウェアで作る深層学習 (庄野逸)• FPGA (成見哲)• Unityによる物理計算アプリ (成見哲)• CPUの作り方 (山崎匡)• ミニ四駆AI (西野順二)• プロジェクトオイラーに挑戦 (西野順二) • 機械学習とデータ解析 (高橋里司,西山悠,岡本吉央)• Sphero (岡本吉央)• 競技プログラミング (岡本吉央,高橋里司)• ウェアラブルデバイスを用いたコミュニケーション支援 (江木啓訓)• ロボットに作業をさせよう (工藤俊亮)• 不確定ゲームAIを作ろう! (伊藤毅志)
注意点
• 教員毎にテーマがありテーマ毎に活動します
• 指導方針は教員によってかなり違います
– 例1:前半は講義形式、後半は自由に開発
– 例2:最初から自分でやるが教員も同席
• 通年でやり通せるかよく考えて下さい
– 開講曜限は教員により違います
– 履修登録は教員が行い、途中で取り消しはしません
• 発表に積極的に参加して下さい
– 調布祭、最終発表会
– 各テーマでの対外的な大会
スケジュール• 4/10 : 説明会• 4/18 : テーマ希望調査終了• 4月末:テーマ決定• 5月初旬~中旬:テーマ毎の活動開始
– 担当の先生から初回の集合日時・場所を連絡– UECアカウントのメールに連絡が行くので読めるように
• 5月下旬:履修登録• 11月:調布祭 (オープンキャンパス)における展示
– ポスター、デモ
• 2月:最終発表– 全テーマが集まり発表会
• その他テーマ毎に大会に出たりするところもある
テーマ希望調査
• Webclassを使って行います(4/18 23:59まで)
– https://webclass.cdel.uec.ac.jp/
• 登録方法
–右下の「参加可能なコース」の中から「H30 情報工学工房」を選んで、メンバーに
–金曜5限に「H30 情報工学工房」が出現
–それを選んで、「テスト/アンケート」 の欄にある「テーマ希望調査」を選んで入力(パスワード:kobo2018)
–第3希望まで入力可。アピール文は任意(希望集中時の決定に影響を与える可能性あり)
テーマ決定
• 情報工学工房のWebページにて (4/30 までに)
– http://pr.cei.uec.ac.jp/kobo2018/
• 調整のための連絡
– 4/18以降、UECメールに届く可能性があるので注意して下さい
• その後はテーマ別の活動
履修登録
• 履修登録 (5月)
–教員が行います
• 科目区分
– I類:類専門科目 (選択科目)
– I科:専門科目 (選択科目)
– II類,III類,J科,M科,S科:共通単位
– K課程:#科目
今年度のテーマ
• Pythonによる深層学習 (柳井啓司)• ハードウェアで作る深層学習 (庄野逸)• FPGA (成見哲)• Unityによる物理計算アプリ (成見哲)• CPUの作り方 (山崎匡)• ミニ四駆AI (西野順二)• プロジェクトオイラーに挑戦 (西野順二) • 機械学習とデータ解析 (高橋里司,西山悠,岡本吉央)• Sphero (岡本吉央)• 競技プログラミング (岡本吉央,高橋里司)• ウェアラブルデバイスを用いたコミュニケーション支援 (江木啓訓)• ロボットに作業をさせよう (工藤俊亮)• 不確定ゲームAIを作ろう! (伊藤毅志)
Pythonによる深層学習 (柳井)
• 希望人数: 8名以内• 必要技能:プログラミングの経験があること.Python経験者,もしくは
Pythonを独学で学ぶことができる人.• 実施時間:木曜日5,6限(昨年),履修者の都合で最終的に決定• 概要:本テーマでは,深層学習(ディープラーニング)の基礎と,フレームワークを用いたプログラミングを学習し,最終的に深層学習を応用したシステムを構築します.フレームワークには,PythonベースのKeras, Pytorch, Chainerなどを利用し,CEDの34台のGPUサーバ(GTX1080Ti)および人工知能先端研究センター(AIX)のGPU計算機(Dual Pascal Titan-X) を利用してプログラミングを行う予定です.最終的な課題は,参加者のやる気と実力に応じて設定します.例えば,意味的な画像変換システム,リアルタイム画像認識システムなどを考えています.昨年は,食事画像変換,ジェスチャ認識や表情認識,また自分の卒論と関係したマルウェア検出に深層学習を応用した4年生の履修者もいました.TA中心で実施します.最初の基礎学習ステップは,庄野先生の課題と連携して実施します.
Python による深層学習• 3ステップで深層学習を用いた新しいシステムの開発!
基礎的な座学
既存手法の実装・
OSSの理解
新システム開発
• 深層学習の理論• 赤本 (ゼロから作る)• CS231n (Stanford)
• フレームワーク学習• Keras, Pytorch, Chainer
• 面白そうなモノを作る • 調布祭展示に向け磨きをかける!更には…• OSS化…?• 論文投稿…!?
例: 線画着色
• 嬉しい特典• CEDの新しいGPUサーバが使える! AIXも!• 深層学習を用いた新しいシステムの開発経験!• フレームワークが使えるようになる!
4〜7月 8〜9月 10月〜
例: 画像生成
既存手法の拡張による世界初(?)
食事画像変換システム
初級中級上級
システム開発 調布祭発表⇒ Githubで公開学会発表?
座学
※主にPython経験者を想定
昨年度学会発表
⇒2年生が受賞
最終レポート
ハードウェアで作る深層学習 (庄野)
• 希望人数:6名程度• 必要技能:基本的には Python を用いるが同時並行での学習も可能.重要なのはやる気と積極性
• 実施時間:参加者の予定で決める• 概要:手のひらサイズのFPGAボードで深層学習機械(や一般の機械学習デバイス)を構築して遊ぶことを目的とします.使用する FPGA ボードは Xilinx 社の Pynq-Z1 ボードです.プログラミング言語は Python のインターフェースとライブラリがある程度用意されているので,比較的簡単に遊べます.Python自体は習得が比較的ラクな言語なので,同時並行で学習していくことも可能です.学習の計算の重い部分は CED/AIX のGPUマシンを用います.HDMIカメラと接続して持ち運び可能な画像や音声解析機をつくるもよし,ドローンに搭載して遊ぶもなどアプリケーションもいろいろ考えられます.最終的な課題は参加者のやる気の能力に応じて設定します.また導入部分の学習に関しては柳井グループと一緒に行う予定です.
ハードウェアを用いた深層学習•担当: 庄野
•人数: 6名程度
•目標: 手のひらサイズ,低消費電力な深層学習機械を作って遊ぶ
•使用機材は Xilinx の Pynq-Z1使用言語は Python や,C/C++
•基礎勉強は柳井グループと一緒に行う(予定)SpecificationProcessor: Dual-Core ARM® Cortex®-A9
FPGA: 1.3 M reconfigurable gatesMemory: 512MB DDR3 / FLASHStorage: Micro SD card slotVideo: HDMI In and HDMI OutAudio: Mic in, Line OutNetwork: 10/100/1000 EthernetExpansion: USB Host connected to ARM PSInterfaces: 1x Arduino Header, 2x Pmod (49 GPIO)Dimensions: 3.44” x 4.81” (87mm x 122mm)
http://www.pynq.io/board.html
FPGA(成見)
• 希望人数:若干名• 必要技能:FPGAをいじったことがある、もしくは興味がある人
• 実施時間:どこかの曜日の5限(希望調査で曜日の第一希望、第二希望を書いて下さい)
• 概要:FPGAを使って何らかのシステムを動作させることを目標とします。最初にVerilog言語を使ってFPGAボードでLED点滅や音の生成など簡単な機能を実装します。次に、テトリスなどのゲームの機能を実装します。後半は自由に設計しますが、「プリント基板作成」「RISC-V CPUのカスタム命令作成」というテーマが今年度教員がやりたいテーマなので興味がある人が是非。既にある程度ハードウェアをいじったことがある人や、FPGA設計に興味があって調べたことがある人に対し、実際にシステムを作ることをサポートします。VerilogやFPGAの勉強、シミュレーションによるバグ取りなどは参考書を見ながら各自で行って頂くものとし、教員はアドバイス程度しか行いません。
FPGA (成見)• FPGAとは書き換え可能な論理素子• C言語に似たハードウェア設計言語
(Verilog)を使う• 最初は簡単なビデオゲームを実装• 後半に開発を想定しているシステム例
– リアルタイム画像処理– シンセサイザ– インベーダーゲーム– ファミコンエミュレータ
• 過去の例– テトリス– オシロスコープ– Picture in Picture– インベーダーゲーム– Lifeゲーム
使うFPGAボードの例(Digilent社Basys3)
ライフゲーム
インベーダー
Unityによる物理計算アプリ(成見)
• 希望人数:8名程度
• 必要技能:プログラミングやスクリプト言語の経験があること
• 実施時間:どこかの曜日の5限(希望調査で曜日の第一希望、第二希望を書いて下さい)
• 概要:ゲーム開発環境であるUnityを使ってアプリを作ります。最初に参考書やWeb上のチュートリアルを見て勉強します。次に、Unity内の物理演算機能を使って高校物理や大学初年次の物理に役立つアプリケーションを開発します。スマートフォンのセンサーを有効に使うと面白いでしょう。GearVRというHMDも3台あるので試せます。
後半は物理演算を使ったゲームや、多人数対応のアプリなど、Unityの機能を活用したアプリケーションを開発します。 TAが適宜相談に乗りますが、基本は参考書を見ながら各自で勉強するものとします。
Unityによる物理計算アプリ(成見)
• 前半– Unityの物理演算機能を使って物理教育(高校や大学初年次)に役立つアプリ
– GearVRを試しに使う
• 後半– 物理演算を使ったゲーム
– GearVRを使ったアプリ
– 多人数アプリ
– その他自由に
• I科の計算機室でUnity Proが使えます
http://www.samsung.com/jp/product/gearvr/
巨大ジェンガ
斜方投射
指で操作するドラゴンゲーム
CPUの作り方 (山﨑)
• 希望人数:部屋の都合で最大5人 (少ない方が良い)
• 必要技能: (1) 論理設計学と計算機通論の単位を取っている、もしくは (2) AO入試 (私と面談の上参加可能かどうかを判断する)
• 実施時間:参加者の予定で決める• 概要: 「CPUの創り方」 (渡波郁著・毎日コミュニケーションズ・2003年) を読んで、秋葉原で部品を買ってきて実際に組み立てます。その後、各自で自分の好きなように拡張します。簡単そうな本に見えますが、カルノー図の簡略化とかフリップフロップとか普通に使っているので、最低限の知識は必要です。知っていることを前提に進めます。
この本を読んで実際に作ります
・秋葉原でパーツを買ってくる
・本の通りに組み立てる
・各自好きなように拡張する(例: 64ビット化)
前期
後期
注意 ・表紙にだまされるな
CPUの作り方(担当: 山﨑匡)
http://numericalbrain.org/lectures/cpudev/
ミニ四駆AI (西野順二)
• 希望人数:5〜10名前後
• 必要技能:乾電池のプラスマイナスがわかること、ネジまわしが使えること
• 実施時間: 1回2コマ程度、曜日時刻は受講者と相談します。(火曜5限が濃厚です)
• 概要:ミニ四駆AI ( https://sites.google.com/site/ai4wdcar/ )を作り、世界最速を目指します。わずか1000円の「おもちゃ」ミニ四駆にAI技術を積み込んで賢く走らせることに挑戦します。高価なモーターならば精密に動くのでソフトウェア的には簡単です。ミニ四駆のような安くて適当でガタや誤差、ちょっとした不良があるなかで、耐久度の高いソフトウェアを作ることはとても技術力がつく良い課題です。ミニ四駆に適したコントロールボード AICHIP を搭載したミニ四駆を数人に1台ずつ貸し出します。ブルートゥースでホストと通信しながら動きます。ソフトウェアでどこまで賢くできるか、みんなで工夫しながら頑張ります。カラーリングやデザインも考えましょう。プログラムはプロセッシングなど様々な方法で、わりと楽に書くことができます。
プロジェクトオイラーに挑戦 (西野順二)
• 希望人数:とくになし• 必要技能:プログラムに興味があること• 実施時間:木曜5限を予定• 概要: Project Euler (http://projecteuler.net/)の問題を個人ごとに解いていきます。プロジェクトオイラーは世界中から79万人が挑戦している数学プログラミング問題サイトです。現在約620問あり1問以上を解いたのは79万人ですが、100問解いた人となるとそのうちの1.37%の1万8百人しかいません。1年間で最低10問、できれば50問を解いて、世界の上位 5%を目指しましょう。できればC言語を使用して、ひとりひとりのペースでじっくりと考えプログラムを作り答を出します。基本的には各自で好きな時に好きなだけ問題を解きます。実施時間内では、サイト登録のしかたやプログラミングの基礎から、解答に役立つテクニックなどを相互に勉強します。特定の問題の解答・解説等は一切しません。
データ解析と機械学習(高橋里司,西山,岡本吉央)
• 希望人数:7名以内• 必要技能:数理やプログラム言語(主に R,python,
Matlab)の習得に意欲があるもの.• 実施時間:参加者の予定で決める
• 概要:データサイエンティストの基礎を学ぶ.具体的なデータを用いたデータ解析を行い,様々な機械学習技術を習得する.プログラミングやモデルの理解だけでなく,データの整形,解析結果の解釈,図表の作製法など,データサイエンティストに必要な技術を総合的に会得する.また,本テーマの後半では,経営科学系研究部会連合協議会主催のデータ解析コンペティションに出場することを目的とする.統計モデル、数理モデルを用いた実データのデータ解析を行い,データ解析結果の解釈や統計モデルの妥当性などについてより深い理解を目指す.
データ解析と機械学習担当:高橋、西山、岡本
• 目的
– データサイエンスの基礎を学ぶ
– データ解析を行い,様々な機械学習技術を習得する
• 何をするのか
– 分析モデルの体得
– R,pythonを用いた演習
– 分析結果の解釈とプレゼンテーション
– データ解析コンペティションへの参加
• 誰に向いているのか
– 実社会のデータを分析してみたい方
– データサイエンティストを目指している方
Sphero (岡本吉央)
• 希望人数:20名以内
• 必要技能:(1) iPhone,iPad,Android端末のいずれかを所持していること (2) 面白いこと
• 実施時間:月曜5限
• 概要:ボール型ロボットSphero miniを使って「面白いもの」を作る.担当教員には何もアイディアがないので,受講生自らの発想で面白いものを作ることが必要となる.プログラミング経験は必要ないが,発想力は必要となる.前期はプログラミングに慣れることとSphero miniの機能に慣れることを目標として,後期は各自が面白いものを作ることを目標とする.適宜,受講者の間で情報交換を行う.
Sphero スフィロ
何をするのか
Sphero Miniを使って「面白いもの」を作成する
使うプログラミング言語:主に JavaScript
誰に向いているのか
面白い人
必要であること
スマホかタブレットを所有している(iOSまたはAndroid)
担当:岡本 吉央
競技プログラミング(岡本吉央、高橋里司)
• 希望人数:10名程度
• 必要技能:反復と再帰を用いたプログラムが作成できること
• 実施時間:火曜 16:30~18:00
• 概要:ACM国際大学対抗プログラミングコンテストなどの競技プログラミングで好成績を残すことを最終目標として,その基礎となるアルゴリズムの設計法と解析法,ならびに,的確なプログラムの作成法を鍛える.過去の大会などで出題された問題を解くためのプログラムを各自が事前に作成して,それを持ち寄り,内容を検討することでより深い理解を目指す.
この1年だけで好成績を残すだけの実力はつけられないかもしれないけれども,そのための基礎技能を養うことが1年を通しての目標である.
何をするのか ACM国際大学対抗プログラミングコンテストの過去問を毎週解いてアルゴリズムの設計法と解析法,プログラムの的確な作成法を体得する
易しい題材を選び,それを深く掘り下げることから始める
ACM国際大学対抗プログラミングコンテストの国内予選に参加する
使用言語:C,C++,Java のいずれか
誰に向いているのか プログラミングの実力と技能を磨きたい方
プログラミングコンテストに出てみたい方
担当:岡本吉央,高橋里司
2013年世界大会の様子
競技プログラミング
ウェアラブルデバイスを用いたコミュニケーション支援 (江木)
• 希望人数: 7名程度まで
• 必要技能:プログラミングの経験があること
• 実施時間:木曜5,6限を予定
• 概要:ヒトの一対一または集団での会話・議論・情報のやり取りや共有といったコミュニケーションを対象として,それをどのように情報システムで拡張・支援できるかを考えます.ヒトが小型デバイスやセンサを身につける環境を想定し,考案したシステムを実現します.Raspberry Piと周辺機器などをウェアラブルデバイスとして用いて,開発を行います.
ウェアラブルデバイスを用いたコミュニケーション支援 担当:江木啓訓何をするのか
• 人が小型デバイスやセンサを身につける環境を想定し,コミュニケーションを拡張・支援するシステムを開発する(Raspberry Pi + 周辺機器,スマートウォッチなど)
誰に向いているのか
• 人間同士のコミュニケーション支援に興味がある人
• ウェアラブルデバイスの活用に興味がある人
ロボットに作業をさせよう (工藤)
• 希望人数: 6名以内
• 必要技能:プログラム経験があること(条件分岐,繰り返し,関数作成などができればOK)
• 実施時間:参加者の予定で決める
• 概要:小型ヒューマノイドロボットを動かして何か作業をさせます.今のところ,サッカーをさせることを予定しています.モーターの制御はもちろんですが,カメラで外の環境を認識して,その認識に基づいてロボットを動かすという一連の流れを体験・理解することを目指します.
ロボットに作業をさせよう担当:工藤俊亮
前半
後半
基本的な技術の習得・モーターの動かし方,姿勢の決め方・カメラによる環境認識・ロボットとカメラの座標合わせ
ロボットにサッカーをさせる・ルールは前半の達成具合をみて調整・最終的に試合をする
環境認識→判断→動作 の流れはすべてのロボットの基本です.
プログラミングは楽しいですが,その結果実際にモノが動くともっと楽しいです.ぜひこの楽しさを体験してください.
不確定ゲームAIを作ろう! (伊藤毅志)
• 希望人数: 5名以内程度
• 必要技能: C言語にある程度習熟していること
• 実施時間:参加者、及びTAの予定で決める
• 概要:将棋、囲碁で人間を超えるAIが作られるようになった昨今ゲームAIの題材は新しいジャンルのゲームに広がりを見せています。このテーマで扱う「不確定ゲーム」とは、手の決定に不確定な要素(乱数やサイコロ等)を含むゲームです。ここでは、サイコロ将棋を中心に思考ゲームAIの基本的なアルゴリズムを学び、そのプログラムを強化していきます。
不確定ゲームAIを作ろう!担当教員:伊藤毅志希望人数:概ね5名程度以内必要技能:C言語にある程度習熟していること実施時間:応相談。5,6限にやることが多いです。(参加者やTAの都合に合わせて決めます)
概要:コンピュータ将棋、囲碁が次々と人間のトップを超えています。確定ゲーム(不確定な要素の無いゲーム)は、一つの区切りを迎えています。次の目標として、不確定要素を含むゲームが注目を集めています。ここでは、「サイコロ将棋」を中心にゲームで遊ぶ所から始め、AI大会に出場することを目標とします。
サイコロ将棋は、5五将棋という小路盤の将棋にサイコロという不確定要素を組み合わせた新しいゲーム。2015年に伊藤毅志がルールを考案して商品化されています。2016年度から、AIの大会も開催されています。(ルール)・サイコロを振り出目の筋に駒を動かす。
・6がでた時、王手をかけられた時、サイコロの出目に動かす駒が無い時は、全ての駒を動かすことが出来る。・王手を回避できないときには、負け。
<こんな人向き>・思考ゲームの基礎を知りたい人・強い思考ゲームAIを書いてみたい人・プログラミングスキルを試したい人