기분에 맞춘 향기를 추천! 얼굴 표정에서 감정을 읽고 최적의 아로마 오일을 LINE으로 보냅니다!
12490 단어 얼굴 인식TeachableMachineml5기계 학습
이름 붙여 「향기 추천 시스템」!!
제작에 이른 이유
나는 "향기"를 좋아하고 아로마 오일과 향, 시샤 등을 잘 이용하고 있습니다.
거기서, 자신의 감정에 맞추어 「향기」를 추천해 주는 서비스가 있으면 좋다고 생각하고 있었습니다.
하지만 좀처럼 그런 서비스는 없어. 이번에는 프로토 타입을 만들려고 생각했습니다.
사용한 서비스
Teachable Machine
Integromat
사용한 라이브러리
ml5
axsios
기계 학습
이번에는 Teachable Machine을 이용하여 “웃는 얼굴”, 분노”, “피로”, “슬픔”이라는 감정을 각 500장씩 학습을 시키고 있습니다.
코드 전문
Face-Aroma.html<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Face-Aroma</title>
</head>
<body>
<h1>気分に合わせた香りをおススメ</h1>
<div id="console_log"></div>
<video id="myvideo" width="640" height="480" muted autoplay playsinline></video>
<script src="https://unpkg.com/ml5@latest/dist/ml5.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
// 作成したモデルのURL
const imageModelURL = 'https://teachablemachine.withgoogle.com/models/XXXXXXX/';
console.log = function (log) {
document.getElementById('console_log').innerHTML = log;
}
async function main() {
// カメラからの映像取得
const stream = await navigator.mediaDevices.getUserMedia({
audio: false,
video: true,
});
// IDが"myvideo"であるDOMを取得
const video = document.getElementById('myvideo');
// videoにカメラ映像をセット
video.srcObject = stream;
// 自作モデルのロード
classifier = ml5.imageClassifier(imageModelURL + 'model.json', video, () => {
// ロード完了
console.log('Model Loaded!');
});
// 分類処理を連続的に行う
function onDetect(err, results) {
if (results[0]) {
console.log(results[0].label);
if (results[0].label === '笑顔') {
// storytelling 関数実行
face1();
}
if (results[0].label === '怒り') {
face2();
}
if (results[0].label === '疲れ') {
face3();
}
if (results[0].label === '悲しみ') {
face3();
}
}
classifier.classify(onDetect);
}
classifier.classify(onDetect);
}
// 引数に送りたいメッセージを入れる
async function sendWebhook(message) {
// Integromatに送る
try {
// 取得したIntegromatのWebhookURL
const res = await axios.get(`https://hook.integromat.com/XXXXXXXXXXXXXXX?message=${message}`);
console.log(res.data);
} catch (err) {
console.error(err);
}
}
function face1(){
sendWebhook('幸せでハッピー。そんなときのおすすめの香りは「ローズ」、「ネロリ」です!');
}
function face2(){
sendWebhook('イライラしてしまう。そんなときのおすすめの香りは「サイプレス」、「ローマンカモミール」です!');
}
function face3(){
sendWebhook('お疲れですね。そんなときのおすすめの香りは「レモン」、「ペパーミント」です!');
}
function face4(){
sendWebhook('あなたは頑張っていますよ。今日のおすすめの香りは「ラベンダー」、「ローズマリー」です!');
}
// 実行
main();
</script>
</body>
</html>
마지막으로
이번 추천의 아로마라고 판정한 감정은 1:1 대응으로 LINE으로 보내고 있었습니다만, 각 감정 중에도 몇개의 후보를 준비해 랜덤으로 송신하는 것 같은 구조도 실장하고 싶었습니다.
업데이트를 도모해 나가려고 합니다!
참고 기사
딸을 만날 수 없는 날도 자신의 목소리로 그림책을 읽을 수 있도록 했다. 기계 학습 입문.
코드, LINE 제휴 등 참고로 했습니다.
Reference
이 문제에 관하여(기분에 맞춘 향기를 추천! 얼굴 표정에서 감정을 읽고 최적의 아로마 오일을 LINE으로 보냅니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/YujiMachida/items/b6a4e00c4ec98842aafb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Teachable Machine
Integromat
사용한 라이브러리
ml5
axsios
기계 학습
이번에는 Teachable Machine을 이용하여 “웃는 얼굴”, 분노”, “피로”, “슬픔”이라는 감정을 각 500장씩 학습을 시키고 있습니다.
코드 전문
Face-Aroma.html<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Face-Aroma</title>
</head>
<body>
<h1>気分に合わせた香りをおススメ</h1>
<div id="console_log"></div>
<video id="myvideo" width="640" height="480" muted autoplay playsinline></video>
<script src="https://unpkg.com/ml5@latest/dist/ml5.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
// 作成したモデルのURL
const imageModelURL = 'https://teachablemachine.withgoogle.com/models/XXXXXXX/';
console.log = function (log) {
document.getElementById('console_log').innerHTML = log;
}
async function main() {
// カメラからの映像取得
const stream = await navigator.mediaDevices.getUserMedia({
audio: false,
video: true,
});
// IDが"myvideo"であるDOMを取得
const video = document.getElementById('myvideo');
// videoにカメラ映像をセット
video.srcObject = stream;
// 自作モデルのロード
classifier = ml5.imageClassifier(imageModelURL + 'model.json', video, () => {
// ロード完了
console.log('Model Loaded!');
});
// 分類処理を連続的に行う
function onDetect(err, results) {
if (results[0]) {
console.log(results[0].label);
if (results[0].label === '笑顔') {
// storytelling 関数実行
face1();
}
if (results[0].label === '怒り') {
face2();
}
if (results[0].label === '疲れ') {
face3();
}
if (results[0].label === '悲しみ') {
face3();
}
}
classifier.classify(onDetect);
}
classifier.classify(onDetect);
}
// 引数に送りたいメッセージを入れる
async function sendWebhook(message) {
// Integromatに送る
try {
// 取得したIntegromatのWebhookURL
const res = await axios.get(`https://hook.integromat.com/XXXXXXXXXXXXXXX?message=${message}`);
console.log(res.data);
} catch (err) {
console.error(err);
}
}
function face1(){
sendWebhook('幸せでハッピー。そんなときのおすすめの香りは「ローズ」、「ネロリ」です!');
}
function face2(){
sendWebhook('イライラしてしまう。そんなときのおすすめの香りは「サイプレス」、「ローマンカモミール」です!');
}
function face3(){
sendWebhook('お疲れですね。そんなときのおすすめの香りは「レモン」、「ペパーミント」です!');
}
function face4(){
sendWebhook('あなたは頑張っていますよ。今日のおすすめの香りは「ラベンダー」、「ローズマリー」です!');
}
// 実行
main();
</script>
</body>
</html>
마지막으로
이번 추천의 아로마라고 판정한 감정은 1:1 대응으로 LINE으로 보내고 있었습니다만, 각 감정 중에도 몇개의 후보를 준비해 랜덤으로 송신하는 것 같은 구조도 실장하고 싶었습니다.
업데이트를 도모해 나가려고 합니다!
참고 기사
딸을 만날 수 없는 날도 자신의 목소리로 그림책을 읽을 수 있도록 했다. 기계 학습 입문.
코드, LINE 제휴 등 참고로 했습니다.
Reference
이 문제에 관하여(기분에 맞춘 향기를 추천! 얼굴 표정에서 감정을 읽고 최적의 아로마 오일을 LINE으로 보냅니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/YujiMachida/items/b6a4e00c4ec98842aafb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 Teachable Machine을 이용하여 “웃는 얼굴”, 분노”, “피로”, “슬픔”이라는 감정을 각 500장씩 학습을 시키고 있습니다.
코드 전문
Face-Aroma.html<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Face-Aroma</title>
</head>
<body>
<h1>気分に合わせた香りをおススメ</h1>
<div id="console_log"></div>
<video id="myvideo" width="640" height="480" muted autoplay playsinline></video>
<script src="https://unpkg.com/ml5@latest/dist/ml5.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
// 作成したモデルのURL
const imageModelURL = 'https://teachablemachine.withgoogle.com/models/XXXXXXX/';
console.log = function (log) {
document.getElementById('console_log').innerHTML = log;
}
async function main() {
// カメラからの映像取得
const stream = await navigator.mediaDevices.getUserMedia({
audio: false,
video: true,
});
// IDが"myvideo"であるDOMを取得
const video = document.getElementById('myvideo');
// videoにカメラ映像をセット
video.srcObject = stream;
// 自作モデルのロード
classifier = ml5.imageClassifier(imageModelURL + 'model.json', video, () => {
// ロード完了
console.log('Model Loaded!');
});
// 分類処理を連続的に行う
function onDetect(err, results) {
if (results[0]) {
console.log(results[0].label);
if (results[0].label === '笑顔') {
// storytelling 関数実行
face1();
}
if (results[0].label === '怒り') {
face2();
}
if (results[0].label === '疲れ') {
face3();
}
if (results[0].label === '悲しみ') {
face3();
}
}
classifier.classify(onDetect);
}
classifier.classify(onDetect);
}
// 引数に送りたいメッセージを入れる
async function sendWebhook(message) {
// Integromatに送る
try {
// 取得したIntegromatのWebhookURL
const res = await axios.get(`https://hook.integromat.com/XXXXXXXXXXXXXXX?message=${message}`);
console.log(res.data);
} catch (err) {
console.error(err);
}
}
function face1(){
sendWebhook('幸せでハッピー。そんなときのおすすめの香りは「ローズ」、「ネロリ」です!');
}
function face2(){
sendWebhook('イライラしてしまう。そんなときのおすすめの香りは「サイプレス」、「ローマンカモミール」です!');
}
function face3(){
sendWebhook('お疲れですね。そんなときのおすすめの香りは「レモン」、「ペパーミント」です!');
}
function face4(){
sendWebhook('あなたは頑張っていますよ。今日のおすすめの香りは「ラベンダー」、「ローズマリー」です!');
}
// 実行
main();
</script>
</body>
</html>
마지막으로
이번 추천의 아로마라고 판정한 감정은 1:1 대응으로 LINE으로 보내고 있었습니다만, 각 감정 중에도 몇개의 후보를 준비해 랜덤으로 송신하는 것 같은 구조도 실장하고 싶었습니다.
업데이트를 도모해 나가려고 합니다!
참고 기사
딸을 만날 수 없는 날도 자신의 목소리로 그림책을 읽을 수 있도록 했다. 기계 학습 입문.
코드, LINE 제휴 등 참고로 했습니다.
Reference
이 문제에 관하여(기분에 맞춘 향기를 추천! 얼굴 표정에서 감정을 읽고 최적의 아로마 오일을 LINE으로 보냅니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/YujiMachida/items/b6a4e00c4ec98842aafb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Face-Aroma</title>
</head>
<body>
<h1>気分に合わせた香りをおススメ</h1>
<div id="console_log"></div>
<video id="myvideo" width="640" height="480" muted autoplay playsinline></video>
<script src="https://unpkg.com/ml5@latest/dist/ml5.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
// 作成したモデルのURL
const imageModelURL = 'https://teachablemachine.withgoogle.com/models/XXXXXXX/';
console.log = function (log) {
document.getElementById('console_log').innerHTML = log;
}
async function main() {
// カメラからの映像取得
const stream = await navigator.mediaDevices.getUserMedia({
audio: false,
video: true,
});
// IDが"myvideo"であるDOMを取得
const video = document.getElementById('myvideo');
// videoにカメラ映像をセット
video.srcObject = stream;
// 自作モデルのロード
classifier = ml5.imageClassifier(imageModelURL + 'model.json', video, () => {
// ロード完了
console.log('Model Loaded!');
});
// 分類処理を連続的に行う
function onDetect(err, results) {
if (results[0]) {
console.log(results[0].label);
if (results[0].label === '笑顔') {
// storytelling 関数実行
face1();
}
if (results[0].label === '怒り') {
face2();
}
if (results[0].label === '疲れ') {
face3();
}
if (results[0].label === '悲しみ') {
face3();
}
}
classifier.classify(onDetect);
}
classifier.classify(onDetect);
}
// 引数に送りたいメッセージを入れる
async function sendWebhook(message) {
// Integromatに送る
try {
// 取得したIntegromatのWebhookURL
const res = await axios.get(`https://hook.integromat.com/XXXXXXXXXXXXXXX?message=${message}`);
console.log(res.data);
} catch (err) {
console.error(err);
}
}
function face1(){
sendWebhook('幸せでハッピー。そんなときのおすすめの香りは「ローズ」、「ネロリ」です!');
}
function face2(){
sendWebhook('イライラしてしまう。そんなときのおすすめの香りは「サイプレス」、「ローマンカモミール」です!');
}
function face3(){
sendWebhook('お疲れですね。そんなときのおすすめの香りは「レモン」、「ペパーミント」です!');
}
function face4(){
sendWebhook('あなたは頑張っていますよ。今日のおすすめの香りは「ラベンダー」、「ローズマリー」です!');
}
// 実行
main();
</script>
</body>
</html>
이번 추천의 아로마라고 판정한 감정은 1:1 대응으로 LINE으로 보내고 있었습니다만, 각 감정 중에도 몇개의 후보를 준비해 랜덤으로 송신하는 것 같은 구조도 실장하고 싶었습니다.
업데이트를 도모해 나가려고 합니다!
참고 기사
딸을 만날 수 없는 날도 자신의 목소리로 그림책을 읽을 수 있도록 했다. 기계 학습 입문.
코드, LINE 제휴 등 참고로 했습니다.
Reference
이 문제에 관하여(기분에 맞춘 향기를 추천! 얼굴 표정에서 감정을 읽고 최적의 아로마 오일을 LINE으로 보냅니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/YujiMachida/items/b6a4e00c4ec98842aafb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(기분에 맞춘 향기를 추천! 얼굴 표정에서 감정을 읽고 최적의 아로마 오일을 LINE으로 보냅니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/YujiMachida/items/b6a4e00c4ec98842aafb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)