MotoJapan's Tech-Memo

技術めも

2017-01-01から1年間の記事一覧

【flask】Replyヘッダーに「Access-Control-Allow-Origin」を追加する【お家IT#8】

本件の実装の一部 motojapan.hateblo.jp前回の続き motojapan.hateblo.jp目次 対策 参考資料 前回は、base64でバックエンドに画像を送信したが、次のエラーが表示れている。 XMLHttpRequest cannot load https://192.168.0.100:12345/hoge_image_processing.…

【Javascript to flask】base64で画像を送信/受信する方法 【お家IT#7】

本件の実装の一部 motojapan.hateblo.jp前回の続き motojapan.hateblo.jp目次 base64とは 送信側実装(Javascript) 受信側実装(python : flask) 参考資料 前々回、ChromeでWebカメラを起動/撮影した後、Canvasに書き出すところまで進めた。 前回は、Ajaxを利…

【Javascript to flask】FormDataを送信/受信する方法 【お家IT#6】

本件の実装の一部 motojapan.hateblo.jp前回の続き motojapan.hateblo.jp目次 送信側実装(Javascript) 受信側実装(python : flask) 対応関係 前回まででWebカメラで撮影した画像をCanvas領域にコピーするところまで終えた。 が、根本的にJavascript - python…

【flask】https対応Webサーバーをバックグランド実行する方法 【お家IT#5】

本件の実装の一部 motojapan.hateblo.jp前回の続き motojapan.hateblo.jp目次 標準入力をバックグラウンドで無視すると落ちる バックグラウンド実行対策 参考資料 標準入力をバックグラウンドで無視すると落ちる 前回 flaskをhttps化 (http over ssl)したが…

【flask】Webサーバーをhttps対応する方法 【お家IT#4】

本件の実装の一部 motojapan.hateblo.jp前回の続き motojapan.hateblo.jp目次 SSL対応の手順 秘密鍵を作成 秘密鍵から公開鍵を作成 デジタル証明書を作成 flask上でHTTPSサーバー起動 おまけ JavascriptからWebカメラを起動しようとしたら下記コードで怒られ…

【Javascript】Webカメラを起動&撮影する 【お家IT#3】

本件の実装の一部 motojapan.hateblo.jp カメラ起動 参考にした記事① 参考にした記事② カメラ撮影 Webアプリ上でHTML+JSでWebカメラを動作させたい。 私の場合、それほど特殊なWebカメラの使い方をするわけでもないし、こういった類の記事は山のようにあるの…

【お家IT#2】Webアプリと画像認識で家の食品名と賞味期限を簡単に登録したい(構想編)

下記記事の続きです。 motojapan.hateblo.jp 構想 Google Spreadsheetを探して、食品名と賞味期限を手入力するのは、実は結構めんどくさい。 なので、Webアプリ開発と画像認識の勉強も兼ねて、下のような構成を構想。 写真を撮影すると商品情報が取得でき、…

【Android】TensorFlow LiteのMobilenetサンプルコードをビルド&実機インストール・実行する方法と雑感 (Android Studio 3.0)

待ちに待っていたTensorFlow Liteが先日リリースされた。 Preview版ということでgithubに公開されていたので、触ってみた。 (そもそも本家GithubのTfLiteCameraDemo.apkというPre-build binaryのapkがエラーでインストールできない(17/11/18現在)) 本家…

初心者が学ぶP,NP,NP困難(Hard),NP完全(Complete)とは(わかりやすく解説)

(※訂正のため更新 18/4/23)論文を読んでいると言葉だけ出会うが、見なかったことにしている言葉なのでちゃんと知りたい。スタート:全く意味がわかっていないレベル ゴール:論文でその言葉の意味が掴めている状態 言葉の一般的な説明 P NP NP困難 (NP-Hard)…

【神価格】ビックカメラでMacbook Air 13 inch 新品を39,800円という激安で買った話と一週間使ってみて

([10/30 午後更新] 本記事ですが想像以上に反響があり、格安な物やサービス、ライフハックな情報を探したりすることが趣味なので、twitterフォローしてもらえればライフハック情報とかバーゲン、格安速報とかします。(twitterも使い道に困っていたので) そ…

【Raspberry Pi 3】sambaサーバーが接続できないときのハマリポイントまとめチェック

久しぶりにsambaを入れたらうまく動かないとか、ubuntu16.04ではsambaサーバーが動いていたのに、raspberry pi 3ではうまくいかないときのためのチェック項目 基本手順 インストール 設定変更 sambaを再起動 【チェック1】sambaが起動しているか確認する 【…

【iOS11 / CoreML】自作した回帰予測モデル(.mlmodel)の結果を得る実装方法 (Regression, VNCoreMLRequest)

iOS11がリリースされて3日経過したが、本家が提供するモデルはMobileNet、SqueezeNet、Places205-GoogLeNet、ResNet50、Inception v3と分類モデルが多く、サンプルコードも分類しか見つけられない。 なので、今回は回帰予測モデル(具体的には、1次元配列 :…

Linuxのジョブ/プロセス(jobs/process)関連のコマンドまとめ (起動、中断、終了、検索、ジョブ強制終了、ログアウト継続実行)

ubuntu/raspberry piでの開発で重宝しているコマンドを覚書 今回は、hoge.pyというスクリプトを例にとる プロセスを起動する方法 特定のプロセスを検索する方法 フォアグラウンドのプロセスを終了する方法 バックグランドのプロセスを終了する方法 ジョブを…

【お家IT#1】 googleスプレッドシートで管理した賞味期限リストをGASでメールで定期通知してみた

GAS(Google Apps Script)という、Google製サービス上で動くJavascript互換のスクリプトを初めて触ってみた。家の課題を解決するために。 課題:家の調味料や保存食の賞味期限がいつの間に切れていく やったこと 0.夫婦共有のスプレットシートを作る 1.スプレ…

【行動認識 #9】t-SNEをtensorboard(Embedding Visualization)で可視化

今回はtensorboardのEmbedding Visualization対応コードを実装し、センサーデータ入力にt-SNEを可視化してみた。センサー系の文脈ではこれの続き 【行動認識 #6】tensorflowでCAE(Convolutional Auto-Encoder)を実装してみた - MotoJapan's Tech-Memo行動認…

【行動認識 #8】OpenPoseのBodyParts推定をTensorFlowでCPU実行する方法 (Linux : Ubuntu 16.04 LTS)

OpenPoseのBodyParts推定をTensorFlowでCPU実行する方法について。(想定環境はUbuntu 16.04 LTS)どうしてもTensorFlowで動かしたい人はやってみてもいいかも。(そんな人いる?) 個人的にはTensorFlowのアーキテクチャの方が好きですが。OpenPoseの大枠を…

【行動認識 #7】OpenPoseのBodyParts推定をCPU実行してみた雑感

今回は、今年のCVPR2017でも報告されている何かと話題のOpenPoseの内、人体部位-BodyParts-推定をCPUで動かしてみた。下記のセンサー入力周りとは文脈が変わるが、画像から行動を特定するタスクもあるという点では関連性があるテーマなので今回取り扱う。 【…

【opencv 基礎知識 #5】透視投影変換行列に関連する関数まとめ (getPerspectiveTransform, calibrateCamera, warpPerspective, perspectiveTransform, undistort, remap)

忘れやすい透視投影変換行列周りの関数をメモ。(python) 1. 透視投影変換行列を求める方法 1.1. 台形補正の場合 [getPerspectiveTransform] 1.2. レンズ歪み補正の場合 [calibrateCamera] 2. 透視投影変換行列による変換方法 2.1. 画像を変換する [warpPersp…

【opencv 基礎知識 #4】動画の手ぶれ補正をpython実装 (AKAZE, KNN, RANSAC)

行動認識が多かったので、半日くらいで動画の手ぶれ補正を作ってみた。実装は数多あるので、そのうちコードをリファクタリングしたらGithubに載せようかと思う。 (すぐほしい人がいたら、コメントください)すぐ忘れることをメモ。 結果 動画の通り、チュー…

【行動認識 #6】tensorflowでCAE(Convolutional Auto-Encoder)を実装してみた

これの続き 【行動認識 #5】データ量別でCNNの性能差 - MotoJapan's Tech-Memo 今回はCAEの実装をしてみた。 CAEってなに? CAEとは、Convolutional Auto-Encoderの略で、次元削減/圧縮テクニックの1つである。 AE(Auto-Encoder)のConvolutional版ということ…

【行動認識 #5】データ量別でCNNの性能差

これの続き 【行動認識 #4】Subjectを考慮してCNN層数別で性能差を確認 - MotoJapan's Tech-Memo 学習データ量別で確認してみる。 概要 もともとの総データ数は、7344件。 7344件 ⇒ ( 7344 x 128 [samples] / 50 [Hz] ) + 0.5 [overwrap rate] ⇒ 2.6 [hour] …

【行動認識 #4】Subjectを考慮してCNN層数別で性能差を確認

これの続き 【行動認識 #3】機械学習/深層学習で人間行動認識 ~CNNしてみる~ - MotoJapan's Tech-Memo前回はtrainデータでSubject未考慮で精度を検証した。(trainデータ内) その精度は、93.43%今回はtrain/testのそれぞれを使って評価 加えて、Convoluti…

【行動認識 #3】機械学習/深層学習で人間行動認識 ~CNNしてみる~

これの続き 【行動認識 #2】機械学習/深層学習で人間行動認識 ~データ確認~ - MotoJapan's Tech-Memoやりたいことの1つでもあるtensorflowを使った。 結果 1. 精度 下記条件で検証して、精度としてはCNN(Convolutional Neural Network)で93.43%程度でた。…

【行動認識 #2】機械学習/深層学習で人間行動認識 ~データ確認~

この続き 【行動認識 #1】機械学習/深層学習で人間行動認識 ~事始め~ - MotoJapan's Tech-Memoデータセットは下記 UCI Machine Learning Repository: Human Activity Recognition Using Smartphones Data Setライセンスは次の通り。 This dataset is distr…

【行動認識 #1】機械学習/深層学習で人間行動認識 ~事始め~

人間行動認識 ( Human Activity Recognition ) の領域の話。 去年の3月頃にやっていたが途中になっていたこともあったので、追試も兼ねて再開。 (tensorflowの勉強もしたいし) 人間行動認識 ( Human Activity Recognition ) とは 私の認識では、カメラやセ…

【Linebot #3】家の温度をLineで通知するアプリ (BME280使用)

家の温度をサーバーに通知して、自分のスマホに通知したい。 でも開発は最小にしたいので、Linebotとして開発した。 サーバサイドのみの開発で済むしね。 忘れそうなことや注意点を書き残し。 主に、サーバーサイドとクライアントサイドのpython実装とかとか…

【Linebot #2】herokuでブックマークアプリを作ってみた

普段気になるURLをブックマークしているが、また見返すことなく、あっという間に埋もれてしまう。 なので、LINEアプリとしてメモも書けるブックマークアプリを作ってみた。 後々は、特定のアドレスに定期送信したり、Slackにnotifyしたり、傾向解析したりす…

【Linebot #1】windows8.1(local)とherokuでpostgreSQL環境構築 (psycopg2)

Linebotを最近書いているのですが、そろそろオウム返しbotだけだとつまらないので、データベースを組み込みたいなと。 もともとsqlite3を使っていたのですが、Herokuはsqliteが簡単に使えないことをdeploy時に気づき、やむなくpostgres対応を考えることに。…

【Messaging API #2】reply_messageで「request body has 1 error」が起きる (python)

herokuにdeployしていた下のコード。 ちゃんと動いていたはずのreply_messageがいつからかErrorを吐いて終了していたので覚書。変な文字列でも入れたのかと切り分けを進めたが、結果的には、contentsの文字列が長すぎた模様。 line_bot_api.reply_message( e…

【Messaging API #1】 クライアントのユーザID(user_id)とアカウント名(display_name)の取得方法 (python)

久しぶりにMessaging APIを使ってLinebotを書いてますが、メッセージを送信してきたクライアントのユーザIDとアカウント名の取得方法を忘れそうなので、書き残し。 クライアント側から「おはようございます」とpostすると、Webhookされたサーバーサイドのeve…