yoppa.org


ハンズオン:AIを使ったコード生成

homo codence

いま、コードで描くことの可能性を探る—
第一線で活躍する技術者や研究者がYCAMに集結!

第一線で活躍する技術者や研究者を迎え、今後のメディアアート作品の制作に使用されるツールについて紹介し、国内外の参加者とともに学ぶ集中ワークショップ・シリーズの第5弾です。ハンズオンワークショップ「AIを使ったコード生成」では、実際に手元のノートPCで生成AIを使用したコード生成を体験します!

ワークショップ資料

ワークショップを受講するにあたり、以下の資料を参照して事前に準備をしてきてください。

ワークショップの本編は以下のスライド資料を使用して解説していきます

参考映像

Introduction to Generative AI
ChatGPT: 30 Year History | How AI Learned to Talk

参考資料


ハンズオン:AIを使ったコード生成 – 事前準備

homo codence

「ホモ・コーデンス—AI時代、人類はどう描くのか」のハンズオンワークショップ「AIを使ったコード生成」では、実際に手元のノートPCで生成AIを使用したコード生成を体験していただきます。その際に、いくつかの事前準備が必要となりますので、以下で解説します。

可能な方はワークショップ開始前までに準備をしてくるようにお願いします。

必要な準備は以下の4点です。

  1. Githubへのユーザー登録
  2. Github Copilotのトライアル版登録
  3. Visual Studio Codeのインストール
  4. Visual Studio Codeの環境設定

1. Githubへのユーザー登録

Githubとは、 主にプログラムのソースコードをオンライン上で公開・共有できるプラットフォームです。現在最もポピュラーなGitホスティングサイトとなったで、2023年にはユーザ数1億人を突破しました。Githubにはいくつかアカウントの種類がありますが、基本的には無料で使用可能です。

以下の資料を参照してGithubにユーザー登録してください。

参考資料:

※10/25追記: 学生 (教職員) として GitHub Educationに応募するための情報を追記しました。下記のGithub Copilotが無料で制限無しに利用可能になります。

2. Github Copilotのトライアル版登録

Github Copilotは今回使用するGithubから提供されている生成AIを使用したコード生成のサービスです。使用するには有料のプラン (Copilot Individual 個人 – 10ドル/月) に加入する必要がありますが、30日であれば無料のトライアルが可能です。学生や教育機関に所属する人であれば、GitHub Education (教育用アカウント) に登録することで無料で使用可能となります。

以下の資料を参照して、Github Copilotのトライアル版に加入してください。

参考資料:

3. Visual Studio Codeのインストール

Visual Studio Codeは、マイクロソフトが開発・提供している高性能なコードエディターです。無料で利用可能です。

以下のリンクからVisual Studio Codeをダウンロードしてインストールしてください。

参考資料:

4. Visual Studio Codeの環境設定

Visual Studio Codeはインストールした直後の状態でも十分多機能です。しかし、用途や目的に応じて拡張機能をインストールしていくことで、自分専用にカスタマイズされた最強のテキストエディターとなります。このワークショップでは以下の機能拡張を事前にインストールしておくようにしてください。

参考:

もし環境設定できなかった場合は

もし個人で環境設定できなかった場合でも問題ありません。ワークショップの冒頭でインストール作業について解説します。

それでも、どうしても導入ができなかった場合は、下記のページで (少し機能は劣りますが) 同様のコード生成体験が可能なので、使用していきます。

それでは当日よろしくお願いします!!


ChatGPTへ至る30年の歴史、画像生成AI導入

スライド資料

本日の内容

  • 「ChatGPTに至る30年の歴史」ChatGPT: 30 Year History | How AI Learned to Talk 映像視聴
  • 画像生成AI導入
    • まずは、いろいろなサービスに登録して使ってみる!

ChatGPTに至る30年の歴史

ChatGPT: 30 Year History | How AI Learned to Talk

ChatGPT: 30 Year History | How AI Learned to Talk

動画の要旨

  • チャットGPTの登場: チャットGPTは一般人が会話できる最初のプログラムで、チューリングテストを打ち破った。
  • 言語の複雑さ: 以前、多くの言語学者はコンピューターが人間の言語を理解することは不可能だと考えていたが、今はその多くが考えを改めている。
  • 教師あり学習の説明: 過去のニューラルネットワーク研究は、固定された目標に対して一つのタスクを学習するものであったが、汎用的なシステムへの道筋は見えていなかった。
  • 順序学習の初期研究: 1986年、ジョーダンは再帰型ニューラルネットワーク(RNN)を使ってシンボルの順序を予測させる実験を行い、ネットワークに記憶の概念を導入した。
  • エルマンの研究: ジェフリー・エルマンは、言語における単語の境界をニューラルネットワークが自動的に学習することを発見した。
  • Transformerの導入: 2017年、言語翻訳の問題に対応するためにTransformerアーキテクチャが開発され、これが現在の大規模言語モデル(LLM)の基盤となった。
  • GPTシリーズの進化:
    • GPT-1: Transformerアーキテクチャを使用し、次の単語予測問題に適用。
    • GPT-2: ウェブから収集したデータを使用し、さらに大規模なネットワークで優れた言語生成を実現。
    • GPT-3: 1750億のパラメーターを持つネットワークで、ゼロショット学習などの新しい機能を発揮。
  • 哲学的な議論: AIが本当に「思考」しているのか、それとも思考をシミュレートしているだけなのかについて、研究者間で議論が続いている。

さらにGPTの構造を深く知りたい人のために…

GPTとは何か Transformerの視覚化 | Chapter 5, Deep Learning

GPTとは何か Transformerの視覚化 | Chapter 5, Deep Learning

参考: ChatGPTを活用してYouTube動画の内容を要約する

画像生成AIを試してみる!

現在、様々な画像生成AIが公開されている。今回は以下の画像生成AIサービスを試してみましょう。(参考)

Imagen 3 in ImageFX

現状では総合的にベストなAI画像ジェネレーター

長所

  • 使いやすい
  • 高品質な結果
  • プロンプトごとに4つの画像

短所

  • Googleアカウントが必要
  • 画像は1:1比率のみ

Midjourney

高品質の画像のためのAI画像ジェネレーター

長所

  • 非常に高品質な出力
  • 失敗出力が少ない
  • Discordコミュニティオプション

短所

  • 有料 (月10ドル〜)

Adobe Firefly

参考写真がある場合に最適なAI画像ジェネレーター

長所

  • 構造とスタイルのリファレンス
  • 商業用にも安全
  • 無料 (Adobeアカウントがあれば)

短所

  • Adobeアカウントが必要
  • 月間生成クレジット限度額があり

Microsoft Designer’s Image Creator

DALL-E 3にアクセスするための最適なAI画像ジェネレーター

長所

  • DALL-E 3を搭載
  • 素早い
  • アクセスが便利

短所

  • Microsoftアカウントが必要
  • DALL-Eより少し時間がかかる

OpenAI’s DALL-E 3

オリジナルを体験したいなら最高のAI画像ジェネレーター

長所

  • OpenAIモデル
  • 著作権なし
  • 正確な描写

短所

  • 世代制限
  • プロンプトごとに1つの画像出力

Leonardo AI

著作権のあるキャラクターのために最適なAI画像ジェネレーター

長所

  • 制限が少ない
  • 豊富なカスタマイズオプション
  • 直感的なUI

短所

  • 有料コンテンツが多数
  • 他の多くのサービスと同様

Craiyon

シンプルなAI画像ジェネレーター

長所

  • 無料
  • 無制限アクセス
  • 9つの画像出力

短所

  • 待ち時間が長くなる
  • 一貫性のない画像

Stability AI’s DreamStudio

カスタマイズに最適な AI 画像ジェネレーター

長所

  • 特定の指示を受け入れる
  • オープンソース
  • カスタマイズのための追加エントリ

短所

  • 有料クレジット
  • アカウントを作成する必要あり

Wombo Dream

モバイル環境に最適なAI画像ジェネレーター

長所

  • モバイルアプリ
  • 自分の画像をリミックスする
  • 複数のテンプレート

短所

  • プロンプトごとに1つの画像
  • フルアクセスのサブスクリプション料金

Generative AI by Getty Images

商用利用に最適な AI 画像ジェネレーター

長所

  • 商業的に安全
  • 貢献者報酬プログラム
  • パーソナライズされたストック写真

短所

  • 価格が明確でない
  • 個人向けではない

まずはいろいろ試してみる!

実習、次回までの課題

課題: 画像生成AIで自画像を作成

  • いくつかの画像生成AIを試してみる
  • 気にいったサービスを1つ選択
  • 自分自身の自画像を生成してみる
    • 写実的、イラスト調、油彩調などスタイルは自由
    • 自分に似せるにはどのようなプロンンプト(指示)が良いか?
  • 次回、一番似ている人は誰かコンテスト

アンケート

本日の講義に参加した方は以下のアンケートに回答してください。


反復と乱数

プログラムを構造化していく際に、3つの重要な構成要素があります。それは、「順次 (Sequence)」、「反復 (Iteration)」、「分岐 (Selection)」 です。今回は、この3つの構成要素の中の反復 (Iteration) に注目して、p5.jsで形を描きながら反復について考えます。また、一意的でないランダムな値である「乱数」と反復を組合せて、どのような表現か可能となるか探求していきます。

映像資料

スライド資料

ランキング

おめでとうございます!

サンプルプログラム

本日の課題!!

乱数 (random) と繰り返し (for) を使用して、表現してみましょう!

  • 作品は、OpenProcessingに投稿
  • 完成した作品に、タイトルをつける
  • 投稿したURLをアンケートから提出
  • 投稿の際にsfc241018のタグをつけてください!
  • 締切: 2024年10月31日 (水) 23:59 まで!

アンケートフォーム

  • 今回のアンケートフォームから、前回の提出作品の人気投票を行います!
  • 前回のタグsfc241011でOpenProcessingで検索 (検索方法をSketches that are tagged にする必用あり)
  • 一番良いと思った作品に1票投票 (自信があれば自分の作品でも可)


TouchDesigner入門(3) – 3DCGに挑戦しよう!

今回はTouchDesignerの入門編として、いよいよ3次元のグラフィクスに挑戦します! SOP (Surface Operator) の使い方から始めて、Render COMPとカメラとライティングを使用したレンダリング、MAT (Material) の基本などを学習していきます。後半は応用編として、Switch SOPによる3D図形の切り替えや、Noise SOPによる図形の変形などを行います。

映像教材

スライド資料

サンプルファイル

本日の課題

今日のプログラムを改造して、以下のプログラムを作成してみましょう!

1. Box以外の図形を追加してキーボードの入力で切り替えられるようにする

  • ヒント
    • Box以外の図形 – Torus、Tube、Grid、Sphereなど
    • SOPの切り替えは、Switch SOPを用いる
    • キーボードによるスイッチングは前回の内容を参照

2. 3Dの形状をノイズで変形してみる

  • ヒント
    • Noise SOPで変形する
    • Attribute Create SOPで法線ベクトルを補正

アンケート

本日の授業に参加した方はアンケートに回答してください。


Strudel 2 : 音符と旋律

前回は主にドラムサウンドを用いてStrudelのプログラミングの導入を行いました。今回も引き続きStrudelによるサウンドプログラミングを学びます。前回はドラムでしたが、今回はシンセサイザーで旋律を演奏していきます。note() 関数を用いて音程を指定することで様々な方法でメロディーを生成することが可能です。実際に音を聞きながら試していきましょう。

スライド資料

映像資料

The Unanswered Question 1973 1 Musical Phonology Bernstein Norton (1973)

レナード・バーンスタインによるレクチャー。数世紀に渡る西洋音楽の和声の発展の歴史を2分に圧縮して解説!!

アンケート

本日の講義を履修した方は以下のアンケートに回答してください。

※ 旧カリ「サウンドプログラミング」「環境情報デザイン」で履修の方はこちら


かたちとコード – p5.jsで図形を描くには?

この講義では、p5.jsを使用してコードによるデザインを行います。その最初の一歩として、コードによって「かたち」を描くにはどうすれば良いのか考えていきます。

まず始めに、1950年代〜70年代の、コンピューター黎明期から発展期におけるコード(プログラム)による様々な視覚表現について紹介します。過去の作家がどのようなアイデアで、何を表現しようとしてきたのか、その歴史を辿ります。

後半は、そうした歴史を踏まえた上で、 p5.jsで実際に図形を描いていきます。まずp5.jsの操作基本を解説し、簡単な図形を描きながらp5.jsでのプログラミングの基本を学びます。

動画資料

スライド資料

ランキング

おめでとうございます!

本日の課題

テーマ: 「p5.js基本図形と色による画面構成」

ここまで解説したp5.jsの機能を活用して画面構成をしてみましょう! 座標、色、数値による図形の描画に慣れるのが目的です。 次回の授業の冒頭で優秀作品を紹介していきます。

  • 完成したら何かタイトルをつける
  • 完成した作品はOpenProcessingに投稿してアンケートフォームからURLを提出
  • 投稿の際に sfc241011 のタグをつけてください!
  • 提出締切は、2024年10月17日(木) (23:59) までとします

課題提出 + アンケート

課題の提出は以下のアンケートフォームから。

アンケートフォーム (※提出者の確認は学籍番号をキーにしています。間違いが無いかよく確認してください。)


人工知能、機械学習、深層学習、生成AIについて Teachable Machineで機械学習体験

本日の講義では、まず前回の課題で取り上げた人工知能(AI)、機械学習(ML)、深層学習(DL)、および生成AI(GenAI)の定義とそれぞれの特徴について解説します。その後、Teachable Machineを使った機械学習の基本的な体験を通じて、実際にモデルを訓練し、画像分類を行う流れを体感してもらいます。特に転移学習の仕組みと少数のデータで高精度な判別が可能となる理由についても触れます。最後に、生成AIの本質であるTransformerモデルに焦点を当て、次回へとつなげます。

スライド資料

本日の内容

  • 前回の課題の解説
    • 人工知能、機械学習、深層学習、生成AI、それぞれの定義と意味
    • GPTとは?
  • 機械学習について理解する
    • Teachable Machineで機械学習体験!
  • 生成AIの本質に迫る: Transformerについて
    • ニューラルコンピューティングからGPTへと至る30年の歴史

時事ネタ

今年のノーベル賞で、AI関係の研究者が2部門で受賞

  • ノーベル物理学賞
    • ジェフリー・ヒントン (Geoffrey Hinton)
  • ノーベル化学賞
    • デミス・ハサビス (Demis Hassabis)

ジェフリー・ヒントン (Geoffrey Hinton)

現代の人工知能(AI)研究の礎を築いた著名な計算神経科学者・コンピュータ科学者であり、特にディープラーニングの分野において重要な貢献を果たした

  • 逆伝播法(バックプロパゲーション)の普及
  • 制限ボルツマンマシン(Restricted Boltzmann Machines, RBM)モデルの開発

デミス・ハサビス (Demis Hassabis)

彼は、ディープラーニング技術を応用したAI企業「DeepMind」の共同創設者兼CEOとして知られており、DeepMindの革新的な研究成果

  • AlphaGoの開発
  • AlphaFoldによるタンパク質構造予測 など

デミス・ハザビス氏のドキュメンタリー映画「The Thinking Game」公開予定!

前回の課題の解説

  • 課題1: 4つの用語の定義
    • 人工知能 (Artificial Intelligence, AI)
    • 機械学習 (Machine Learnig, ML)
    • 深層学習 (Deep Learning, DL)
    • 生成AI (Generative AI, GenAI)
  • 課題2: GPTについて
    • GPTとは?
    • 「G」「T」「P」の意味

「人工知能」「機械学習」「深層学習」「生成AI」それぞれの定義と意味

映像を視聴

Introduction to Generative AI

ポイント:

  • AI、ML、DL、Gen AIの定義
  • 学習について (教師あり学習、教師なし学習)
  • 深層学習、ディープニューラルネットワークについて
  • 生成AIは深層学習の一部
  • 生成モデルと識別モデル
  • 大規模言語モデル: PaLM、LaMDAなど
  • Transformerモデルの重要性
  • Text-to-Text、Text-to-Image、Text-to-Videoなどの様々な生成AIモデル

Teachable Machineで機械学習体験

Teachable Machine
  • Googleの提供するTeachable Machineにアクセス
  • 本格的な生成AIについて考えていく前段階として、機械学習の基本を学ぶ
  • 教師あり学習 (転移学習) の基本の流れを体験
  • 画像読み込み → ラベル付け → 学習 → クラス分け (判別)
  • 様々な画像で試しながら実感してみる!

実習 1: Teachable Machineで機械学習

まずは学習を試してみる

  1. Teachable Machineで新規のImageプロジェクトを作成
  2. 数種類 (クラス) の画像セットをWebカメラで撮影
  3. 「Train Model」ボタンで学習開始
  4. Previewで確認、いまいちな場合は画像の撮影からやり直し

最初は「Image Project」が簡単なのでおすすめです。どのような画像のセットを学習させると面白いか考えながらいろいろ試してみましょう!

学習モデルを書き出す

Teachable Machineでは学習させたモデルを書き出してプログラムで利用することが可能です。様々な開発環境に対応して、サンプルのソースコードの生成まで簡単に行うことが可能です。

対応している環境

学習モデルの書き出し手順

  1. Teachable Machineで新規のImageプロジェクトを作成
  2. 数種類 (クラス) の画像セットをWebカメラで撮影
  3. 「Train Model」ボタンで学習開始
  4. Previewで確認、いまいちな場合は画像の撮影からやり直し
  5. 問題無ければ「Export Model」ボタンを押す
  6. Tensorflow.js > Upload (shareable linke) > p5.jsを選択して「Upload my model」ボタンを押す

書き出し設定

height:540px

学習させたモデルをp5.jsに読み込む

  • p5.js Editorにログイン
  • p5.jsのサンプルプロジェクトを開く
  • ファイルを複製して自分のプロジェクトに
  • モデルのURLを自分で学習したものに差し替えてみる
... (前略) ...

// 学習してアップロードしたモデルのURL
// !!ここに自分のモデルのURLを入力!!
let imageModelURL = 'https://teachablemachine.withgoogle.com/models/8dyZwOgL4/';

... (後略)...

実行結果

height:500px

ポイント! サンプルコードのどこで分類を行っているのかを読み解く

重要なのは、下記の関数

// 現在のビデオフレームを分類する
function classifyVideo() {
  classifier.classify(flippedVideo, gotResult);
}

// 結果が得られたとき
function gotResult(results) {
  // 結果は信頼度順に配列に格納される
  // console.log(results[0]);
  label = results[0].label;
}

重要なのは、results[] 配列

  • 画像を解析してその確度 (そのクラスである確率) が高い順番に配列に格納されている
  • ラベル名 (label) と確度 (confidence) が取得できる

例えば一番確度の高い結果のラベルとその確度を取得するには

let label = result[0].label; //ラベル
let confidence = result[0].confidence; //確度

分類結果のラベル (文字列) と信頼度 (0.0 – 1.0 の値)の一覧を表示

分類結果のラベル (文字列) と信頼度 (0.0 – 1.0 の値)の一覧を表示するサンプル

実行結果

height:500px

Emoji Cam

ちょっと工夫してみる。表情によって絵文字を表示するカメラのサンプル。この例では、普通の顔 (normal)、笑顔 (smile) 、悲しい顔 (sad) の3種類を学習してみました。

実行結果

height:400px
height:400px

なぜ少数の画像で判別できるのか?

  • 画像のクラス分け (Image classification)
  • 本来であれば膨大な学習データが必要
  • 画像 + ラベルのセット

大規模な画像データベースの例: ImageNet

ImageNet

  • 物体認識の研究で用いるために設計された大規模な画像データベース
  • 2024年10月現在、14,197,122個の画像を学習

転移学習 Transfer Learning

  • Teachable Machineが少数の画像で学習できる原理
  • あるタスクで学習したモデルを、関連する新しいタスクに適用させる手法
  • ゼロからネットワークを学習させるよりも高速で簡単
  • 学習にかかる時間を短縮できる
  • 学習対象となるサンプルデータの不足を補うことができる

転移学習はどのように動作しているのか

実習: Image Projectで遊んでみる!

  • Teachable MachineのImage Projectで遊んでみましょう
  • どのような判別をさせてみたら面白いことができそうか?
    • 画像を学習させてみる
    • イラストを描いて判別させてみる
    • ジェスチャーを学習させてみる
      ..etc.

次回予告 – 生成AIの本質に迫る

GPTとは? GPTに至る歴史

次回はいよいよGPTについて迫っていきます! 事前に予習したい方は以下のビデオを視聴してみてください。

ChatGPT: 30 Year History | How AI Learned to Talk

アンケート

講義に参加した方は、本日のアンケートに回答してください。


Strudel 基本 1 : 変なリズムを作ってみる – 変拍子、ポリリズム、ポリミーター、ユークリッドリズム

Toussaint, Godfried. “The Euclidean algorithm generates traditional musical rhythms.” 2005

先週の入門編に引き続き、Strudelを使用してリズムパターンを生成していきます。今回は、「変なリズム」を作成する様々な手法を紹介します。変拍子、奇数拍子、ポリリズム、ポリミーター、ユークリッドリズムといった様々な概念や手法と共に、Strudelでのパターン生成について理解を深めていきましょう。

スライド資料

サンプルコード

オーソドックスなリズム

// 8ビート
sound("hh*8, bd sd bd sd")

// 8ビート + シンコペーション
sound("hh*8, bd sd [~ bd] sd")

パラレルに演奏

sound("hh hh hh, bd casio")

sound("hh hh hh, bd bd, ~ casio*2 ~ cp")

sound("hh hh hh, bd [bd,casio]")

ポリリズム

sound("rim*4, hh*5")

sound("bd ~ rim ~, bd hh*2 hh ~ hh*2").bank("AkaiMPC60")

sound("bd*5, rim hh hh ~ rim hh <hh*2 hh> ~").bank("AkaiMPC60")

ポリミーター

sound("{bd sd bd hh, bd rim cp hh hh}")

sound("{lt*5, ht*4}").bank("AkaiLinn")

ユークリッドリズム

sound("bd(3, 8), hh(9, 16)")

sound("bd(3, 7), hh(9, 14, 5), cp(5, 7, 2)")

変拍子 + ユークリッドリズム + ポリリズム (+ ビジュアライズ)

sound("bd(2, 7), hh(11, 14), cp(5, 14, 7), lt(3, 3), mt(4, 4)")
  .bank("RolandTR909")
  .punchcard().color("gray")

参考資料

「変なリズム」な曲プレイリスト

  • Take Five, The Dave Brubeck Quartet
    • 変拍子 (5/4)
  • Money, Pink Floyd
    • 変拍子 (7/4)
  • Scatterbrain, Jeff Beck
    • 変拍子 (9/8)
  • The Fish, Yes
    • 変拍子 (7/8,)
  • Fire Back About Your New Baby’s Sex, Don Caballero
    • 変拍子 (7/8 → 3/4 → 4/4 → 7/8)
  • Never Meant, American Football
    • 変拍子 (12/4)
  • Morning Bell, Radiohead
    • 変拍子 (5/4)
  • STRUCTURE I, DATE COURSE PENTAGON ROYAL GARDEN
    • ポリリズム (8/5 + 4/4)
  • ポリリズム, Perfume
    • ポリミーター (4/4 + 5/4 + 3/4)
  • Discipline, King Crimson
    • 変拍子、ポリミーター (5/8 + 4/4, 17/16?)
  • The First Circle, Pat Metheny Group
    • 変拍子、ポリミーター (12/8 + 10/8)

アンケート

本日の講義を履修した方は以下のアンケートに回答してください。

※ 旧カリ「サウンドプログラミング」「環境情報デザイン」で履修の方はこちら


TouchDesigner入門(2) – 簡単な画像処理とFeedback、Switch TOPとキーボード入力

今回も前回に引続き、TouchDesignerの入門的な内容をTDSWの映像を教材にしながら学んでいきます。今回も主にTOPとCHOPを中心にした内容になっています。まず始めに、TOPを用いた画像処理 (輪郭抽出、グレースケール化、ぼかし、発光など) を行います。さらに高度な画像処理としてフィードバックループを用いた残像効果を作成します。後半はこの画像処理を、CHOPを用いてキーボードの入力によって切り替えられるところまでを目指します。

映像教材

【 TouchDesigner初級講座 】簡単な画像処理とFeedback #02
【TouchDesigner初級講座】Switch TOPとキーボード入力 #03

スライド資料

サンプルファイル

本日の課題

今日の最終のプログラムを改造して以下の処理を追加してください。

  • 画像処理の種類を4種類からさらに増やしてみる
  • キーボードの「3」を押すとさらに別の変化が起こるようにする
    • 回転スピードが変更
    • タイルの数の増減
    • …etc.

本日の課題

講義資料を参考に以下の課題とアンケートに回答してください。次週水曜日までを締切とします。