Closed kyakuno closed 1 year ago
作業手順は下記を参考にしてください。 https://github.com/axinc-ai/ailia-models-tflite/issues/30
基本的に #30 を参考に実施
mo.py
を用いてIR形式へ変換feature/add_hrnet
で作業中@kyakuno
もし同じ経験がありましたらご教授いただけますと幸いなのですが、openvino2tensorflow
を使うときに、以下のようなエラーが途中で表示されます(結果としてファイルは生成されていますが)
cannot pickle 'module' object
このエラーが発生することによる推論結果への影響があり、それを過去にご経験されている場合は共有いただけますと幸いです
saved_modelからint8に変換するときの前処理で、/255.0
のところを/127.5
になっていたので、前者に修正して再度int8への変換を行なっています。
なお、後者の方で前処理を行いできたモデルについて、hrnet_segmentationで/255.0の前処理に修正したところ、画面中部の荒れ方が治りました。
まずはint8にする際に前処理を/255に変更したのちに、再度モデルの評価をしようと思います
いい感じの出力が得られていますね!
@kyakuno 前処理を/255にし、COCO2017のvalデータでキャリブレーションしたモデルそれぞれを使った結果を添付します。 キャリブレーションについては50枚を使いました(全てで5000枚ありましたが、特にHRNet-W48について処理時間がとてもかかりそうだったので枚数は減らして実施しました)
この先のTODOについて
キャリブレーションについて int8への変換時に多くのキャリブレーションファイルがあればより精度が高くなるということで、可能であれば5000枚全てを使えればなと思いますので、これからする予定です
video対応 現在、ビデオへの対応(主にWebカメラ映像を用いた検証)をしています。結果の画像が所望のように表示されていない(上記添付の画像のような結果になっていない)ので修正しているところです
@kyakuno 前処理を/255にし、COCO2017のvalデータでキャリブレーションしたモデルそれぞれを使った結果を添付します。 以下の例では5000枚全てを使ってキャリブレーションしました
全てのデータでキャリブレーションを行なったため、部分的に推論結果が改善していることが確認されます
@kyakuno 現在、動画対応させるためのコードを作成しております。 ailia-modelsの実装で試していたのですが、動作がうまくいかなかったので、一旦は以下の流れで行っています
ただしこれはかなり冗長な内容なので、修正途中です。 こちらが完了次第、ailia-sdkを用いた最終検証をして、問題なければPRを投げて次のモデルを対応するといった流れになる想定です
ailia-tfliteを利用して、tfliteと結果を比較しました。 その結果、以下のように同じような結果が得られました。 見比べたところ、ほとんど一致していることが確認されました(ごく僅かにセグメンテーションの範囲が広くなったり狭くなったりしている部分がありますが、よく見ないとわからない範囲です)
モデル名 | tflite | ailia-tflite |
---|---|---|
HRNetV2-W48(float) | ![]() |
![]() |
HRNetV2-W48(int8) | ![]() |
![]() |
HRNetV2-W18-Small-v1(float) | ![]() |
![]() |
HRNetV2-W18-Small-v1(int8) | ![]() |
![]() |
HRNetV2-W18-Small-v2(float) | ![]() |
![]() |
HRNetV2-W18-Small-v2(int8) | ![]() |
![]() |
下記のonnxからfloatとint8のtfliteを生成する。 https://github.com/axinc-ai/ailia-models/tree/master/image_segmentation/hrnet_segmentation