本日、コンピュータビジョン勉強会@関東を「深層学習+3D論文読み会」というテーマで、深層学習で三次元を扱うならなんでもありという論文読み会をキャディ株式会社様の会場を借りて、オンラインとのハイブリッドで開催いたしました。 (結果、1件を除きすべてがNeRFがテーマでした。)
というわけで、資料やリンク等をまとめておきます。
本日、コンピュータビジョン勉強会@関東を「深層学習+3D論文読み会」というテーマで、深層学習で三次元を扱うならなんでもありという論文読み会をキャディ株式会社様の会場を借りて、オンラインとのハイブリッドで開催いたしました。 (結果、1件を除きすべてがNeRFがテーマでした。)
というわけで、資料やリンク等をまとめておきます。
FastAPIはPythonで簡単にAPIサーバーが立てられるライブラリです。
今回これを利用して、HTTP POSTで送られた画像になんらかの認識処理をかけて、結果をjsonで返すようなプログラムを書いたのでメモしておきます。 その際、送られてきた画像はOpenCVで処理してます。
FastAPIはuvicornというASGI(Asynchronous Server Gateway Interface)サーバーを使用しています。ASGIが何かはとりあえず知らなくても良いです。
他に、opencvやnumpyなどもインストールします。
$ pip install fastapi $ pip install "uvicorn[standard]" $ pip install python-multipart $ pip install numpy $ pip install opencv-python
ここでは単純に画像を受け取って、ローカルにpng形式で保存し、そのファイル名と画像サイズをjsonで返すプログラムを書きました。
以下のコードをmain.pyというファイルに記載します。
from fastapi import FastAPI, UploadFile, File, Form from fastapi.responses import HTMLResponse import cv2 import numpy as np import os # FastAPIのインスタンス生成 app = FastAPI() # Http Postの処理 # 送付されてきた画像をフォーマットを指定して保存 @app.post("/api") async def save_img(file:UploadFile = File(...), format:str=Form()): try: if file: #画像をメモリ上へ読み込み data = await file.read() #バイナリへ変換 array = np.fromstring(data, np.uint8) #画像へ変換(OpenCV) img = cv2.imdecode(array, flags=cv2.IMREAD_COLOR) # ファイル名の拡張子を指定フォーマットのものへ変更 basename, _ = os.path.splitext(file.filename) savename = basename + "." + format # 画像を保存(フォーマットはOpenCVが拡張子で判断) cv2.imwrite(savename, img) # 応答 response = {"save filename":savename, "image size": str(img.shape)} return response except Exception as e: print(e) # Top Page (Http Get) # Formを表示 @app.get("/") async def main(): content = """ <body> <form action="/api" enctype="multipart/form-data" method="post"> <input name="file" type="file" /> <br/> <select name="format"> <option value="jpg">jpg</option> <option value="png">png</option> <option value="bmp">bmp</option> </select> <input type="submit"/> </form> </body> """ return HTMLResponse(content=content)
以下のコマンドでサーバーを起動します。
$ uvicorn main:app --reload
main.pyのappというFastAPIオブジェクトが起動されます。
次に
へアクセスすると、以下のようなWebフォームが開きます。
ここで、ファイルを選択し、保存したいフォーマットを選択して「送信」ボタンを押すと、画像がHTTP Postで送信され、例えば以下のようなjsonを受け取ります。
{"save filename":"query.png","image size":"(1280, 871, 3)"}
FastAPIを起動したディレクトリ上に画像ファイルが指定フォーマットで保存されているのが確認できると思います。
本日久しぶりのオンサイトで、コンピュータビジョン勉強会@関東「ECCV2022読み会」を開催いたしました。 今回は恒例となりましたPRMU研究会との共催で、日本科学未来館にて行いました。 このような機会をいただき、大変ありがたいです。
というわけで、発表資料等諸々のリンクをまとめておきます。
前回に引き続き、関東、名古屋、関西のコンピュータビジョン勉強会合同で開催している全日本コンピュータビジョン勉強会「CVPR2022論文読み会」の後編を行いました。
前編はこちら
次回はPRMUとの共催で久しぶりにオンサイトで行う予定です。