仮想環境の作成 pipenv --three
仮想環境を有効にする pipenv shell
仮想環境を無効にする exit
パッケージのインストール pipenv install [name]
venvの場合は、仮想環境実行中は、コマンド プロンプトの先頭に (.venv) と表示されるが、pipenvの場合は?
https://www.python.jp/install/windows/install.html
Windows版Pythonのインストール
https://qiita.com/youkidkk/items/b674e6ace96eb227cc28
@youkidkk
2020年05月04日に更新
Windows + Python + PipEnv + Visual Studio Code でPython開発環境
https://qiita.com/KRiver1/items/c1788e616b77a9bad4dd
@KRiver1
2019年09月12日に更新
pyenv、pyenv-virtualenv、venv、Anaconda、Pipenv。私はPipenvを使う。
→pipenvに決定
https://qiita.com/psychoroid/items/2c2acc06c900d2c0c8cb
@psychoroid
2018年11月06日
VSCodeのPython開発環境でpylintの代わりにflake8を導入し自動整形を設定する
→autopep8とblackがあるらしいが、とりあ、autopep8にしておく方針
https://www.kimoton.com/entry/20181223/1545540702
これで決まり!最強自動コード整形ツール3選!
https://qiita.com/tsu_0514/items/2d52c7bf79cd62d4af4a
@tsu_0514
2019年10月05日に更新
Blackできれいに自動整形!flake8とBlack導入と実行
https://www.macky-studio.com/entry/2019/07/04/152323
2019-07-04
【VS Code】BlackとFlake8を使ってきれいなPythonコードを書く!!
https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a
@y-tsutsu
2020年09月12日に更新
Pipenvを使ったPython開発まとめ
https://rinatz.github.io/python-book/ch04-05-pipenv/
ゼロから学ぶPython
pipenv
https://qiita.com/yniji/items/b1b20211846a5a9f189b
@yniji
2019年10月18日に更新
Python 環境構築いろいろ - Windows
https://qiita.com/rubytomato@github/items/fdfc0a76e848442f374e
@rubytomato@github
2020年05月15日に更新
WSL (Windows Subsystem for Linux)の基本メモ
https://www.atmarkit.co.jp/ait/spv/1903/18/news031.html
2019年3月18日
ITの教室:
【WSL入門】第1回 Windows 10標準Linux環境WSLを始めよう
===== pipenv =====
pipenv --python 3.6
pipenv install -r ./requirements.txt
pipenv update pip
https://docs.pipenv.org/basics/
Basic Usage of Pipenv
https://qiita.com/ShotaSuzuki-jr/items/daac5ff110dd2c796ef1
@ShotaSuzuki-jr
2020年10月22日
【pipenv】仮想環境の入り方
https://qiita.com/Yasshi840/items/c82cdd2810598eb16819
@Yasshi840
2020年08月12日
vscodeでpipenv使うと端末が勝手にpipenv環境内に入り込むの対処法
https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a
@y-tsutsu
2020年09月12日に更新
Pipenvを使ったPython開発まとめ
https://qiita.com/eduidl/items/c0e8256bb3a5a735d19c
@eduidl
2019年09月28日に更新
[Pipenv] uninstallよりcleanの方が多分便利
https://qiita.com/imasaaki/items/25694783ae50dd66303e
@imasaaki
2020年11月04日に更新
windowsでのpython開発環境構築例(wsl2, vscode, pipenv)
https://qiita.com/tokioto/items/0f9a1a38fe4c73c9a749
@tokioto
2020年06月04日
ちょっとよくわからないpipenvの使い方のまとめ(途中経過)
===== lobeでエクスポートした後にローカルでtf_example.pyを実行 =====
[[https://i-doctor.sakura.ne.jp/font/?p=44635|Microsoftの機械学習アプリLobe(beta版)でリンゴとみかんを分類するWEBアプリ作成を試してみる(1)LobeのインストールからTensorFlowモデルのエクスポートまで]]でエクスポートしたモデル
https://gist.github.com/adash333/ce7f4e9d904321092af5d8fda24cada2
{{ :ml:img_20201106_173736.jpg |}}
AppleOrange TensorFlowフォルダの中の、exampleフォルダにpython3.6の仮想環境を作成
python tf_example.py path/to/image/for/testing
-[[https://gist.github.com/adash333/ce7f4e9d904321092af5d8fda24cada2|tf_example.py]]を実行したい
-リンゴの画像を1個用意する001.jpg
-example/フォルダの中に001.jpgを保存
-example/フォルダ下で、pipenvでpython3.6仮想環境を作成''%%pipenv --python 3.6%%''
-[[https://gist.github.com/adash333/ce7f4e9d904321092af5d8fda24cada2|requirements.txt]]にはtensorflowとpillowが記載されている。これに従って、TensorFlow1.15.3とpillow7.2.0をインストール''%%pipenv install -r ./requirements%%''
-その他のパッケージ(autopep8,flake8,mypy)のインストール''%%pipenv install autopep8 flake8 mypy --dev%%''とVSCodeのWorkspaceの設定([[https://i-doctor.sakura.ne.jp/font/?p=44703#toc_id_10|外部リンク]])
-tf_example.pyを実行''%%python tf_example.py 001.jpg%%''
https://docs.python.org/ja/3/library/index.html
Python 標準ライブラリ
https://qiita.com/tkinjo1/items/bbcb77fb0f4b8fe79a81
@tkinjo1
2020年11月04日に更新
Lobeで学習したモデルをPythonで利用する方法
===== ローカル環境でFlaskでpredictする流れ =====
https://i-doctor.sakura.ne.jp/font/?p=20440
-C:/python/Lobe-Flask-AppleOrange フォルダを作成
-AppleOrangeモデルをダウンロードして中身をLobe-Flask-AppleOrange フォルダに保存
-pipenvでpython3.6仮想環境を作成''%%pipenv --python 3.6%%''
-TensorFlow1.15とpillow7.2.0をインストール''%%pipenv install example/requirements.txt%%''
-VSCodeのWorkspaceの作成とsettings.jsonの設定([[https://i-doctor.sakura.ne.jp/font/?p=44703#toc_id_10|外部リンク]])
-その他のパッケージ(autopep8,flake8,mypy)のインストール''%%pipenv install autopep8 flake8 mypy --dev%%''
-.gitignoreに追記([[https://qiita.com/youkidkk/items/b674e6ace96eb227cc28#-gitignore|外部リンク]])
-以降はFlaskアプリ作成
-result/、static/、templates/フォルダを作成
-templates/ フォルダの中に、index.htmlを作成([[https://recipe.narekomu-ai.com/2017/10/chainer_web_demo_2/|外部リンク]])
-Lobe-Flask-AppleOrange フォルダにpredict.pyを作成(これは考える必要あり。)([[https://github.com/adash333/lobe-AppleOrange-tf1model/blob/main/example/tf_example.py|tf_example.py]]、[[https://recipe.narekomu-ai.com/2017/10/chainer_web_demo_2/|外部リンク]]、https://i-doctor.sakura.ne.jp/font/?p=20440 )
-Flaskのインストール''%%pipenv install flask%%''
-python predict.py
-WEBブラウザで、localhost:5000 を開く
-predictしたい画像を用意して、WEBブラウザ上でpredictしてみる
# print("result:", result[0], "(0:りんご, 1:オレンジ)")
predict = result[0]
return render_template('index.html', filepath = filepath , predict = predict )
index.html([[https://recipe.narekomu-ai.com/2017/10/chainer_web_demo_2/|外部リンク]])
{% if predict %}
predict: {{predict}}
{% endif %}
ファイルを選択して送信してください
===== predict.py =====
以下のコードは修正が必要
#original code from Microsoft Corporation
# original code from https://recipe.narekomu-ai.com/2017/10/chainer_web_demo_2/
import argparse
import os
import json
import tensorflow as tf
from PIL import Image
import numpy as np
from flask import Flask, render_template, request, redirect, url_for
from datetime import datetime
import sys
MODEL_DIR = os.path.join(os.path.dirname(__file__))
class Model(object):
def __init__(self, model_dir=MODEL_DIR):
# make sure our exported SavedModel folder exists
model_path = os.path.realpath(model_dir)
if not os.path.exists(model_path):
raise ValueError(f"Exported model folder doesn't exist {model_dir}")
self.model_path = model_path
# load our signature json file, this shows us the model inputs and outputs
# you should open this file and take a look at the inputs/outputs to see their data types, shapes, and names
with open(os.path.join(model_path, "signature.json"), "r") as f:
self.signature = json.load(f)
self.inputs = self.signature.get("inputs")
self.outputs = self.signature.get("outputs")
# placeholder for the tensorflow session
self.session = None
def load(self):
self.cleanup()
# create a new tensorflow session
self.session = tf.compat.v1.Session(graph=tf.Graph())
# load our model into the session
tf.compat.v1.saved_model.loader.load(sess=self.session, tags=self.signature.get("tags"), export_dir=self.model_path)
def predict(self, image: Image.Image):
# load the model if we don't have a session
if self.session is None:
self.load()
# get the image width and height
width, height = image.size
# center crop image (you can substitute any other method to make a square image, such as just resizing or padding edges with 0)
if width != height:
square_size = min(width, height)
left = (width - square_size) / 2
top = (height - square_size) / 2
right = (width + square_size) / 2
bottom = (height + square_size) / 2
# Crop the center of the image
image = image.crop((left, top, right, bottom))
# now the image is square, resize it to be the right shape for the model input
if "Image" not in self.inputs:
raise ValueError("Couldn't find Image in model inputs - please report issue to Lobe!")
input_width, input_height = self.inputs["Image"]["shape"][1:3]
if image.width != input_width or image.height != input_height:
image = image.resize((input_width, input_height))
# make 0-1 float instead of 0-255 int (that PIL Image loads by default)
image = np.asarray(image) / 255.0
# create the feed dictionary that is the input to the model
# first, add our image to the dictionary (comes from our signature.json file)
feed_dict = {self.inputs["Image"]["name"]: [image]}
# list the outputs we want from the model -- these come from our signature.json file
# since we are using dictionaries that could have different orders, make tuples of (key, name) to keep track for putting
# the results back together in a dictionary
fetches = [(key, output["name"]) for key, output in self.outputs.items()]
# run the model! there will be as many outputs from session.run as you have in the fetches list
outputs = self.session.run(fetches=[name for _, name in fetches], feed_dict=feed_dict)
# do a bit of postprocessing
results = {}
# since we actually ran on a batch of size 1, index out the items from the returned numpy arrays
for i, (key, _) in enumerate(fetches):
val = outputs[i].tolist()[0]
if isinstance(val, bytes):
val = val.decode()
results[key] = val
return results
def cleanup(self):
# close our tensorflow session if one exists
if self.session is not None:
self.session.close()
self.session = None
def __del__(self):
self.cleanup()
#Flaskオブジェクトの生成
app = Flask(__name__)
#「/」へアクセスがあった場合
@app.route('/', methods = ['GET', 'POST'])
def upload_file():
if request.method == 'GET':
return render_template('index.html')
if request.method == 'POST':
# アプロードされたファイルを保存する
f = request.files['file']
filepath = "./static/" + datetime.now().strftime("%Y%m%d%H%M%S") + ".jpg"
f.save(filepath)
parser = argparse.ArgumentParser(description="Predict a label for an image.")
parser.add_argument("image", help="Path to your image file.")
args = parser.parse_args()
if os.path.isfile(args.image):
image = Image.open(args.image)
# convert to rgb image if this isn't one
if image.mode != "RGB":
image = image.convert("RGB")
# モデルを使って判定する
model = Model()
model.load()
outputs = model.predict(image)
predict = f"Predicted: {outputs}"
# print(f"Predicted: {outputs}")
else:
predict = f"Couldn't find image file {args.image}"
# print(f"Couldn't find image file {args.image}")
return render_template('index.html', filepath = filepath , predict = predict )
if __name__ == '__main__':
app.run(host="0.0.0.0", port=int("5000"),debug=True)
path = os.getcwd()
現在のディレクトリのパスを取得
https://note.nkmk.me/python-os-getcwd-chdir/
Pythonでカレントディレクトリを取得、変更(移動)
Posted: 2018-04-16
https://stackoverrun.com/ja/q/1997027
os.path.dirname(__file__) returns empty
https://www.atmarkit.co.jp/ait/spv/1910/25/news021.html
2019年10月25日
Python入門:
[Python入門]ディレクトリ操作の基本 (1/3)
https://note.nkmk.me/python-f-strings/
Pythonのf文字列(フォーマット済み文字列リテラル)の使い方
Posted: 2018-06-11
https://www.atmarkit.co.jp/ait/spv/1904/16/news013_2.html
2019年4月16日
Python入門:[Python入門]文字列の基本 (2/2)
https://www.sejuku.net/blog/23647
【Python入門】argparseでコマンドライン引数を使ってみよう!
長野 透
2020/5/8
→ argparseとはPythonの標準ライブラリのひとつで、コマンドライン引数を扱いやすくしてくれるモジュール
→ コマンドラインでなければ不要。
===== Flask =====
https://medium.com/analytics-vidhya/deploy-ml-tensorflow-model-using-flask-backend-frontend-12a38ce53b7f
Deploy ML tensorflow model using Flask(backend+frontend)
Hasan Haider
2020/16/8
https://qiita.com/kiyokiyo_kzsby/items/0184973e9de0ea9011ed
@kiyokiyo_kzsby
2019年06月29日に更新
Webアプリ初心者のFlaskチュートリアル
https://qiita.com/ynakayama/items/2cc0b1d3cf1a2da612e4
@ynakayama
2019年01月28日に更新
ウェブアプリケーションフレームワーク Flask を使ってみる
https://i-doctor.sakura.ne.jp/font/?p=20440
Kerasで自前データで機械学習した成果をWEBで公開(Keras+Flask)(1)
2017年10月25日
===== FlaskアプリをHerokuにデプロイする流れ =====
-ローカルのプロジェクトフォルダをVSCodeで開き、Workspaceを開く
-gunicornのインストール ''%%pipenv install gunicorn%%''
-predict.pyの最後の行が、host="0.0.0.0"となっていることを確認
-仮想環境を起動''%%pipenv shell%%''
-''%%pip freeze > requirements.txt%%''
-Procfileというファイルを作成し、以下を入力''%%web: gunicorn app:app --log-file -%%''
-runtime.pyというファイルを作成し、以下を入力''%%python-3.6.8%%''
-
-Herokuに登録(signup)https://signup.heroku.com/
-Heroku-CLIのインストールhttps://devcenter.heroku.com/articles/heroku-cli
-バージョン確認''%%heroku --version%%''
-Herokuにログイン''%%heroku login%%''
-ブラウザが立ち上がるのでログインをクリック
-プロジェクトフォルダ下で''%%heroku create%%''
-Herokuのダッシュボードhttps://dashboard.heroku.com/ にに行き、さきほど作ったプロジェクトをクリック
-Deployment methodをGitHubを選択し、『Connect to GitHub』をクリック
-Herokuにデプロイしたいプロジェクトを選択
-『Manual deploy』の『Deploy Branch』を押してみる。エラーがでなければok
-エラーがでなければ『Enable automatic deploys』を押す
-デプロイ先を確認
===== Heroku =====
https://qiita.com/NOGU626/items/d127215a4d14a81c3a62
@NOGU626
2020年10月25日に更新
Heroku入門、Flaskアプリをデプロイ
https://note.com/on_bass/n/n0495484a2b2b
【Windows10】HerokuのCLIダウンロードからデプロイまで
なつめ
2019/04/15 16:53
https://techacademy.jp/magazine/26403
herokuを利用したPythonアプリケーションのデプロイ方法を現役エンジニアが解説【初心者向け】
https://qiita.com/ahpjop/items/e333eaf304dcdd72d886
@ahpjop
2019年09月05日に更新
【完全版】Flaskで作ったAPIをHerokuにデプロイする手順(備忘録)
https://tanuhack.com/deploy-flask-heroku/
HerokuにFlaskアプリ(hello world)をデプロイする方法まとめ
2019年9月30日
https://i-doctor.sakura.ne.jp/font/?p=20570
Kerasで自前データで機械学習した成果をWEBで公開(Keras+Flask)(2)「FlaskアプリをHerokuで公開」
2017年10月28日
https://qiita.com/chihiro/items/5c3ff400f6cb99deb945
@chihiro
2019年08月28日に更新
【herokuコマンド】createからdestroyまで
===== herokuで古いバージョンのpipがインストールされてしまう =====
私の場合は勝手に
Installing pip 9.0.2, setuptools 47.1.1 and wheel 0.34.2
となってしまう。
https://www.reddit.com/r/Heroku/comments/hqkyrv/how_do_i_change_the_version_of_pip/?utm_source=amp&utm_medium=&utm_content=post_body
https://www.reddit.com/r/Heroku/comments/a2irq6/pip_upgrade_not_working_on_heroku/?utm_source=amp&utm_medium=&utm_content=post_body
http://5.9.10.113/64679676/cant-deploy-mysqlclient-on-heroku-via-pipfile-lock
https://stackoverflow.com/questions/64679676/cant-deploy-mysqlclient-on-heroku-via-pipfile-lock
https://stackoverrun.com/ja/q/11644217
wheel ?
----
Simply replace the tensorflow==1.0.0 line in your requirements.txt with https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0-cp27-none-linux_x86_64.whl
----
https://www.tensorflow.org/install/pip?hl=ja#virtual-environment-install
やっと見つけた?
https://pypi.org/project/tensorflow/1.15.3/#files
Filename, size
tensorflow-1.15.3-cp36-cp36m-manylinux2010_x86_64.whl (110.5 MB)
https://files.pythonhosted.org/packages/02/36/9a02e27f0ec248b676a380ffe910c1858e3af3027c0d4d513dd0b56a5613/tensorflow-1.15.3-cp36-cp36m-manylinux2010_x86_64.whl
requirements.txtの
tensorflow==1.15.3
を
https://files.pythonhosted.org/packages/02/36/9a02e27f0ec248b676a380ffe910c1858e3af3027c0d4d513dd0b56a5613/tensorflow-1.15.3-cp36-cp36m-manylinux2010_x86_64.whl
に書き換えたら、うまくいった。
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.15.3-cp36-cp36m-manylinux2010_x86_64.whl
→okのよう
===== Tensorflow.js =====
Lobeで出力したTensorFlowのモデルと、
TensorFlow.js用のモデルは別物とのこと。
https://qiita.com/kwashi/items/12d2dfe653699ccfe3f4
@kwashi
2020年02月19日
【tensorflowjs_converter】TensorflowのモデルをTensorflow.jsの形式へ変換する方法
https://qiita.com/studio_haneya/items/00311534d6fc9a32b570
@studio_haneya
2020年02月14日
TensorFlow.jsを使ってjavascript上でkerasモデルを使う
https://qiita.com/kazuhitoyokoi/items/e4da2dc1c39c0a11569e
@kazuhitoyokoi
2020年07月22日
TensorFlow.jsノードをNode-REDで使ってみる
https://techblog.exawizards.com/entry/2018/11/01/174122
Tensorflow.jsを用いたブラウザで動く物体認識
https://blog.dcs.co.jp/deep-learning/keras.html
Kerasで作成したディープラーニングモデルをブラウザ上で動かしてみた
2020年1月16日 深層学習
→難しいか?
https://qiita.com/sasaco/items/9c7a4e247710ed747dbd
@sasaco
2020年05月15日に更新
Tensorflow.Keras で学習したモデルをtensorflow.jsで使う
→Colab、Angularを使用。
https://qiita.com/kwashi/items/35883352bf3f07e4253b
@kwashi
2020年02月19日に更新
はじめてのTensorflow.js
https://note.com/npaka/n/ndb93d6d41210
TensorFlow.js 入門 / 画像分類
npaka
2020/05/11
===== 見出し =====
[[ml:index.html|機械学習の記事 2020年版]]