実装は難しい
今回、技術プロジェクトの実装について感じたことを話しましょう。もともと、こんなプロジェクトをプロトタイプを作成する予定です。
ユーザーはわかない単語があれば、指先で指差すとその単語の意味を表示できるプロトタイプです。
最初の計画とは:
ステップ1. AIの手振りモデルで指先を認識する
ステップ2. 指先の近くにある単語をOCRモデルで認識する
ステップ3. 認識した単語を辞書に入れて意味を取る
ステップ4. 上の意味をユーザーのスマホの画面もしくはユーザーのLineに表示する
また、実装する環境の順番はマイコンボードを集中するつもりでした。最初ハードウェアを購入して待っていた時間はパソコンをテストしました。
ただ、実装する時、苦い現実と感じました。
壁1:プログラミング言語
ステップ1(手振りモデル)を実装するために、mediapipeというライブラリーを使いました。mediapipeはウェブもマイコンもパソコンもスマホもサポートしていると読みました。ただ、このライブラリーのプログラミング言語はC++です。C++はすごい言語なのに、なぜC++なら、怖いと感じたかというと、コンピューターの近くて、人間の遠い言語なので、細かいことばかりです。PythonやJavascriptに比べると、簡単なことをやりたい(例えば:あるウェブにリクエストを通信すること)のに、ひどい時間かかります。それはPythonとJavascriptが人気がある言語になる理由の一つです。
それで、2日ぐらいC++を勉強してもわからないことが多すぎで、進めなかったです。幸いなことに、Pythonでのmediapipeの使い方を見つけました。一旦ステップ1はできました。ステップ2に続けましょう。
壁2:カメラの品質
ステップ2を実施するために、画像の品質は大事です(画像の中にあるテキストが見やすいことは大事)。ただ、うちのウェブカメラのテキストの画像は人間でも認識できない状態でした。購入したマイコンはいいカメラも含めるなので、マイコンに移動しましょう。
壁3:CPUのアーキテクチャ
まず、マイコンに同じ環境(mediapipeなど)をインストールすることが必要なんです。ただ、ラズパイというマイコンのCPUはARMというアーキテクチャです。パソコンはx86アーキテクチャです。その原因で、pythonのmediapipeはインストールできなかったでした。C++を使わないといけないです。
苦い現実
どすればいいのか?もう一度、うちのウェブカメラをチェックした時、画像の品質が悪い理由はカメラの焦点のせいです。焦点を変更すると、人間はテキストを認識できる画像を取れました。ただ、OCRでできませんでした。
解決方法はカメラを本の近くに移動します。だとすれば、全部手を画像に入れませんでした。そうすると、手振りモデルも指先を認識できませんでした。
今、上の問題を解決しています。手振りモデルではなく、指先認識モデルを作って使うつもりです。
最後に
実装は本当に難しすぎでしょうね。ただ、ある程度面白いだと思います。
この記事が気に入ったらサポートをしてみませんか?