SlideShare a Scribd company logo
AI x WebAR!
MediaPipeの顔認識を使ってみよう!
まずは素材のダウンロード
http://arfukuoka.lolipop.jp
/mediapipe/sample.zip
自己紹介
氏名:吉永崇(Takashi Yoshinaga)
所属:Steampunk Digital株式会社
専門:医療支援AR,運動計測,3D Video
コミュニティ:ARコンテンツ作成勉強会
Twitterと勉強会ページで情報を発信しています
@AR_Fukuoka Googleで「AR勉強会」で検索
エンジニアカフェ
Special Thanks
#AR_Fukuoka
#エンジニアカフェ
ハッシュタグ
本題に入ります
今日のゴール
AIを用いた顔の認識とテクスチャマッピングを組み合わせたARコンテンツ
https://youtu.be/GyaenzhPhys
使用ツール:Facemesh
GoogleのMediaPipeとTnsorflow.jsがコラボでパッケージを開発。
顔認識を実現するfacemeshと手の認識を実現するhandposeが
提供されている中で今回はfacemeshを使用。
これを使う
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
公式サンプルの
利用手順とほぼ同じ
認識結果の活用
今回の進め方
サンプルをコピペしながら
コードの意味を解説
テンプレートの取得
https://glitch.com/~arfukuoka
-template
テンプレートの取得
少し下にスクロール
テンプレートの取得
Remix This
テンプレートの確認
index.html
テンプレートの確認
テンプレートの確認
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--TensorFlow関連の読み込み-->
<script src="https://unpkg.com/@tensorflow/tfjs-core@2.1.0/dist/tf-core.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-converter@2.1.0/dist/tf-converter.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-backend-webgl@2.1.0/dist/tf-backend-webgl.js">
</script>
<!--FaceMesh(顔認識)の読み込み-->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script>
<!--three.js:あとで顔のメッシュ表示の際に使用する-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>
</head>
<body>
<!—ここで描画領域を配置-->
</body>
</html> Lesson01
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
ビデオ描画領域を設定する
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--TensorFlow関連の読み込み-->
<script src="https://unpkg.com/@tensorflow/tfjs-core@2.1.0/dist/tf-core.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-converter@2.1.0/dist/tf-converter.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-backend-webgl@2.1.0/dist/tf-backend-webgl.js">
</script>
<!--FaceMesh(顔認識)の読み込み-->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script>
<!--three.js:あとで顔のメッシュ表示の際に使用する-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>
</head>
<body>
body内で描画領域をレイアウト
</body>
</html>
ビデオ描画領域を設定する
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--TensorFlow関連の読み込み-->
<script src="https://unpkg.com/@tensorflow/tfjs-core@2.1.0/dist/tf-core.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-converter@2.1.0/dist/tf-converter.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-backend-webgl@2.1.0/dist/tf-backend-webgl.js">
</script>
<!--FaceMesh(顔認識)の読み込み-->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script>
<!--three.js:あとで顔のメッシュ表示の際に使用する-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>
</head>
<body>
<video id="video" style="position: absolute;"></video>
</body>
</html>
あとでjavascriptから操作するためidをつけておく
Lesson02
ビデオを描画する
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>AR Fukuoka</title>
<!--TensorFlow関連の読み込み-->
<script src="https://unpkg.com/@tensorflow/tfjs-core@2.1.0/dist/tf-core.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-converter@2.1.0/dist/tf-converter.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-backend-webgl@2.1.0/dist/tf-backend-webgl.js">
</script>
<!--FaceMesh(顔認識)の読み込み-->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script>
<!--three.js:あとで顔のメッシュ表示の際に使用する-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>
<!—自前のスクリプトを記述-->
<script type="text/javascript">
</script>
</head>
<!—スペースの都合上、以下省略-->
Lesson03
ビデオを描画する
<script type="text/javascript">
//ビデオを扱う変数
var video;
//ページを読み込み終わったら実行
window.onload = function() {
//カメラ画像のサイズ設定(とりあえず640x480くらい)
let constraints = { video: { width: 640, height: 480 } };
//カメラデバイスの取得
navigator.mediaDevices.getUserMedia(constraints).then(
function(mediaStream) {
//body内のid=videoの要素を取得
video = document.getElementById("video");
//リアルタイム映像をvideo要素に対応づける
video.srcObject = mediaStream;
//準備が整ったら再生
video.onloadedmetadata = function(e) {
video.play();
};
}
);
}
</script>
Lesson04
動作確認
Show
動作確認
In a New Window
動作確認
カメラの映像が表示されればOK
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
顔の認識
//ビデオを扱う変数
var video;
//ページを読み込み終わったら実行
window.onload = function() {
//カメラ画像のサイズ設定
var constraints = { video: { width: 640, height: 480 } };
//カメラデバイスの取得
navigator.mediaDevices.getUserMedia(constraints).then(
function(mediaStream) {
//body内のid=videoの要素を取得
video = document.getElementById("video");
//リアルタイム映像をvideo要素に対応づける
video.srcObject = mediaStream;
//準備が整ったら再生
video.onloadedmetadata = function(e) {
video.play();
//顔認識を開始(このあと記述)
StartTracking();
};
}
);
};
Lesson05
顔の認識
//ビデオを扱う変数
var video;
//顔認識の学習モデル
var model;
//ページを読み込み終わったら実行
window.onload = function() {
//カメラ画像のサイズ設定
let constraints = { video: { width: 640, height: 480 } };
//カメラデバイスの取得
navigator.mediaDevices.getUserMedia(constraints).then(
//スペースの都合上省略
//カメラの準備が整ったらStartTrackingを呼び出す
);
}
//トラッキング開始準備の関数
async function StartTracking(){
//顔認識のための学習モデル読み込み
model = await facemesh.load();
//顔認識のループ(次のステップで使用)
FaceTrackingLoop();
} Lesson06
顔の認識
//ビデオを扱う変数
var video;
//顔認識の学習モデル
var model;
window.onload = function() {/*スペースの都合上省略*/ };
async function StartTracking(){
model = await facemesh.load();
FaceTrackingLoop();
}
//顔検出と描画のループ
async function FaceTrackingLoop() {
//顔の検出
let predictions = await model.estimateFaces(video);
//見つかった顔が1つ以上あれば
if (predictions.length > 0) {
//検出された顔の情報にアクセスして表示
console.log(predictions[0]);
}
requestAnimationFrame(FaceTrackingLoop);
} Lesson07
動作確認
カメラの映像は表示されるけど、
学習データの読み込みに時間がかかる
動作確認(FireFox)
①何のない箇所を右クリック
②要素を調査
動作確認(FireFox)
①コンソール
②検出結果
認識結果の内訳
faceInViewConfidence: 1, //顔らしさ(信頼度 0~1)
boundingBox: { // 顔を囲む矩形の角の座標
topLeft: [232.28, 145.26],
bottomRight: [449.75, 308.36],
},
mesh: [ // 顔の各特徴の座標[x,y,z] (認識用に192x192pxに縮小した画像上の座標)
[92.07, 119.49, -17.54], [91.97, 102.52, -30.54], ...
],
scaledMesh: [// 顔の各特徴の座標[x,y,z] (ビデオ画像の座標)
[322.32, 297.58, -17.54], [322.18, 263.95, -30.54], ...
],
annotations: { //顔のパーツと座標の組み合わせ
silhouette: [
[326.19, 124.72, -3.82], [351.06, 126.30, -3.00], ...
],
...
}
顔の特徴点は全部で468個
続いて、特徴点を描画しよう
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
文字の表示を止める
//ビデオを扱う変数
var video;
//顔認識の学習モデル
var model;
window.onload = function() {/*スペースの都合上省略*/ };
async function StartTracking(){
model = await facemesh.load();
FaceTrackingLoop();
};
//顔検出と描画のループ
async function FaceTrackingLoop() {
//顔の検出
let predictions = await model.estimateFaces(video);
//見つかった顔が1つ以上あれば
if (predictions.length > 0) {
//検出された顔の情報にアクセスして表示
console.log(predictions[0]);
}
requestAnimationFrame(FaceTrackingLoop);
}
//console.log(predictions[0]);
文字の表示は不要
グラフィックス表示領域(Canvas)の設定
<html>
<head>
<meta charset="utf-8" />
<!--TensorFlow関連の読み込み-->
<script src="https://unpkg.com/@tensorflow/tfjs-core@2.1.0/dist/tf-core.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-converter@2.1.0/dist/tf-converter.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-backend-webgl@2.1.0/dist/tf-backend-webgl.js">
</script>
<!--FaceMesh(顔認識)の読み込み-->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script>
<!--three.js:あとで顔のメッシュ表示の際に使用する-->
<script src=“https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js”></script>
<script type=“text/javascript”> /*本ハンズオンで記述中(省略)*/ </script>
</head>
<body>
<video id="video" style="position: absolute;"></video>
<canvas id="output" style=" position: absolute; "></canvas>
</body>
</html> javascriptで操作する時の名前はoutputとする
Lesson08
このあと・・・
公式サンプルではcanvasの描画機能を使用して顔の特徴点を描画
ただし今回は・・・
顔に画像を貼るテクスチャマッピングを実現し易いthree.jsを使用
でも・・・
three.jsは初期設定などが必要で初心者向きではない
初期設定用のスクリプトは勉強会用に事前に用意しました!
threejs-ex.jsに記述済み
three.js利用の手間を省くスクリプト
<html>
<head>
<meta charset="utf-8" />
<!--TensorFlow関連の読み込み-->
<script src="https://unpkg.com/@tensorflow/tfjs-core@2.1.0/dist/tf-core.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-converter@2.1.0/dist/tf-converter.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-backend-webgl@2.1.0/dist/tf-backend-webgl.js">
</script>
<!--FaceMesh(顔認識)の読み込み-->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script>
<!--three.js:あとで顔のメッシュ表示の際に使用する-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>
<!--勉強会用に用意したthree.jsの初期設定スクリプト-->
<script src="threejs-ex.js"></script>
<script type="text/javascript"> /*本ハンズオンで記述中(省略)*/ </script>
</head>
<body>
<video id="video" style="position: absolute;"></video>
<canvas id="output" style=" position: absolute; "></canvas>
</body>
</html> Lesson09
顔の特徴点を描画
<html>
<head>
<meta charset="utf-8" />
<!--TensorFlow関連の読み込み-->
<script src="https://unpkg.com/@tensorflow/tfjs-core@2.1.0/dist/tf-core.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-converter@2.1.0/dist/tf-converter.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-backend-webgl@2.1.0/dist/tf-backend-webgl.js">
</script>
<!--FaceMesh(顔認識)の読み込み-->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script>
<!--three.js:あとで顔のメッシュ表示の際に使用する-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>
<!--勉強会用に用意したthree.jsの初期設定スクリプト-->
<script src="threejs-ex.js"></script>
<script type="text/javascript"> /*こちらの編集に戻る*/ </script>
</head>
<body>
<video id="video" style="position: absolute;"></video>
<canvas id="output" style=" position: absolute; "></canvas>
</body>
</html>
ここを編集!
three.jsを使う準備
<script type="text/javascript">
var video;
window.onload = function() {
let constraints = { video: { width: 640, height: 480 } };
navigator.mediaDevices.getUserMedia(constraints).then(
function(mediaStream) {
video = document.getElementById("video");
video.srcObject = mediaStream;
video.onloadedmetadata = function(e) {
video.play();
//Three.jsでの描画に関するセッティング(このあと記述)
InitRendering();
StartTracking();
};
}
);
};
</script> Lesson10
three.jsを使う準備
window.onload = function() {
let constraints = { video: { width: 640, height: 480 } };
navigator.mediaDevices.getUserMedia(constraints).then(
//スペースの都合上省略
//InitRenderingとStartTrackingを呼び出してる。
);
}
//THREE.jsで描画するための準備
function InitRendering(){
//ビデオ表示領域のサイズを明確に設定
let videoWidth = video.videoWidth;
let videoHeight = video.videoHeight;
video.width = videoWidth;
video.height = videoHeight;
//描画領域のサイズを指定
let canvas = document.getElementById("output");
canvas.width = videoWidth;
canvas.height = videoHeight;
//描画に関する初期設定 (threejs-ex.js内)
InitThreejs(canvas);
}
async function StartTracking(){ /*トラッキング開始準備*/ } Lesson11
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
顔描画のための3Dデータ作成
var video;
var model; //顔認識のための学習モデル
var faceMesh; //顔の3Dデータ
window.onload = function() {
let constraints = { video: { width: 640, height: 480 } };
navigator.mediaDevices.getUserMedia(constraints).then(
function(mediaStream) {
video = document.getElementById("video");
video.srcObject = mediaStream;
video.onloadedmetadata = function(e) {
video.play();
InitRendering();
//顔の3Dモデルを作成 (このあと記述)
CreateFaceObject();
StartTracking();
};
}
);
}
Lesson12
顔描画のための3Dデータ作成
var video;
var model;
var faceMesh;
window.onload = function() {
/*諸々の初期化。スペースの都合上、省略*/
}
このあと、この辺りにCreateFaceObject関数を記述
function InitRendering(){
/*three.jsの初期化。さっきまで解説していたところ*/
}
async function StartTracking(){
/*学習モデルの読み込みと顔認識スタート*/
}
async function FaceTrackingLoop() {
/*顔を検出するループ*/
}
顔描画のための3Dデータ作成
function CreateFaceObject() {
//顔の形状をgeometryで管理
let geometry = new THREE.Geometry();
//頂点を登録(座標は今のところ適当)
for (let i = 0; i < 468; i++) {
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
}
//色などの見た目情報をmateriaに登録
let material= new THREE.PointsMaterial( { color: 0x0000FF, size: 3 } );
//faceMeshに形状(geometry)と見た目(material)を登録。
faceMesh= new THREE.Points( geometry, material );
//three.jsに登録(threejs-ex.js内で処理)
AddToThreejs(faceMesh);
}
Lesson13
顔の特徴点をリアルタイムに描画
window.onload = function() {
/*諸々の初期化。スペースの都合上、省略*/
}
function CreateFaceObject() {
/*顔の3Dデータを作る*/
}
function InitRendering(){
/*three.jsの初期化*/
}
async function StartTracking(){
/*学習モデルの読み込みと顔認識スタート*/
}
async function FaceTrackingLoop() {
/*顔を検出するループ*/
}
顔の検出結果を3Dモデルに反映させる
顔の特徴点をリアルタイムに描画
async function FaceTrackingLoop() {
let predictions = await model.estimateFaces(video);
if (predictions.length > 0) {
//検出された顔の頂点配列にアクセス
let keypoints = predictions[0].scaledMesh;
//顔の3Dモデルの頂点等の情報にアクセス
let geometry=faceMesh.geometry;
for (let i = 0; i < keypoints.length; i++) {
let x = keypoints[i][0];
let y = keypoints[i][1];
geometry.vertices[i].set(x-video.width/2, -y+video.height/2, 1);
}
//情報の更新を許可
faceMesh.geometry.verticesNeedUpdate = true;
}
//上記の情報をThree.jsで描画
RenderThreejs();
requestAnimationFrame(FaceTrackingLoop);
}
Lesson14
動作確認
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
ポリゴン化しよう
0
1
3
2
4
5
6
7
8
9
10
11
12
 各頂点にはそれぞれ番号が
割り振られている
 三角形を作るには結ぶ頂点の
番号を指定する
例) 0 2 3、 9 8 12、・・・
 接続番号のリストは
triangulation.jsで提供
顔のテンプレート
ポリゴン化しよう
三角形を表現するための3点の番号が配列に全部並ぶ => 要素数は三角形の数 × 3
ポリゴン化しよう
<html>
<head>
<meta charset="utf-8" />
<!--TensorFlow関連の読み込み-->
<script src="https://unpkg.com/@tensorflow/tfjs-core@2.1.0/dist/tf-core.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-converter@2.1.0/dist/tf-converter.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-backend-webgl@2.1.0/dist/tf-backend-webgl.js">
</script>
<!--FaceMesh(顔認識)の読み込み-->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script>
<!--three.js:あとで顔のメッシュ表示の際に使用する-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>
<!--勉強会用に用意したthree.jsの初期設定スクリプト-->
<script src="threejs-ex.js"></script>
<!—三角形の頂点の接続情報-->
<script src="triangulation.js"></script>
<script type="text/javascript"> /*本ハンズオンで記述中(省略)*/ </script>
</head>
<body> 省略 </body>
</html>
Lesson15
ポリゴン化しよう
window.onload = function() {
/*諸々の初期化。スペースの都合上、省略*/
}
function CreateFaceObject() {
/*顔の3Dデータを作る*/
}
function InitRendering(){
/*three.jsの初期化*/
}
async function StartTracking(){
/*学習モデルの読み込みと顔認識スタート*/
}
async function FaceTrackingLoop() {
/*顔を検出するループ*/
}
顔の3Dモデルをポリゴンとして設定
ポリゴン化しよう
function CreateFaceObject() {
let geometry = new THREE.Geometry();
//頂点を登録
for (let i = 0; i < 468; i++) {
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
}
//頂点の接続情報
let index,p0,p1,p2;
for (let i = 0; i < TRIANGULATION.length / 3; i++) {
index= i * 3;
p0 = TRIANGULATION[index];
p1 = TRIANGULATION[index+1];
p2 = TRIANGULATION[index+2];
geometry.faces.push(new THREE.Face3(p0,p1,p2));
}
//色などの見た目情報をmaterial管理
let material= new THREE.PointsMaterial( { color: 0x0000FF, size: 3 } );
//faceMeshに形状(geometry)と見た目(material)を登録。
faceMesh= new THREE.Points( geometry, material );
AddToThreejs(faceMesh);
}
Lesson16
ポリゴン化しよう
let geometry = new THREE.Geometry();
for (let i = 0; i < 468; i++) {
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
}
//頂点の接続情報
let index,p0,p1,p2;
for (let i = 0; i < TRIANGULATION.length / 3; i++) {
index= i * 3;
p0 = TRIANGULATION[index];
p1 = TRIANGULATION[index+1];
p2 = TRIANGULATION[index+2];
geometry.faces.push(new THREE.Face3(p0,p1,p2));
}
//色などの見た目情報をmaterial管理
let material= new THREE.PointsMaterial( { color: 0x0000FF, size: 3 } );
let material = new THREE.MeshBasicMaterial( {wireframe:true} );
//faceMeshに形状(geometry)と見た目(material)を登録。
faceMesh= new THREE.Points( geometry, material );
faceMesh= new THREE.Mesh( geometry, material );
//three.jsに登録
AddToThreejs(faceMesh);
let material= new THREE.PointsMaterial( { color: 0x0000FF, size: 3 } );
faceMesh= new THREE.Points( geometry, material );
Lesson17
動作確認
ハンズオン手順
 ビデオ画像の取得と表示
 facemeshで顔の認識
 認識結果をAR表示する準備
 顔の特徴点を表示
 顔をポリゴン化
 テクスチャの貼り付け
顔に画像を貼ろう
 AIが認識した顔の特徴点とテクスチャ画像中の座標を対応づける
 画像中の座標はピクセル(x,y)ではなく全体に対する割合(u,v)で指定する
→ これにより様々なサイズの画像を貼り付けられる!
 特徴点に対応するuv座標のリストはuv-coords.jsにて提供
認識結果 テクスチャ
UV座標のリスト
顔の特徴点に対応するUV座標がUV_COORDSという配列に羅列されている
0番目のuv
3番目のuv
テクスチャ画像を貼り付けよう
<html>
<head>
<meta charset="utf-8" />
<!--TensorFlow関連の読み込み-->
<script src="https://unpkg.com/@tensorflow/tfjs-core@2.1.0/dist/tf-core.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-converter@2.1.0/dist/tf-converter.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-backend-webgl@2.1.0/dist/tf-backend-webgl.js">
</script>
<!--FaceMesh(顔認識)の読み込み-->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script>
<!--three.js:あとで顔のメッシュ表示の際に使用する-->
<script src=“https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js”></script>
<!--勉強会用に用意したthree.jsの初期設定スクリプト-->
<script src="threejs-ex.js"></script>
<!—三角形の頂点の接続情報-->
<script src="triangulation.js"></script>
<!—三角形の頂点の接続情報-->
<script src="uv-coords.js"></script>
<script type=“text/javascript”> /*本ハンズオンで記述中(省略)*/ </script>
</head>
以下省略 Lesson18
テクスチャ画像を貼り付けよう
<html>
<head>
<meta charset="utf-8" />
<!--TensorFlow関連の読み込み-->
<script src="https://unpkg.com/@tensorflow/tfjs-core@2.1.0/dist/tf-core.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-converter@2.1.0/dist/tf-converter.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-backend-webgl@2.1.0/dist/tf-backend-webgl.js">
</script>
<!--FaceMesh(顔認識)の読み込み-->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script>
<!--three.js:あとで顔のメッシュ表示の際に使用する-->
<script src=“https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js”></script>
<!--勉強会用に用意したthree.jsの初期設定スクリプト-->
<script src="threejs-ex.js"></script>
<!—三角形の頂点の接続情報-->
<script src="triangulation.js"></script>
<!—三角形の頂点の接続情報-->
<script src="uv-coords.js"></script>
<script type=“text/javascript”> /*こちらの編集に戻る*/ </script>
</head>
以下省略 ここを編集!
テクスチャ画像を貼り付けよう
window.onload = function() {
/*諸々の初期化。スペースの都合上、省略*/
}
function CreateFaceObject() {
/*顔の3Dデータを作る*/
}
function InitRendering(){
/*three.jsの初期化*/
}
async function StartTracking(){
/*学習モデルの読み込みと顔認識スタート*/
}
async function FaceTrackingLoop() {
/*顔を検出するループ*/
}
顔の3Dモデルに画像を貼り付ける
テクスチャ画像を貼り付けよう
let geometry = new THREE.Geometry();
for (let i = 0; i < 468; i++) {
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
}
//頂点の接続情報とテクスチャ座標対応づけ
let index,p0,p1,p2;
for (let i = 0; i < TRIANGULATION.length / 3; i++) {
index= i * 3;
p0 = TRIANGULATION[index];
p1 = TRIANGULATION[index+1];
p2 = TRIANGULATION[index+2];
geometry.faces.push(new THREE.Face3(p0,p1,p2));
}
//色などの見た目情報をmaterial管理
let material = new THREE.MeshBasicMaterial( {wireframe:true} );
//faceMeshに形状(geometry)と見た目(material)を登録。
faceMesh= new THREE.Mesh( geometry, material );
//three.jsに登録(threejs-ex.js内で処理)
AddToThreejs(faceMesh);
テクスチャ画像を貼り付けよう
let geometry = new THREE.Geometry();
for (let i = 0; i < 468; i++) {
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
}
//頂点の接続情報とテクスチャ座標対応づけ
let index,p0,p1,p2;
for (let i = 0; i < TRIANGULATION.length / 3; i++) {
index= i * 3;
p0 = TRIANGULATION[index];
p1 = TRIANGULATION[index+1];
p2 = TRIANGULATION[index+2];
geometry.faces.push(new THREE.Face3(p0,p1,p2));
}
//色などの見た目情報をmaterial管理
let material = new THREE.MeshBasicMaterial( {wireframe:true} );
//faceMeshに形状(geometry)と見た目(material)を登録。
faceMesh= new THREE.Mesh( geometry, material );
//three.jsに登録(threejs-ex.js内で処理)
AddToThreejs(faceMesh);
ここを編集!
テクスチャ画像を貼り付けよう
let index,p0,p1,p2;
for (let i = 0; i < TRIANGULATION.length / 3; i++) {
index= i * 3;
p0 = TRIANGULATION[index];
p1 = TRIANGULATION[index+1];
p2 = TRIANGULATION[index+2];
geometry.faces.push(new THREE.Face3(p0,p1,p2));
//UV座標を指定
geometry.faceVertexUvs[0].push([
new THREE.Vector2(UV_COORDS[p0][0],1-UV_COORDS[p0][1]),
new THREE.Vector2(UV_COORDS[p1][0],1-UV_COORDS[p1][1]),
new THREE.Vector2(UV_COORDS[p2][0],1-UV_COORDS[p2][1])]);
}
let texture = new THREE.TextureLoader().load("画像のURL");
//色などの見た目情報をmaterial管理
let material = new THREE.MeshBasicMaterial( {wireframe:true} );
let material = new THREE.MeshBasicMaterial( {map: texture, alphaTest:0.1} );
let material = new THREE.MeshBasicMaterial( {wireframe:true} );
Lesson19
貼り付ける画像をアップロード
assets
貼り付ける画像をアップロード
Upload an Assets
貼り付ける画像をアップロード
mesh_map.jpg
選択
貼り付ける画像をアップロード
画像をクリック
貼り付ける画像をアップロード
copy
貼り付ける画像をアップロード
空白をクリック
テクスチャ画像を貼り付けよう
function CreateFaceObject() {
let geometry = new THREE.Geometry();
//頂点を登録
for (let i = 0; i < 468; i++) {
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
}
//頂点の接続情報
let index,p0,p1,p2;
for (let i = 0; i < TRIANGULATION.length / 3; i++) {
index= i * 3;
p0 = TRIANGULATION[index];
p1 = TRIANGULATION[index+1];
p2 = TRIANGULATION[index+2];
geometry.faces.push(new THREE.Face3(p0,p1,p2));
//UV座標を指定
geometry.faceVertexUvs[0].push([
new THREE.Vector2(UV_COORDS[p0][0],1-UV_COORDS[p0][1]),
new THREE.Vector2(UV_COORDS[p1][0],1-UV_COORDS[p1][1]),
new THREE.Vector2(UV_COORDS[p2][0],1-UV_COORDS[p2][1])]);
}
let texture = new THREE.TextureLoader().load( "画像のURLをここに貼り付ける" );
//色などの見た目情報をmaterial管理
let material = new THREE.MeshBasicMaterial( {map: texture, alphaTest:0.1} );
faceMesh= new THREE.Mesh( geometry, material );
AddToThreejs(faceMesh);
}
動作確認
完成
おまけ
画像アップロードに対応
Uploadボタンを追加
<html>
<head>
<meta charset="utf-8" />
<!--TensorFlow関連の読み込み-->
<script src="https://unpkg.com/@tensorflow/tfjs-core@2.1.0/dist/tf-core.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-converter@2.1.0/dist/tf-converter.js"></script>
<script src="https://unpkg.com/@tensorflow/tfjs-backend-webgl@2.1.0/dist/tf-backend-webgl.js">
</script>
<!--FaceMesh(顔認識)の読み込み-->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script>
<!--three.js:あとで顔のメッシュ表示の際に使用する-->
<script src=“https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js”></script>
<script type=“text/javascript”> /*本ハンズオンで記述中(省略)*/ </script>
</head>
<body>
<input type="file" id="file"><br>
<video id="video" style="position: absolute;"></video>
<canvas id="output" style=" position: absolute; "></canvas>
</body>
</html>
javascriptで操作する時の名前はfileとする
Lesson20
Upload機能の記述
window.onload = function() {
/*諸々の初期化。スペースの都合上、省略*/
}
function CreateFaceObject() {
/*顔の3Dデータを作る*/
}
function InitRendering(){
/*three.jsの初期化*/
}
async function StartTracking(){
/*学習モデルの読み込みと顔認識スタート*/
}
async function FaceTrackingLoop() {
/*顔を検出するループ*/
}
window.onloadに記述
Upload機能の記述
window.onload = function() {
let file = document.getElementById('file');
// ファイルが指定された時にloadLocalImage()を実行
file.addEventListener('change', loadLocalImage, false);
let constraints = { video: { width: 640, height: 480 } };
navigator.mediaDevices.getUserMedia(constraints).then(
function(mediaStream) {
video = document.getElementById("video");
video.srcObject = mediaStream;
video.onloadedmetadata = function(e) {
video.play();
InitRendering();
CreateFaceObject();
StartTracking();
};
}
);
} Lesson21
Upload機能の記述
window.onload = function() {
/*諸々の初期化。スペースの都合上、省略*/
}
このあとこの辺りに loadLocalImage関数を追加(コピペ)
function CreateFaceObject() {
/*顔の3Dデータを作る*/
}
function InitRendering(){
/*three.jsの初期化*/
}
async function StartTracking(){
/*学習モデルの読み込みと顔認識スタート*/
}
Upload機能の記述
function loadLocalImage(e) {
// ファイル情報を取得
let fileData = e.target.files[0];
// 画像ファイル以外は処理を止める
if(!fileData.type.match('image.*')) {
alert('画像を選択してください’); return;
}
// FileReaderオブジェクトを使ってファイル読み込み
let reader = new FileReader();
reader.onload = function() {
//画像をテクスチャとして読み込む
var tex= new THREE.TextureLoader().load(reader.result);
faceMesh.material.map=tex;
}
// ファイル読み込みを実行
reader.readAsDataURL(fileData);
} Lesson22
完成!
https://facemesh-arfukuoka.glitch.me

More Related Content

What's hot

WebRTC と Native とそれから、それから。
WebRTC と Native とそれから、それから。 WebRTC と Native とそれから、それから。
WebRTC と Native とそれから、それから。
tnoho
 
Aframe詰め合わせ
Aframe詰め合わせAframe詰め合わせ
Aframe詰め合わせ
Youichi Sugii
 
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころAppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころ
Masayuki Wakizaka
 
A-Frameで始めるOculus Quest対応WebVR
A-Frameで始めるOculus Quest対応WebVRA-Frameで始めるOculus Quest対応WebVR
A-Frameで始めるOculus Quest対応WebVR
Takashi Yoshinaga
 
【準備編】OculusQuest/HoloLens2対応WebXR開発
【準備編】OculusQuest/HoloLens2対応WebXR開発【準備編】OculusQuest/HoloLens2対応WebXR開発
【準備編】OculusQuest/HoloLens2対応WebXR開発
Takashi Yoshinaga
 
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!
Takashi Yoshinaga
 
Azure ADアプリケーションを使用した認証のあれやこれ
Azure ADアプリケーションを使用した認証のあれやこれAzure ADアプリケーションを使用した認証のあれやこれ
Azure ADアプリケーションを使用した認証のあれやこれ
DevTakas
 
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTrackingはじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTracking
Takashi Yoshinaga
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
 
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
Unity Technologies Japan K.K.
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
 
AR-Frame x AR.js入門
AR-Frame x AR.js入門AR-Frame x AR.js入門
AR-Frame x AR.js入門
Takashi Yoshinaga
 
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
UnityTechnologiesJapan002
 
Bapp Storeを調べてみたよ!
Bapp Storeを調べてみたよ!Bapp Storeを調べてみたよ!
Bapp Storeを調べてみたよ!
zaki4649
 
Share point における id管理と認証・認可
Share point における id管理と認証・認可Share point における id管理と認証・認可
Share point における id管理と認証・認可
Naohiro Fujie
 
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
健一 辰濱
 
WebRTCの技術解説 公開版
WebRTCの技術解説 公開版WebRTCの技術解説 公開版
WebRTCの技術解説 公開版
Contest Ntt-west
 
Microsoft Graph完全に理解した気がしてた
Microsoft Graph完全に理解した気がしてたMicrosoft Graph完全に理解した気がしてた
Microsoft Graph完全に理解した気がしてた
DevTakas
 
UnityとVuforiaで始めるAR開発
UnityとVuforiaで始めるAR開発UnityとVuforiaで始めるAR開発
UnityとVuforiaで始めるAR開発
Takashi Yoshinaga
 
Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!
Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!
Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!
Yoichi Kawasaki
 

What's hot (20)

WebRTC と Native とそれから、それから。
WebRTC と Native とそれから、それから。 WebRTC と Native とそれから、それから。
WebRTC と Native とそれから、それから。
 
Aframe詰め合わせ
Aframe詰め合わせAframe詰め合わせ
Aframe詰め合わせ
 
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころAppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころ
 
A-Frameで始めるOculus Quest対応WebVR
A-Frameで始めるOculus Quest対応WebVRA-Frameで始めるOculus Quest対応WebVR
A-Frameで始めるOculus Quest対応WebVR
 
【準備編】OculusQuest/HoloLens2対応WebXR開発
【準備編】OculusQuest/HoloLens2対応WebXR開発【準備編】OculusQuest/HoloLens2対応WebXR開発
【準備編】OculusQuest/HoloLens2対応WebXR開発
 
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!
 
Azure ADアプリケーションを使用した認証のあれやこれ
Azure ADアプリケーションを使用した認証のあれやこれAzure ADアプリケーションを使用した認証のあれやこれ
Azure ADアプリケーションを使用した認証のあれやこれ
 
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTrackingはじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTracking
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
 
AR-Frame x AR.js入門
AR-Frame x AR.js入門AR-Frame x AR.js入門
AR-Frame x AR.js入門
 
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
 
Bapp Storeを調べてみたよ!
Bapp Storeを調べてみたよ!Bapp Storeを調べてみたよ!
Bapp Storeを調べてみたよ!
 
Share point における id管理と認証・認可
Share point における id管理と認証・認可Share point における id管理と認証・認可
Share point における id管理と認証・認可
 
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
 
WebRTCの技術解説 公開版
WebRTCの技術解説 公開版WebRTCの技術解説 公開版
WebRTCの技術解説 公開版
 
Microsoft Graph完全に理解した気がしてた
Microsoft Graph完全に理解した気がしてたMicrosoft Graph完全に理解した気がしてた
Microsoft Graph完全に理解した気がしてた
 
UnityとVuforiaで始めるAR開発
UnityとVuforiaで始めるAR開発UnityとVuforiaで始めるAR開発
UnityとVuforiaで始めるAR開発
 
Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!
Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!
Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!
 

Similar to AI x WebAR! MediaPipeの顔認識を使ってみよう!

OpenCVで作るスタンプAR
OpenCVで作るスタンプAROpenCVで作るスタンプAR
OpenCVで作るスタンプAR
Takashi Yoshinaga
 
HTML5でできるカメラアプリを実際に体験しよう
HTML5でできるカメラアプリを実際に体験しよう HTML5でできるカメラアプリを実際に体験しよう
HTML5でできるカメラアプリを実際に体験しよう
Hideki Akiba
 
OpenCVとARCoreで作るスタンプAR in 宮崎
OpenCVとARCoreで作るスタンプAR in 宮崎 OpenCVとARCoreで作るスタンプAR in 宮崎
OpenCVとARCoreで作るスタンプAR in 宮崎
Takashi Yoshinaga
 
LINE Developer Community: Microsoft AI を楽しく使おう
LINE Developer Community: Microsoft AI を楽しく使おうLINE Developer Community: Microsoft AI を楽しく使おう
LINE Developer Community: Microsoft AI を楽しく使おう
Ayako Omori
 
シルバーウィークにfacebookアプリを作成した
シルバーウィークにfacebookアプリを作成したシルバーウィークにfacebookアプリを作成した
シルバーウィークにfacebookアプリを作成した
Shinichi Hirauchi
 
Flashup 11
Flashup 11Flashup 11
Flashup 11
Katsushi Suzuki
 
ノンプログラミングで始める AR 開発入門
ノンプログラミングで始める AR 開発入門ノンプログラミングで始める AR 開発入門
ノンプログラミングで始める AR 開発入門
Takashi Yoshinaga
 
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜
Yusuke SAITO
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
Tsutomu Ogasawara
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
Yoichiro Sakurai
 
No4
No4No4
Unityのポストエフェクトで遊ぶ!
Unityのポストエフェクトで遊ぶ!Unityのポストエフェクトで遊ぶ!
Unityのポストエフェクトで遊ぶ!
Yamato Honda
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
Issei Hiraoka
 
ようこそ! Swift Playgroundsへ
ようこそ! Swift Playgroundsへようこそ! Swift Playgroundsへ
ようこそ! Swift Playgroundsへ
KinkumaDesign
 
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk
Shozo Okada
 
AWS SUMMIT TOKYO 2012 - BASCULE SESSION
AWS SUMMIT TOKYO 2012 - BASCULE SESSIONAWS SUMMIT TOKYO 2012 - BASCULE SESSION
AWS SUMMIT TOKYO 2012 - BASCULE SESSION
Mariko Nishimura
 
[AWS Summit 2012] 事例セッション #2 Bascule Meets AWS! クラウドが加速させる デジタルクリエイションの世界
[AWS Summit 2012] 事例セッション #2 Bascule Meets AWS! クラウドが加速させる デジタルクリエイションの世界[AWS Summit 2012] 事例セッション #2 Bascule Meets AWS! クラウドが加速させる デジタルクリエイションの世界
[AWS Summit 2012] 事例セッション #2 Bascule Meets AWS! クラウドが加速させる デジタルクリエイションの世界
Amazon Web Services Japan
 
デブサミ2015「実践!クロスプラットフォーム モバイルアプリ開発」
デブサミ2015「実践!クロスプラットフォーム モバイルアプリ開発」デブサミ2015「実践!クロスプラットフォーム モバイルアプリ開発」
デブサミ2015「実践!クロスプラットフォーム モバイルアプリ開発」
アシアル株式会社
 
20110212 Silverlight から Bing Maps に触れる
20110212 Silverlight から Bing Maps に触れる20110212 Silverlight から Bing Maps に触れる
20110212 Silverlight から Bing Maps に触れる
Kenji Wada
 
Web技術ではじめようAR/VRアプリ開発
Web技術ではじめようAR/VRアプリ開発Web技術ではじめようAR/VRアプリ開発
Web技術ではじめようAR/VRアプリ開発
Takashi Yoshinaga
 

Similar to AI x WebAR! MediaPipeの顔認識を使ってみよう! (20)

OpenCVで作るスタンプAR
OpenCVで作るスタンプAROpenCVで作るスタンプAR
OpenCVで作るスタンプAR
 
HTML5でできるカメラアプリを実際に体験しよう
HTML5でできるカメラアプリを実際に体験しよう HTML5でできるカメラアプリを実際に体験しよう
HTML5でできるカメラアプリを実際に体験しよう
 
OpenCVとARCoreで作るスタンプAR in 宮崎
OpenCVとARCoreで作るスタンプAR in 宮崎 OpenCVとARCoreで作るスタンプAR in 宮崎
OpenCVとARCoreで作るスタンプAR in 宮崎
 
LINE Developer Community: Microsoft AI を楽しく使おう
LINE Developer Community: Microsoft AI を楽しく使おうLINE Developer Community: Microsoft AI を楽しく使おう
LINE Developer Community: Microsoft AI を楽しく使おう
 
シルバーウィークにfacebookアプリを作成した
シルバーウィークにfacebookアプリを作成したシルバーウィークにfacebookアプリを作成した
シルバーウィークにfacebookアプリを作成した
 
Flashup 11
Flashup 11Flashup 11
Flashup 11
 
ノンプログラミングで始める AR 開発入門
ノンプログラミングで始める AR 開発入門ノンプログラミングで始める AR 開発入門
ノンプログラミングで始める AR 開発入門
 
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
 
No4
No4No4
No4
 
Unityのポストエフェクトで遊ぶ!
Unityのポストエフェクトで遊ぶ!Unityのポストエフェクトで遊ぶ!
Unityのポストエフェクトで遊ぶ!
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 
ようこそ! Swift Playgroundsへ
ようこそ! Swift Playgroundsへようこそ! Swift Playgroundsへ
ようこそ! Swift Playgroundsへ
 
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk
 
AWS SUMMIT TOKYO 2012 - BASCULE SESSION
AWS SUMMIT TOKYO 2012 - BASCULE SESSIONAWS SUMMIT TOKYO 2012 - BASCULE SESSION
AWS SUMMIT TOKYO 2012 - BASCULE SESSION
 
[AWS Summit 2012] 事例セッション #2 Bascule Meets AWS! クラウドが加速させる デジタルクリエイションの世界
[AWS Summit 2012] 事例セッション #2 Bascule Meets AWS! クラウドが加速させる デジタルクリエイションの世界[AWS Summit 2012] 事例セッション #2 Bascule Meets AWS! クラウドが加速させる デジタルクリエイションの世界
[AWS Summit 2012] 事例セッション #2 Bascule Meets AWS! クラウドが加速させる デジタルクリエイションの世界
 
デブサミ2015「実践!クロスプラットフォーム モバイルアプリ開発」
デブサミ2015「実践!クロスプラットフォーム モバイルアプリ開発」デブサミ2015「実践!クロスプラットフォーム モバイルアプリ開発」
デブサミ2015「実践!クロスプラットフォーム モバイルアプリ開発」
 
20110212 Silverlight から Bing Maps に触れる
20110212 Silverlight から Bing Maps に触れる20110212 Silverlight から Bing Maps に触れる
20110212 Silverlight から Bing Maps に触れる
 
Web技術ではじめようAR/VRアプリ開発
Web技術ではじめようAR/VRアプリ開発Web技術ではじめようAR/VRアプリ開発
Web技術ではじめようAR/VRアプリ開発
 

More from Takashi Yoshinaga

ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
Takashi Yoshinaga
 
iPad LiDARで エンジニアカフェを3Dスキャン
iPad LiDARでエンジニアカフェを3DスキャンiPad LiDARでエンジニアカフェを3Dスキャン
iPad LiDARで エンジニアカフェを3Dスキャン
Takashi Yoshinaga
 
MRTKをNreal Lightに対応させてみた
MRTKをNreal Lightに対応させてみたMRTKをNreal Lightに対応させてみた
MRTKをNreal Lightに対応させてみた
Takashi Yoshinaga
 
Nreal Lightハンズオン
Nreal LightハンズオンNreal Lightハンズオン
Nreal Lightハンズオン
Takashi Yoshinaga
 
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン
Takashi Yoshinaga
 
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
Takashi Yoshinaga
 
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現
Takashi Yoshinaga
 
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介
Takashi Yoshinaga
 
Voxon Photonics VX1 で遊んでみた
Voxon Photonics VX1で遊んでみたVoxon Photonics VX1で遊んでみた
Voxon Photonics VX1 で遊んでみた
Takashi Yoshinaga
 
コロナ禍中のコミュニティ活動
コロナ禍中のコミュニティ活動コロナ禍中のコミュニティ活動
コロナ禍中のコミュニティ活動
Takashi Yoshinaga
 
Project HoloBox
Project HoloBoxProject HoloBox
Project HoloBox
Takashi Yoshinaga
 
AR Fukuoka紹介2020
AR Fukuoka紹介2020AR Fukuoka紹介2020
AR Fukuoka紹介2020
Takashi Yoshinaga
 
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020iPad LiDARで作ってみた in AR Fukuoka 忘年会2020
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020
Takashi Yoshinaga
 
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
Takashi Yoshinaga
 
OSC2020 Fukuoka: インストールいらず、WebAR入門
OSC2020 Fukuoka: インストールいらず、WebAR入門OSC2020 Fukuoka: インストールいらず、WebAR入門
OSC2020 Fukuoka: インストールいらず、WebAR入門
Takashi Yoshinaga
 
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVR
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVROculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVR
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVR
Takashi Yoshinaga
 
Spatial Copy & Paste @HoloLensゆるっとLT会
Spatial Copy & Paste @HoloLensゆるっとLT会Spatial Copy & Paste @HoloLensゆるっとLT会
Spatial Copy & Paste @HoloLensゆるっとLT会
Takashi Yoshinaga
 
エンジニアカフェ1周年イベント:WebAR/VR開発入門
エンジニアカフェ1周年イベント:WebAR/VR開発入門エンジニアカフェ1周年イベント:WebAR/VR開発入門
エンジニアカフェ1周年イベント:WebAR/VR開発入門
Takashi Yoshinaga
 
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
Takashi Yoshinaga
 
[Netlify版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ
[Netlify版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ[Netlify版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ
[Netlify版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ
Takashi Yoshinaga
 

More from Takashi Yoshinaga (20)

ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
 
iPad LiDARで エンジニアカフェを3Dスキャン
iPad LiDARでエンジニアカフェを3DスキャンiPad LiDARでエンジニアカフェを3Dスキャン
iPad LiDARで エンジニアカフェを3Dスキャン
 
MRTKをNreal Lightに対応させてみた
MRTKをNreal Lightに対応させてみたMRTKをNreal Lightに対応させてみた
MRTKをNreal Lightに対応させてみた
 
Nreal Lightハンズオン
Nreal LightハンズオンNreal Lightハンズオン
Nreal Lightハンズオン
 
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン
 
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
 
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現
 
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介
 
Voxon Photonics VX1 で遊んでみた
Voxon Photonics VX1で遊んでみたVoxon Photonics VX1で遊んでみた
Voxon Photonics VX1 で遊んでみた
 
コロナ禍中のコミュニティ活動
コロナ禍中のコミュニティ活動コロナ禍中のコミュニティ活動
コロナ禍中のコミュニティ活動
 
Project HoloBox
Project HoloBoxProject HoloBox
Project HoloBox
 
AR Fukuoka紹介2020
AR Fukuoka紹介2020AR Fukuoka紹介2020
AR Fukuoka紹介2020
 
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020iPad LiDARで作ってみた in AR Fukuoka 忘年会2020
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020
 
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
 
OSC2020 Fukuoka: インストールいらず、WebAR入門
OSC2020 Fukuoka: インストールいらず、WebAR入門OSC2020 Fukuoka: インストールいらず、WebAR入門
OSC2020 Fukuoka: インストールいらず、WebAR入門
 
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVR
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVROculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVR
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVR
 
Spatial Copy & Paste @HoloLensゆるっとLT会
Spatial Copy & Paste @HoloLensゆるっとLT会Spatial Copy & Paste @HoloLensゆるっとLT会
Spatial Copy & Paste @HoloLensゆるっとLT会
 
エンジニアカフェ1周年イベント:WebAR/VR開発入門
エンジニアカフェ1周年イベント:WebAR/VR開発入門エンジニアカフェ1周年イベント:WebAR/VR開発入門
エンジニアカフェ1周年イベント:WebAR/VR開発入門
 
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
 
[Netlify版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ
[Netlify版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ[Netlify版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ
[Netlify版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ
 

Recently uploaded

MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 

Recently uploaded (16)

MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 

AI x WebAR! MediaPipeの顔認識を使ってみよう!