はじめに
近年、機械学習は様々な形で私たちの生活に溶け込んできています。
機械学習を使った身近な例として、AppleのSiri、GoogleのAlexaなどがあります。これらは曲を聴かせるだけでそのタイトルを検索かつ表示したり、
言葉を発するとそのまま文章に起こしたり、言葉の通りに家電を動かすなど、とても便利です。
私たちは、その話題になっているAIの中で、3つのテーマについて勉強しました。
骨格推定モデル (MediaPipe)、行動判定モデル (自作: 時系列データとランダムフォレスト)、
画像生成モデル (Stable Diffusion)です。
今回は勉強の成果として、手の動きに応じたゲームを作成しました。
ハロウィンの時期に合わせた、ちょっぴりホラーテイストなゲームです。ぜひお楽しみください。
勉強した内容
機械学習とは
機械学習とはデータを分析する方法の1つです。
「機械」がデータを学習し、データの背景にあるルールやパターンを発見します。
近年では学習した成果に基づいて「予測・判断」することが重視されるようになりました。
機械学習がデータの背景にあるルールやパターンを学習するための種類としては、いくつかありますが、今回はその中でも「教師あり学習」というパターンを使用しています。
~教師あり学習とは~
まず入力データと出力データ(答え)をセットにして学習させ、その後入力データから出力データを推計するものです。
入力と出力の関係を分析するために、統計学の手法である回帰分析、クラス分類など様々な方法があります。
代表的な例としては、天候、価格、販促などの要因から売上を予測することが挙げられます。
骨格推定モデル:MediaPipeとは
MediaPipeとは、Googleが提供している機械学習の一つです。
特徴としてカメラに映る顔や手、ポーズをリアルタイムで検出することができます。Mediapipeを利用すると高性能なAI画像処理を利用した※ARアプリケーションを作成することができます。
また、ソフトウェアの設計図にあたるソースコードはオープンソースといって無償で公開されており、誰でも自由にそのソフトウェアを使用、複製、改良、再配布することができます。
※ARアプリケーション・・・仮想空間の情報やコンテンツを実現世界に重ね合わせ現実を拡張させたアプリ(ポ〇モンGo)
行動判定モデル :ランダムフォレストとは
ランダムフォレストとは、決定木を複数使うアンサンブル学習のアルゴリズムです。
アンサンブルの中でも、バギングを使っています。言葉が少し難しいので1つずつ解説します。
まず決定木(Decision Tree)とは、木構造を用いて分類や回帰を行う機械学習の手法の1つです。
分類木は対象を分類し、回帰木は対象の数値を推定します。
長所は、
・可読性が高いこと
・説明変数・目的変数共に質的データから、量的データまで扱えること
短所は、
・過学習を起こしやすいこと
・線形性のあるデータには適していないこと
です。次にアンサンブル学習とは、個々に別々の学習器として学習させたものを融合させ、未学習のデータに対しての予測能力を向上させるものです。
バギングとは、ブートストラップ法を使ってサンプル抽出した複数のデータ群に対してそれぞれモデルを構築して,最後に平均や多数決を取る方法です。
(ブートストラップ法・・母集団からのサンプリング(標本抽出)手法の一種で,重複を許してランダムにデータを取ってきて標本にするやり方)
ランダムフォレストはバギングと決定木、そしてそれぞれの決定木を構築する際に「一部の学習データを使わない」「 一部の特徴量でしか分割を行わない」工夫を施すことで、
更に精度を上げるようにしました。
ランダムフォレストは”random”という名前の通り、それぞれの決定木モデルで分割する特徴量をランダムに選択します。
今でもよく使われる、精度の高いモデルです。
画像生成モデル :Stable Diffusionとは
イギリスのスタートアップであるStability.AIが開発した、オープンソースの画像生成AIです。
今年の8月にサービスが提供され、オープンソースであること、個人のPCで動作すること、生成した画像の商用利用が可能であることなどから、
大いに話題になり、それ以前に登場していた画像生成AIであるDall・E2やMidjourneyなどの存在を霞ませることになりました。
モデルには潜在拡散モデルという、純粋なノイズから徐々にノイズを取り除くことで、最終的に何かしらの画像を得るモデルが使われています、
任意のテキスト入力するだけで、(コンピュータで作成されていているにもかかわらず)あたかも本物のように見える画像を生成できます。
おまけ:OpenCVとは
OpenCV(Open Source Computer Vision Library)とは、画像処理や動画処理ができる機能をまとめたライブラリです。こちらもオープンソースとして提供されているため、誰でも無料で使うことができます。
ここでライブラリとは特殊な機能を持った関数やクラスを一つにまとめたものをいいます。自分のPythonプログラムにインストールして誰でも使うことができます。
有名なもので他にNumpyというものがあります。これを使うと微分方程式や複素積分など複雑な数学処理がいろいろできるようになります。