Nginxをリバースプロキシに設定して速度を計測しました。
(アプリ -> Nginx -> unicorn -> 糖度推定)
処理速度は10秒ほどで、アプリケーションサーバー単体よりも0.5ほど遅くなりました。
・今後の予定
画像サイズを小さくして速度を計測していきます。
現時点で画像サイズが70KBほどまで小さくしているので、プログラム側に問題がないか調べていきます。
Nginxをリバースプロキシに設定して速度を計測しました。
(アプリ -> Nginx -> unicorn -> 糖度推定)
処理速度は10秒ほどで、アプリケーションサーバー単体よりも0.5ほど遅くなりました。
・今後の予定
画像サイズを小さくして速度を計測していきます。
現時点で画像サイズが70KBほどまで小さくしているので、プログラム側に問題がないか調べていきます。
サーバーにリバースプロキシとしてNginxを導入する作業に取りかかっています。
終わり次第、Swift側でアップロードする画像を推定結果に影響がないくらいに圧縮していきます。
研究の優先順位を検討しました。
最初は桃の糖度推定アプリの処理速度を改善させるために、サーバーの設定や構成を見直したいと思います。
現在はアプリケーションサーバーのuvicornに直接HTTPリクエストを行なっているので、NginxなどのWebサーバーにHTTPリクエストをしてからアプリケーションサーバーに受け渡す構成にして処理速度が上がるかなどを試してみたいと思います。
サーバー側で特にやれることがなかったら、アップロードする画像サイズを小さくしてどのくらい推定精度が保てるか確認したいと思います。
修士論文の方向性を検討しました。
昨年度の研究を継続する予定です。
内容は、対応する果物・野菜を増やすことや、アプリで撮影した果物を分類する機能などを追加するなどです。
検討している内容(今後優先順位などを検討)
・果物の種類を増やす
・学習画像の背景から果物のみを抽出
・ファインチューニングの手法を検討
・アプリの処理速度改善
・アプリで撮影した果物を分類する機能
・撮影した果物の領域を自動で抽出する機能
・アプリのリアルタイム性を高める
また、研究室見学会のポスターを作成しました。
アプリの評価実験をしました。
背景が段ボールと緑色のシートのデータでファインチューニングをしたモデルを組み込んで実験しました。
以下はモデル自体の評価と、アプリで出力された結果を使って評価をした場合の比較です。
↓モデル自体の評価
↓アプリの評価
MAEが0.3、RMSEが0.2ほど下がっていますが、大体同じくらいの結果になりました。
アプリの処理速度は平均で9.97秒でした。
①ファインチューニングについて
ファインチューニング用プログラムに変更を加えました。
ヒストグラムを前もって抽出して入力するように変更したところ、学習にかかる時間が大幅に短縮されました。
(1エポック7分ほど)
去年のモデルに対して、背景が段ボールと緑色の画像・平均値化した糖度を入力してファインチューニングした学習履歴のグラフです(20エポックまで)。
評価結果です。
入力データのうち学習に使用していないデータ288件をテストデータとして入力して評価しました。
概ね去年のモデルと近い数値になりました。
引き続き他のモデルの学習も行っていきます。
①アプリについて
ローカルで端末から送った画像と推論結果(CSV形式で保存)を、サーバー側からAWSのストレージ(S3)に保存する仕組みを作りました。
また、端末から画像を送信してから結果画面が表示されるまでの処理速度を測定するプログラムを組みました。
処理時間もS3に送るようにしてからAWSのサーバー上で動くか確認して、評価実験を進めていきます。
①アプリ制作
アプリのデザインを整えました。
結果画面はまだ完成していないので、送信した画像を表示させて、表示された推定糖度がどの程度の甘さなのかの説明を加えていきます。
↓トリミングの動きについて
↓現時点での結果画面
②ファインチューニング用のデータ準備
ファインチューニング用に、記録しておいた糖度の平均値を計算しました。
また、ファインチューニングに使う画像を水増ししました。
今後は桃の領域検出の値を調整し、ファインチューニングを行なっていきます。
iPhoneで撮影した写真をトリミングする処理を追加しました。
現在はアプリの画面デザインを考えている途中なので、引き続きアプリ制作を続けます。
また、今週からは水増し画像の準備など、ファインチューニングの準備を進めていきます。
引き続きアプリ制作を進めました。
以下、実装した機能です。
・iPhoneで写真を撮る
↓
・撮った画像をサーバーに送る
↓
・推定結果を受け取る
↓
・糖度を表示する
今後は写真を撮った後にトリミングをする機能を実装して、画面のデザインを整えていきます。
①API
FastAPIで糖度を推定するAPIを作りました。
送られてきた画像からヒストグラムの抽出と画像の調整をしてから糖度推定を行っています。
作成したAPIをAWSのEC2でデプロイしました。
アプリケーションサーバーにはuvicornを使っていて、Webサーバーは導入していないので、今後Nginxなどを試してみます。
動かしてみた画像です。
糖度が帰ってきています。
Macのターミナルからcurlコマンドを打っても値が帰ってきました。
②フロント
Swiftから画像をPOSTして糖度を取得するプログラムを作成しています。
Alamofireというライブラリを使ってHTTP通信を行なっていましたが、値にnilが帰ってきてしまうため、別の方法を試しています。