Author: Ryo Kamoi

インスタ度判定Twitterアカウント@insta_san

今年はAI班で三田祭に向けてインスタっぽい画像を判定するアプリを作成しました。その名もインスタさんです。

インスタさんに画像を渡すと・・・

Screenshot from 2017-11-23 00-52-32

このように画像のインスタっぽさと、インスタっぽい部分が表示されます!
(三田祭期間中のみの運用予定なので、記事を閲覧しているときには動かないかもしれません、ごめんなさい!)

AIは@ryokamoi、Twitterの入出力は@mt_caretが作成しました。

しくみ

インスタさんのアイデアはとても簡単です。Instagramからたくさんの画像といいね数を集めてきて、いいね数が多い画像をインスタっぽい画像として学習させます。

ここで考えなくてはいけないことは、「いいね数が多いという基準」と「学習モデル」です

  • データセット

画像からインスタっぽさを学習するのは難しい課題なので、今回は単純に「インスタっぽい」画像と「インスタっぽくない」画像の二つに分類することにしました。単純にいいね数が多い画像と言ってもユーザーによってフォロワー数が違いますし、投稿した時点でのフォロワー数がわからないので、いいね数をそのまま使うことは難しいでしょう。

調査の結果、多くの人のアカウントでは投稿するたびにいいね数が徐々に増えていく傾向にあることが分かりました。しかし、人によって増加のタイミングや速度は様々で何かの関数で近似するのは難しそうだったので、単純に前後20投稿の平均いいね数よりもいいね数が多いか少ないかによって「インスタっぽい」画像と「インスタっぽくない」画像を分けることにしました

  • 学習モデル

近年は画像の分類にはCNNというディープラーニングのモデルが使われることが多いです。インスタさんもCNNを用いて学習しています。

今回は画像数が少ないこともあり、大量の画像で分類を学習した結果を活用して学習を行なっています。このような手法は転移学習と言われています。使用したモデルの詳しい説明は以下のサイトを参照してください。

https://www.tensorflow.org/tutorials/image_retraining

画像がインスタっぽいかという問題は人間でもはっきりと分けられないので、あまり良い学習ができることは期待できません。特に今回は学習セットの分け方も非常に単純で信頼性の低いものとなってしまっています。しかし、転移学習によって画像から意味のある情報を取り出して学習を行なっているため、何かを学習しているということは見て取れます。

LIME

インスタっぽい部分を出力するときに使用しているのはLocal Interpretable Model-Agnostic Explanations(LIME)という手法です。

簡単にいうと、入力画像の一部を隠した画像をたくさん作り、インスタ度が高かったときに隠されていなかった部分のインスタ度が高いと考える手法です。詳しくは以下のサイトを参照してください。

https://homes.cs.washington.edu/~marcotcr/blog/lime/

「ゼロから作るDeep Learning」輪読会を開催しました

AI班で8月7日〜10日にかけて「ゼロから作るDeep Learning」の輪読会を行いました。
全員が自分で読んできて、各自の担当範囲をスライドでまとめて発表するという形式で開催しました。
時間の都合で実装はできませんでしたが、コードを読むだけでも理解が深まったので良い本だったと思います。

dlscratch

深層学習の初心者がほとんどでしたが、一冊読んだことで概観が分かってくれたと思います。
誤差逆伝播法やCNNなどは初めてだと分かりにくいかと思いましたが、本の解説が分かりやすいこともあり順調に進めることもできました。
分からないところを輪読会で質問しあって解決できたことも多くあったので、この形式は良かったと思います。

今後は三田祭に向けてTensorflowを用いた実装の勉強をして行く予定です。

2017年AI講習会総括

Unity講習会に続いて、AI講習会についても反省をします。

今年のAI講習会は機械学習の基礎から深層学習の入門を行いました。

全体の内容について

機械学習の基礎の基礎を知っておくことは重要だと思うのですが、やはり初めから数学的な話をするのはつまらなかったかなと思いました。
次年度以降は機械学習の基礎の部分は本当に軽くやるくらいが良いかもしれないですね。

テキストについて

「ITエンジニアのための機械学習理論入門」という本を参考にして書きました。
基礎の基礎の内容にとどめつつ、機械学習の概観が掴めるようにしたつもりです。
演習問題も少しですがつけて、Pythonと機械学習の実装の練習としました。

反省としては、量が多かったと思います。
入門講習会で欲張りすぎないほうが良いですね。
実装を増やしたほうが楽しめたと思います。

講習会について

人数は新入生だけだと最初の10人から最後は5人程度まで減りました。
少し込み入った話を急いでしすぎたと思います。
5限後ということで眠そうな人が多かったですね。
僕も眠かったです。

基本的に講義が中心になってしまったのも良くなかったです。
講義を聞くのは意外と疲れますよね。
僕も疲れました。
講義形式が効率が良い気もしなかったので、割り切って自分で本を読む時間を取ってもよかったかもしれないです。

その他

たまにはみんなでご飯を食べるのも良いと思います。

まとめ

  • 内容は少なくて良い
  • 自習形式で良い

AI班の記録(2017年5月10日)

AI班では4月から主に新入生向けにAI入門講習会を開催しています。
今日は講習会を一休みして、現在のAI技術の発展やAIの勉強方法について知ってもらう回になりました。

ai20170510

また、今年度はAI班も三田祭に向けて制作を行うことになりました。

最近の深層学習の紹介

以下のような深層学習の成果に関するYoutubeの動画を紹介しました。

  • モーションキャプチャ
  • セグメンテーション
  • モーション生成
  • 物体認識
  • 音声認識
  • GAN
  • 画風変換
  • SLAM
  • 自動彩色
  • 注視GAN
  • 超解像
  • トラッキング

AIの勉強の楽しさ

理論と実装を並行して学ぶ方法や、最新の論文を実装した例などを紹介しました。

講習会後の活動について

AI講習会後は主に画像認識に関する勉強をしていくことにしました。

AI班の紹介

慶応義塾大学のコンピュータサークルKCSのAI班では人工知能の理論や実装を勉強をしています。4月からは初心者向けAI講習会も開催中です。

AI班のTwitterはこちら
他のAI班の記録は「Tagged: AI班日誌
人工知能に関する記事は「Tagged: 人工知能

第2回・第3回KCS定例会(LT会)を開催しました

4月15日、22日に2017年度第2回・第3回KCS定例会を開催しました。
今回も第1回と同様にLT形式で1人5分で発表をしました。

新入部員に向けた2年生以上の部員の活動紹介を中心に行いました。

lt20170422

発表内容

空欄になっている部分は題名が共有ファイルに投稿されていないだけで、発表はされています。また、右に「スライド」とかいてあるものについては、発表で使用されたスライドが公開されています。
第2回定例会では8人、第3回定例会では13人が発表しました。

4月15日
時間内容スライド
15:10SlackとGoogle Appsたのしいスライド
15:20ゲームエンジンとかホラゲとかラビットハウスとか
15:30話事無死亡
15:40concrete5 の紹介スライド
15:50ドット絵講座スライド
16:00
16:10ー休憩ー
16:20新規パズルゲームプロジェクトの企画スライド
16:30ブラウザのアドオン作ってね(1分弱)
4月22日
時間内容スライド
15:10AIを作ることと理解することスライド
15:20
15:30
15:40昨年度の活動報告スライド
15:50しくじりKCSスライド
16:00任意の人間はAdobeを買うべきという話
16:10ー休憩ー
16:20コンパイラ―ソフトウェアを作るソフトウェア―スライド
16:30PCのバックアップを取りましょう!
16:40Brain Computer Interface使ってなんかやる(あとでたぶん題名変えます)
16:50
17:00KCSでの活動解説
17:10verilogで作る自作クソCPUとそれのためのクソ自作アセンブリ言語
17:20

技術書典2に出店します!(お-15 KCS)

Twitterでも何度か告知しましたが、KCSは技術書典2で3種類の入門書(電子書籍)を販売します。電子書籍での販売なので、PCでもスマホでも見ることができて便利です!

出店場所は「お-15」です。ぜひお立ち寄りください!

この記事では少し詳しく各書籍の説明をします。

KCSでまなぶ Unity入門

Unityは主にゲーム制作をするためのツールです。KCSでのゲーム開発はほとんどUnityを使って行われています。その経験を生かして初心者でもイチからUnityでゲームを作ることができるように入門書を作成しました。

本書では実際にアクションゲームを作りながらUnityの使い方を実践的に学ぶことができます。画像をふんだんに活用した分かりやすい書籍で、KCS日吉代表渾身の130ページを超える大作です。

(サンプル画像)
スクリーンショット 2017-04-03 23.37.04

スクリーンショット 2017-04-03 23.37.48

人工知能入門 機械学習・深層学習基礎

AI班もKCSの主要な活動のひとつです。いまは空前のAIブームと言われていて世間の関心も高い分野ですが、実際に学んでみると難しい部分も多くあります。今回は高校数学のみを前提知識としてAI(機械学習)の基礎的な部分をわかりやすく解説しました。Pythonの入門からカバーしており、全くの初心者から学べるように作ってあります。演習問題も豊富です!

(サンプル画像)
スクリーンショット 2017-04-03 23.50.09

スクリーンショット 2017-04-04 0.00.19

はじめてのBlender超入門

Blenderは3Dモデリングをするためのツールです。KCSでは例えばゲームで使用するモデルなどを部員が作るということも盛んに行われています。この書籍ではペンギンのモデルを作成する過程を学びながらBlenderの使い方を習得することができます。こちらも画像がたくさんあって分かりやすい上に、巻末にはこの入門書の次に読むべき著者の推薦書籍も載せています!

(サンプル画像)
スクリーンショット 2017-04-04 0.07.03

スクリーンショット 2017-04-04 0.07.51

さいごに

これらの入門書は4月からKCSの新入部員向けに行われる講習会で用いられる資料となっており、KCSが自身を持ってオススメできる書籍です!技術書典2にお越しの際には「お-15 KCS」にお立ち寄りください!

4月10日追記

技術書典2が終了しました。KCSブースに来ていただいた方、購入していただいた方、ありがとうございました!
書籍についてお気付きの点などありましたらTwitter(@kcs1959)または本サイト右上の「お問い合わせ」よりご連絡ください。

パラレルデータを用いない多対1声質変換

久しぶりに声質変換の活動を行ったので記録します。以前の記事から半年ほどが経ちました。

https://kcs1959.jp/archives/2432/research/フレーム独立gmm-based-mappingによる声質変換

今回参考にした論文はAI班の記事でも紹介されていますが、以下のような手法です。本文はこちら


声質変換は研究者の数が少ないので他のAI分野に比べて勢いがなく発展が遅れていますが、この手法は2016年8月に発表された画期的な手法です。この手法の凄いところは主に以下のような点です。

  • 同じ内容を話している音声データが必要ない
  • 学習で使った人以外の声からも変換できる
  • 実装が比較的楽にできる

今までの多くの声質変換手法では、同じ内容を話している音声のデータが必要で、学習で使用した人からの変換しかできませんでした。また、最近の手法はなかなか実装が難しいことも個人的には悩みどころでした。

今回の実装ではSPTKという音声分析ツール、Kerasというニューラルネットワークライブラリを主に使用しました。また、音声コーパスはPASDというものを使わせてもらっています。

声質変換の結果は以下のようになりました。
まずは変換元(入力)の声です。改めて強調しておくと、この人の声は声質変換を学習する(変換器をつくる)ときには全く使っていません。

そして変換結果が以下の音声です。変換先の声の目標は水瀬いのりさんという声優の声を使用しています。ラジオの音声を私的に録音したものです。水瀬いのりさんの実際の声はこちらなどを参照してください。

まだ不自然な部分や合成音感が残ってしまっていますが、少なくとも女性らしい声に変換されているのがわかります。今回は論文で使用された5分の1程度の時間の音声を使って学習したため、学習データを増やすことでもう少し質が向上すると思います。データが少ない中で精度を向上するために論文で示されているモデルから多少の変更をしています。詳しい内容は僕の個人的なブログも参照してみてください。

近年ではGANなどの生成モデルが盛んに研究されていて、音声の生成もGoogleのWaveNetに代表されるように数多くの新しい手法が提案されています。この潮流の中での声質変換の発展も期待しつつ、僕も引き続き研究していきたいと思います。

AI班の記録(2017/03/29)

今回はハミルトニアンモンテカルロ法の説明のために、サンプリングの基礎から詳しく説明がされました。

ai20170331

ある確率分布に従うようにサンプルを取得する方法です。アイデアは単純ですが、複雑な確率分布についてサンプリングを行うことは非常に難しい課題です。多次元に対応したり計算効率を向上するために様々な手法が提案されてきました。


AI班の紹介

慶応義塾大学のコンピュータサークルKCSのAI班では人工知能の理論や実装を勉強をしています。4月からは初心者向けAI講習会も行います!新入部員募集中です!

AI班のTwitterはこちら
他のAI班の記録は「Tagged: AI班日誌
人工知能に関する記事は「Tagged: 人工知能

AI班の記録(2017/03/22)

今日は3つの発表がありました。

ai20170322

Random forest の解説

代表的な集団学習の手法であるランダムフォレストの解説です。


Phonetic Posteriorgrams for Many-to-One Voice Conversion without Parallel Data Trainingの紹介

声質変換においてパラレルデータ(同じ内容を話している音声データ)が必要とせずに、あらゆる人の声をある一人の声に変換する手法の紹介です。


Outrageously Large Neural Networks:The Sparsely-Gated Mixture-of-Experts Layerの紹介

巨大なニューラルネットワークを構成するときに疎のゲートと大量のエキスパートを持つ混合エキスパート層を導入することで計算量を少なくする手法の紹介です。


AI班の紹介

慶応義塾大学のコンピュータサークルKCSのAI班では人工知能の理論や実装を勉強をしています。4月からは初心者向けAI講習会も行います!新入部員募集中です!

AI班のTwitterはこちら
他のAI班の記録は「Tagged: AI班日誌
人工知能に関する記事は「Tagged: 人工知能

AI班の記録(2017/03/13)

今回は2人が発表しました。

ai20170313

AI班ハードウェア領域

慶應大学天野研究室が参加しているプロジェクトの紹介を通じて、近年のトレンドであるハードウェアの最適化による学習の高速化・省電力化について紹介されました。


Unsupervised Image-to-Image Translation Networksの紹介

論文はこちら

教師データを必要としないGANの手法について説明されました。


AI班の紹介

慶応義塾大学のコンピュータサークルKCSのAI班では人工知能の理論や実装を勉強をしています。4月からは初心者向けAI講習会も行います!新入部員募集中です!

AI班のTwitterはこちら
他のAI班の記録は「Tagged: AI班日誌
人工知能に関する記事は「Tagged: 人工知能