カテゴリー
未分類

卒研進捗 11/4

①デプロイについて

LambdaとAPI Gatewayを使って簡単なプログラムのデプロイを試しました。

Lambdaに則った記述ルールでは通信できたのですが、FastAPIを使ったときにうまくいきませんでした。

Lambdaでのデプロイに想定以上に手間取ってしまったため、デプロイにはGCEかAWSのEC2を使い、アプリ開発やファインチューニングが一通り済んだあとでLambdaでのデプロイを試したいと思います。

②FastAPI
現在はFastAPIを使ってAPIの中身を作っています。
モデルにMobileNetV2を使ったサンプルプログラムをローカルで実行しました。

桃の画像を入力すると、マッチ棒(10.82%)という結果が出ています。

このプログラムのモデルを桃の糖度推定モデルに置き換えてAPIを作成していきます。

また、中間発表では糖度を推定する機能のみを持たせるという説明をしましたが、フロントから画像だけを送った後にAPIでヒストグラムを抽出した方が作るのに時間がかからず処理もはやいと考えたため、構成を少し変えようと思います。

カテゴリー
未分類

卒研進捗10/21

swiftからJSONデータをPOSTするプログラムを組んで、HTTPリクエストとレスポンスを返してくれるサービス(https://httpbin.org/post)に送信して通信がうまくいっていることを確認しました。

また、PythonでSwiftから送られたJSONデータを受け取るプログラムを組んで、ローカルサーバーを用いてうまくいくかを確認したところ、502エラー(サーバーがリクエストを満たすのに必要な機能に対応していない)が出て確認ができませんでした。

その後、GCPで立てたサーバーを用いて確認しようとしたところ、Pythonの環境構築で手間取っています。

現在はGCPのGCE(Google Compute Engine)を使ってサーバーを立てているのですが、調べたところ、GAE(Google App Engine)を使用した方が環境構築が楽に済むらしいので、GAEを用いてAPIを作りたいと考えています。

APIの作成にあたって、現在はFastAPIをインストールしてローカルサーバーで動作の確認まで済ませたのですが、情報が少ないので、Pythonのフレームワークにはflaskを使用したいと考えています。

今週はこの構成で簡単なJSONデータを返すAPIが作れるかを試していきます。

(PythonのフレームワークをFastAPI、サーバーをAWSのlamda(ラムダ)で実装している記事が参考になりそうなので、詰まったらこちらも試してみます。
どちらにするかは中間発表会の練習(26日)までには決めます。)

カテゴリー
未分類

卒研進捗10/14

今週も引き続きアプリ制作について調べています。
GCPでサーバーを立てて簡単なウェブページを表示させました。

今週は簡単なプログラムを作ってSwiftとPythonを通信させる予定です。

カテゴリー
未分類

卒研進捗10/7

20個の桃を撮影して糖度を計測しました。

アプリ制作に取り掛かりました。
フロントエンドはswiftでバックエンドはpythonを使う予定です。
現在はGCPでwebサーバを構築しています。

今週は引き続きアプリ制作を行なっていきます。

カテゴリー
未分類

卒研進捗7/28

桃を6個購入しました。
現在は桃を敷き詰めた状態でデータをとっています。
カバーをかぶせた状態で、白色光と暖色光の写真を6方向から撮影しています。

引き続き桃の領域抽出を行いました。
HSVの値を使って検出する方法が難しかったので、エッジを検出して領域抽出をする方法を試しています。

手順
①平滑化
 バイラテラルフィルタorメディアンフィルタ

②グレースケール化してCanny関数でエッジ検出

③線が細かい部分を取り除き、上下左右に黒い領域を追加

④エッジの内側を塗りつぶす
 モルフォロジー変換でクロージング or drawContours関数で内側を塗りつぶす

⑤モルフォロジー変換で細かい部分を消して元の画像サイズにトリミング

⑥桃の領域を抽出

この方法だと、背景が黒い場合でも他の場合でもある程度桃の領域を抽出できそうです。
しかし、まだ黒い背景で8割、他で6割〜7割程度なので、閾値を調整しつつ、今まで行ってきたHSVを使った領域抽出を組み合わせて精度を上げたいと思います。

これからやること

今週はファインチューニングをしてみる予定でしたが、桃の領域抽出に時間を使ってしまい間に合いませんでした。
672枚の画像に対して水増しを行ったデータと、糖度をCSV形式にまとめたものを用意したので、今週はファインチューニングを優先的に行なっていきます。

カテゴリー
未分類

卒研進捗7/21

桃を10個追加しました。
背景が段ボールと緑色のデータを桃40個分用意したので、背景を桃で敷き詰めた画像のデータを集めていこうと考えています。

画像から桃の領域を抽出する作業をしました。
ファインチューニングがまだできていないので、精度が良くないですが600枚程の画像を追加してファインチューニングをしてみたいと思います。
↓いい感じのところ

↓よくないところ



カテゴリー
未分類

卒研進捗7/14

桃を12個購入しました。
引き続き撮影を続けていきます。
桃は合計41個購入しているので、あと20〜30個追加購入する予定です。

先週に引き続き桃の領域検出のための閾値を探しています。
とりあえず、
①背景が段ボールで白色光
②背景が緑色で白色光
③背景が段ボールで暖色光
④背景が緑色で暖色光
の4パターンに区切ってある程度桃の領域を検出しました。

その後、それぞれの閾値を用いて入力画像の桃以外の部分の色を黒(HSVの値を全て0)に変更し、((h > 140) | (h < 40)) & (s >= 1) & (v >= 1)の範囲でマスク処理をしました。

どの画像でも大まかに桃の領域が検出できてきているので、画像の枚数が多くても正しく検出ができるよう調整を続けていきます。去年の画像と今年の画像を合わせたデータで桃の領域が検出できたら、EfficientNetを用いてファインチューニングをしてみたいと思います。


カテゴリー
未分類

卒研進捗7/7

今週は先週の続きで桃の領域を検出する作業をしていました。

引き継いだプログラムを参考にして、背景が黒い桃の領域を検出しました。

背景が黒以外の桃をうまく検出できる閾値を探しています。
パターンは以下の4つに分けて考えています。
①背景が段ボールで白色光
②背景が緑色で白色光
③背景が段ボールで暖色光
④背景が緑色で暖色光

カテゴリー
未分類

卒研進捗6/30

桃を15個購入しました。
引き続きデータを収集していきます。

ファインチューニングについては、まずはEfficientNetを使い去年の桃のデータに今年の桃のデータを追加して行おうと考えています。

そのため、新しく追加する背景が段ボールとグリーンバックの画像で桃の矩形が検出できているかを確認する作業をしています。
引き継いだプログラムの一部を元に矩形が検出できているかの確認しようとしましたが、背景が黒の画像でもうまくいかないので元のプログラムの理解を深めて引き続き桃の矩形が正しく検出できているかの確認を行なっていきます。

↓入力画像

↓読み込んだ際のBGR画像

↓変換後のHSVイメージ

↓(H < 40 OR 140 < H)AND(S > 50)AND(V > 70)を白くした後の画像(真っ黒)

↓コード

カテゴリー
未分類

卒研進捗6/23

桃を10個購入して撮影しています。
カメラの色調補正の件ですが、証明を近づけて撮影することである程度目で見た色に近づけることができました。

撮影の他にデータの水増し用のプログラムを作りました。
ライブラリは本田さんが使用していたalbumentationsというライブラリを使い、画像処理の値も本田さんの論文に書いている値を参考にしました。
元画像と反転画像に対して、ぼかし・ノイズ・ガンマ補正・拡大をそれぞれ行い画像を10倍にしました。
したの画像は反転と拡大の例です。

今後は引き続き桃の撮影を行います。
また、ファインチューニングについて調べて実装していきたいと思います。