====== 201106_TensorFlow ====== [[ml:index.html|機械学習の記事 2020年版]] [[ml:201116_tfjs-express-netlify|201116 TensorFlow.jsアプリ(express利用)をnetlifyにデプロイ]] ===== リンク ===== https://i-doctor.sakura.ne.jp/font/?p=45117 Microsoftの機械学習アプリLobe(beta版)でリンゴとみかんを分類するWEBアプリ作成を試してみる(6)Windows10にTensorFlow.jsの環境構築とDEMOアプリのNetlifyへのデプロイ 2020年11月12日 [[ml:201116_tfjs-express-netlify|201116 TensorFlow.jsアプリ(express利用)をnetlifyにデプロイ]] ===== モデルの保存 ===== TensorFlowで保存できるモデルの形式は2つ -SavedModel -HDF5 Loabでエクスポートされるモデルの形式は ''%%TensorFlow 1.15 SavedModel%%'' SavedModelは、以下のような構成である。 -assets -saved_model.pb -variables {{ :ml:img_20201106_173736.jpg |}} https://www.tensorflow.org/tutorials/keras/save_and_load?hl=ja 公式マニュアル モデルの保存と復元 https://www.tensorflow.org/guide/saved_model?hl=ja SavedModel形式の使用 https://www.tensorflow.org/js/tutorials/conversion/import_saved_model?hl=ja TensorFlow SavedModelから、 TensorFlow.jsが読み込める形式への変換 ===== TensorFlow.jsのDemoをローカル環境で試してみる ===== -nvm-windowsのインストール。zipファイルをダウンロードしてインストール -Node.js ''%%nvm list available, nvm install 14.15.0, nvm use 14.15.0%%'' -yarn ''%%npm install -g yarn%%'' -C:/python/フォルダに、https://github.com/tensorflow/tfjs/tree/master/tfjs-converter/demo/mobilenet のtfjs-converter/以下をダウンロードする -tfjs-converter/ フォルダをVSCodeで開く -cd demo # If not already in the demo directory. -yarn # Installs dependencies. -yarn mobilenet # Starts a web server and opens a page. Also watches for changes. -Chromeで開く -サーバを停止(Ctrl+Cかな?) -npm i -D webpack webpack-cli -package.jsonの変更 "scripts": { "build": "webpack" },→これで、npm run build を使用できるようになる -webpack.config.jsをカスタマイズする -npm i -D webpack webpack-cli webpack-dev-server -package.jsonのscriptsのところに、"start": "webpack serve" を追加 -webpack.config.jsにdevServerを追加 -npm run startでサーバを立ち上げる -GitHubにpush -Netlifyにデプロイ(npm run build, dist) module.exports = { // メインとなるJavaScriptファイル(エントリーポイント) entry: `./demo/index.js`, // ファイルの出力設定 output: { // 出力ファイルのディレクトリ名 path: `${__dirname}/dist`, // 出力ファイル名 filename: "main.js" }, // モード値を production に設定すると最適化された状態で、 // development に設定するとソースマップ有効でJSファイルが出力される mode: "development" // ローカル開発用環境を立ち上げる // 実行時にブラウザが自動的に localhost を開く devServer: { contentBase: "dist", open: true } }; ===== Node.js ===== nvm-windows https://github.com/coreybutler/nvm-windows/releases/tag/1.1.7 https://qiita.com/akuden/items/a88630de9624039c4135 @akuden 2018年10月15日 nvm-windowsでNode.jsバージョン管理 https://qiita.com/rapando/items/6e9d891789b9a652c318 @rapando 2020年09月12日に更新 nvm-windows 導入 https://i-doctor.sakura.ne.jp/font/?p=38104 nvm-windowsでnodejsのバージョンを上げる(Windows10) 2019年5月12日 npm install -g yarn Webpack https://ics.media/entry/12140/ 最新版で学ぶwebpack 5入門 JavaScriptのモジュールバンドラ 2020年10月12日 メンテナンス済み / 株式会社ICS 池田 泰延 https://qiita.com/soarflat/items/3e43368b2d767c730781 @soarflat 2020年10月27日に更新 Parcel 入門 ~Parcelはwebpackの代わりになるのか~ ===== TensorFlow.js ===== ステップ1.既存のTensorFlowモデルをTensorFlow.jsウェブ形式に変換する pipenv install tensorflowjs pipenv shell tensorflowjs_wizard # 対話的にtf_saved_modelからtfjs_graph_modelへのconversionを実行、または以下を入力 tensorflowjs_converter \ --input_format=tf_saved_model \ --output_format=tfjs_graph_model \ --signature_name=serving_default \ --saved_model_tags=serve \ /mobilenet/saved_model \ /mobilenet/web_model コンバーターが生成したファイル 上記の変換スクリプトは、2種類のファイルを生成します。 -model.json (データフローグラフとウェイトマニフェスト) -group1-shard\*of\* (バイナリウェイトファイルのコレクション) ステップ2:ブラウザーでのロードと実行 Windowsであれば、 -nvm-windowsのインストール -Node.jsをインストール -使用するNode.jsを指定 -yarnをインストール の後、 yarn add @tensorflow/tfjs または npm install @tensorflow/tfjs モデルを読み込み、推論するコード import * as tf from '@tensorflow/tfjs'; import {loadGraphModel} from '@tensorflow/tfjs-converter'; const MODEL_URL = 'model_directory/model.json'; const model = await loadGraphModel(MODEL_URL); const cat = document.getElementById('cat'); model.execute(tf.browser.fromPixels(cat)); https://github.com/tensorflow/tfjs/tree/master/tfjs-converter/demo/mobilenet MobileNet デモ https://github.com/tensorflow/tfjs/tree/master/tfjs-converter tf_saved_model 変換前 tfjs_graph_model 変換後 Convert a TensorFlow SavedModel to TensorFlow.js graph model format. Use tf.loadGraphModel() to load the converted model in JavaScript. tf.loadGraphModel() https://js.tensorflow.org/api/1.0.0/#loadGraphModel https://www.tensorflow.org/js/tutorials/conversion/import_saved_model TensorFlow GraphDefベースのモデルをTensorFlow.jsにインポートする https://qiita.com/kwashi/items/12d2dfe653699ccfe3f4 @kwashi 2020年02月19日 【tensorflowjs_converter】TensorflowのモデルをTensorflow.jsの形式へ変換する方法 http://developers.goalist.co.jp/entry/keras-to-production 2019-5-16 kerasのモデルをデプロイする手順 https://note.com/npaka/n/nc3f24021c6e9 TensorFlow GraphDefモデルをTensorFlow.jsにインポートする npaka 2020/04/26 20:17 https://qiita.com/iwatake2222/items/0092b4b95ed2bc50c9ce @iwatake2222 2020年01月25日 Deep Learningアプリケーション開発 (8) TensorFlow.js {{:ml:pasted:20201111-223713.png}} https://note.com/npaka/n/ndb93d6d41210#wXEM8 TensorFlow.js 入門 / 画像分類 npaka 2020/05/11 18:50 https://book.mynavi.jp/manatee/detail/id=99768 2018.11.05 機械学習で遊ぼう! APIサービスやTensorFlowを使ったサンプルレシピ集 第16回 TensorFlow.jsで「じゃんけん」を判別してみよう ポンダッド(著者) https://github.com/PonDad/manatee/tree/master/1_sign_language_digits_classification-master TensorFlow.jsで「じゃんけん」を判別してみよう (ソースコード) https://js.tensorflow.org/api/latest/#model {{:ml:pasted:20201115-083256.png}} https://book.mynavi.jp/manatee/detail/id=99768 {{:ml:pasted:20201115-083640.png}} https://www.petitmonte.com/python/tensorflow_js_hello_world.html TensorFlow.jsのHello World [WebでAIモデルを実行する] 20180824 →model.execute をalertで表示している。tf.tidy()関数はメモリリーク対策なので気にせずコピペでよさそう。 // tf.tidyはメモリリークを回避する為に使用する定型メソッドです。 z = tf.tidy(function(){ // モデルの推論 return model.execute({"X/Placeholder": tf.scalar(5, 'int32')}).dataSync(); }) alert(z) https://stackoverflow.com/questions/63985396/what-do-i-use-instead-of-tensor-datasync-to-get-the-predicted-value-in-tensorf tf.dataSync() ===== jQuery ===== https://webllica.com/jquery-innerhtml-edit-get-add-del/ ボタンクリックでテキスト書き換え document.getElementById("") innerHTML() ===== ローカルでTensorFlow.jsを動かして特定の画像001.jpgを推定する流れ ===== -pipenv install tensorflowjs でtensorflowjsをインストール -pipenv shell -LoabでエクスポートされたモデルTensorFlow 1.15 SavedModelをtfjs_graph_model 形式に変換する -tfjs_graph_model 形式のモデルのファイル群を/tfjs_model/ フォルダに保存する -具体的には、tensorflowjs_wizard により、対話的に、tf_saved_modelからtfjs_graph_modelへのconversionを実行 -nvm-windowsのインストールとnpmのインストール -yarnのインストール -yarn add @tensorflow/tfjs -VisualStudioCodeの以下のextensionをインストール, Debugger for Chrome, Live Server, 必要に応じてESLint, HTMLHint, IntelliSense for CSS class name in HTML -test.htmlの作成 -リンゴの画像を001.jpgという名前で保存 - test.html 訂正中 Test TensorFlow.js

https://codeaid.jp/vscode-js-debug/ Visual Studio CodeでJavaScriptのデバッグ方法 2020年3月5日 Vscodeの拡張機能で -Debugger for Chrome -Live Server をインストール webpack https://ics.media/entry/12140/ 最新版で学ぶwebpack 5入門 JavaScriptのモジュールバンドラ 2020年10月12日 メンテナンス済み / 株式会社ICS 池田 泰延 ===== index.html 変更中 ===== original code from https://qiita.com/iwatake2222/items/0092b4b95ed2bc50c9ce Test TensorFlow.js

===== Lobeで出力したモデルをTensorFlow.js形式に変換してNetlifyにデプロイする流れ ===== 開発環境 Windows10 Pro VisualStudioCode 1.51.0 Git for Windows v2.29.2 python 3.6 pip 20.2.4 pipenv 2020.11.4 (仮想環境) python 3.6 TensorFlow 1.15.3 pillow 7.2.0 autopep8 flake8 mypy nvm-windows Node.js yarn -pipenv install tensorflowjs でtensorflowjsをインストール -pipenv shell -Loabでエクスポートされたモデル -TensorFlow 1.15 SavedModelをtfjs_graph_model 形式に変換する -具体的には、tensorflowjs_wizard により、対話的に、tf_saved_modelからtfjs_graph_modelへのconversionを実行 ===== Express ===== https://prog-8.com/docs/nodejs-new-application Node.jsの新規アプリケーションを作ろう! ===== Glitch ===== https://qiita.com/yonedaco/items/569bcc442872a1f9a03d @yonedaco 2020年03月18日に更新 [Node.js] 無料で簡単にウェブアプリを公開できるサービス「Glitch」を使ってみた! ===== リンク ===== [[ml:index.html|機械学習の記事 2020年版]] [[ml:201116_tfjs-express-netlify|201116 TensorFlow.jsアプリ(express利用)をnetlifyにデプロイ]]