Рубрики
Без рубрики

Заставьте ваш характер, который скрещивает животное, реагировать на ваши жесты с помощью машинного обучения

Обзор по обучению моделей в обучаемой машине Google, чтобы узнать наши жесты, мы могли бы … Tagged с помощью машинного обучения, API, Python, Luctireed.

Обучающими моделями в Google Обучаемая машина Чтобы узнать наши жесты, мы могли бы Поверните руки или сделайте лицо Чтобы отправить соответствующую команду реакции API Animal Crossing.

Приложение NSO на телефоне позволяет нам отправлять команды реакции в игру. Используя инструмент под названием mitmproxy Мы могли бы знать, какие запросы отправляются с нашего телефона, и имитировать команду реакции.

brew install mitmproxy

Или использовать PIP установить mitmproxy Анкет

Запустить mitmproxy

mitmproxy

Или, если вы предпочитаете веб -интерфейс запустить Mitmweb.

mitmweb

Установите сертификат MITMProxy на свой телефон

С вашим телефоном, подключенным к тому же Интернету, что и ваш компьютер, посетите http://mitm.it/ и установите сертификат. В настройках Интернета на вашем телефоне добавьте ручный прокси, который указывает на IP -адрес вашего компьютера.

Проверка IP -адреса на вашем Mac

Настройка ручного прокси

Скачать сертификат на http://mitm.it

О> Настройках доверия сертификата> Включить сертификат

Отправка запросов через приложение Nintendo Switch

Теперь запустите приложение NSO по телефону и поиграйте с приложением Animal Crossing. Вы должны увидеть данные запроса вашего телефона через терминал MITMProxy. Мы можем начать выяснять формат запроса реакции, отправив их с нашего телефона.

Конечная точка запроса для обмена сообщениями и реакции – API/SD/V1/Сообщения Анкет Нажмите на него, и вы должны увидеть файлы cookie и формировать данные этого запроса.

Данные сообщения являются следующими.

{
  "body": "Smiling",
  "type": "emoticon"
}

Совет : Press Q В терминале MITMProxy для возвращения в список запросов.

Это некоторые из типов реакций, которые я собрал: Здравствуйте, приветствуйте, Happyflower, негатив, извиняйтесь, ага, вопросник …

Список значений реакции

Примечание: у меня сейчас нет всех реакций в моей игре. Было бы здорово, если бы кто -то мог предоставить другие значения реакции!

Доступ к API Nintendo Switch требует, чтобы сделать несколько запросов на сервер Nintendo с токеном аутентификации. Полный учебник:

Intro to Nintendo Switch REST API

Мэтью Чан ・ 17 ноября 2020 года. читать

Успешная аутентификация даст нам три значения:

  • _g_token печенье
  • _park_session печенье
  • Аутентификация носителя токен
import requests

user_auth_app_head = {
    'Host': 'web.sd.lp1.acbaa.srv.nintendo.net',
    'User-Agent': 'Mozilla/5.0 (Linux; Android 7.1.2; Pixel Build/NJH47D; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/59.0.3071.125 Mobile Safari/537.36',
    'Accept': 'application/json, text/plain, */*',
    'Connection': 'keep-alive',
    'Referer': 'https://web.sd.lp1.acbaa.srv.nintendo.net/?lang=en-US&na_country=US&na_lang=en-US',
    'Authorization' : 'tmp',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-us'
}

def sendReaction(reaction_value):
    data = {
        'body': reaction_value,
        'type': 'emoticon'
    }
    res = post_AC_NSOJSON(user_auth_app_head, data, 'https://web.sd.lp1.acbaa.srv.nintendo.net/api/sd/v1/messages')
    if res is not None:
        if 'status' in res:
            if res['status'] == 'success':
                return 'Reaction sent!'
        elif 'code' in res:
            if res['code'] == '4102':
                refresh_tokens()
                return sendReaction(reaction_value)
            if res['code'] == '3002':
                return 'Reaction not found'
            if res['code'] == '1001':
                return 'Animal Crossing Session Not Connected'
    return res

def post_AC_NSOJSON(header, body, url):
  h = header
  h['Authorization'] = 'Bearer ' + tokens['ac_b']
  pcookie = {}
  pcookie['_gtoken'] = tokens['ac_g']
  pcookie['_park_session'] = tokens['ac_p']
  r = requests.post(url, headers=h, cookies=pcookie, json=body)
  thejson = json.loads(r.text)
  return thejson

Проверьте и посмотрите, работает ли это:)

sendReaction('Aha')

Google Обучаемая машина Это простой в использовании онлайн-инструмент для обучения моделей для распознавания вашей речи, фото и видео. Если вы новичок в машинном обучении, я настоятельно рекомендую посмотреть 5 -минутный учебник Google Анкет

Сначала создайте Поза проекта Анкет

Выберите Веб -камера Для образцов позы. Назовите свой первый класс нейтральный и записывайте себя без каких -либо жестов. Затем добавьте дополнительные классы, такие как хлопок или размахивание. Вы можете быть настолько креативным, насколько хотите.

Когда вы закончите, нажмите на поезд. Когда обучение будет завершено, вы можете проверить модель на панели предварительного просмотра. Как только вы удовлетворены, нажмите Экспортная модель Над панелью предварительного просмотра и загрузите модель TensorFlow.

Мы можем использовать предоставленное Tensorflow.js Пример сценария Для простого пользовательского интерфейса. Скопируйте пример сценария в пустой HTML -файл и обслужите его через node.js.

npm install http-server -g
cd my-pose-model
http-server 

Вставьте наш звонок API в прогноз () функция Конечная точка API должна направить на наш сервер Python для отправки реакции.

const confidence = 0.8; // Confidence range is 0 to 1

async function predict() {
  ...
  const prediction = await model.predict(posenetOutput);
  for (let i = 0; i < maxPredictions; i++) {
    const classPrediction = prediction[i].className + ": " + prediction[i].probability.toFixed(2);
    // Insert the API call here
    if (prediction[i].probability > confidence) { 
      callReaction(prediction[i].className);
    }
    labelContainer.childNodes[i].innerHTML = classPrediction;
  }
  // finally draw the poses
  drawPose(pose);
};

let clapping = 0;
const threshold = 5; // number of times of detection to run API
async function callReaction(predictionClassName) {
  if (predictionClassName == 'Clapping') {
    clapping += 1
    if (clapping > threshold) {
      fetch('https://myapi.com/?reaction=Clapping');  // Change to your own API endpoint
      clapping = 0; // reset for threshold
    }
  }
}

Будьте креативны и получайте удовольствие!

  • Обратный инженер частных API с MITMProxy
  • Отправить запросы API с помощью Python
  • Используйте обучаемую машину Google для прототипирования ML

Настройка MITMProxy на MacOS для перехвата HTTPS запросов

Оригинал: “https://dev.to/mathewthe2/doing-animal-crossing-reactions-with-gestures-in-teachable-machine-1h8m”