Armadilloフォーラム

tfrecordレコード形式への変換について

yseki

2022年8月12日 16時06分

お世話になっております。

開発ガイド「6.2.2.推論モデルの生成」でノートブックの手順通りに進めたのですが、「tfrecord形式に変換」でエラーが発生します。
なにか手順が抜けているのでしょうか?

ファイル ファイルの説明
error.txt 「学習用データセットをtrfrecord化」の実行結果
コメント

at_akihito.irie

2022年8月15日 14時33分

入江です。

> なにか手順が抜けているのでしょうか?

申し訳ございません、colabノートブック内の手順が抜けていました。

create_pascal_tf_record.pyを実行する前に、以下の処理を行なうセルを追加
してください。

!ls /content/working/train/VOC2007/Annotations/*.xml | xargs -i basename {} .xml > /content/working/train/VOC2007/ImageSets/Main/aeroplane_train.txt
!ls /content/working/val/VOC2007/Annotations/*.xml | xargs -i basename {} .xml > /content/working/val/VOC2007/ImageSets/Main/aeroplane_val.txt

当該箇所は近日中に修正します。

ご迷惑おかけしますが、よろしくお願いいたします。

ありがとうございます。
上記、解決しましたので、作業を進めたところ、「学習開始」で「DNN library is not found.」エラーが発生しました。
2月ごろの投稿に対策としてTensorflowのバージョンを2.7.0から2.8.0に上げるというのがありましたが、さらにバージョンを上げる必要があるのでしょうか?
なお、学習に使用しているjpeg画像は200kbyte程度を約100枚です。

以上、よろしくお願いします。

ファイル ファイルの説明
error2.txt 「学習開始」の実行結果

at_akihito.irie

2022年8月15日 18時07分

入江です。

度々ご迷惑おかけして申し訳ございません。
ワークアラウンドとして、model_main_tf2.pyを実行する前に、以下の処理を
行なうセルを追加していただけますでしょうか。

!apt install --allow-change-held-packages libcudnn8=8.1.0.77-1+cuda11.2

ご迷惑おかけしますが、よろしくお願いいたします。

ありがとうございます。
最後の手順まで到達することができました。
ですが、期待した推論結果を得ることができません。
下記を書き換えて、入力画像を変えても、同じ推論結果となってしまいます。
imagefile = '/content/working/01_train_data/●●●●●●.jpg'

推論結果
0: [0.42111472 0.42111472 0.42111472 0.42111472 0.42111472 0.42111472
0.42111472 0.42111472 0.42111472 0.42111472]
1: [[0.00784074 0. 0.05880557 0.05880557]
[0.00784074 0.05096483 0.05880557 0.10977039]
[0.00784074 0.10585002 0.05880557 0.16073522]
[0.00784074 0.15681485 0.05880557 0.21562041]
[0.00784074 0.20777967 0.05880557 0.26658524]
[0.00784074 0.26266487 0.05880557 0.32147044]
[0.00784074 0.31362969 0.05880557 0.37243526]
[0.00784074 0.36851489 0.05880557 0.42732046]
[0.00784074 0.41947972 0.05880557 0.47828528]
[0.00784074 0.47436491 0.05880557 0.52925011]]
2: 10.000000353902578
3: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

学習結果がおかしいのか、その後の変換がおかしいのか、確認する方法はありますでしょうか。

以上、よろしくお願いします。

at_akihito.irie

2022年8月17日 15時36分

入江です。

過学習してしまっているかもしれません。

以下は一例ですが、model_main_tf2.py実行時のパラメータを以下のように
小さくして再度学習し直してみてください。

num_train_steps=1000
num_eval_steps=100

COCOに既存のラベルで学習していたのが原因でした。
ラベルをgaugeにして学習したら問題なく推論できるようになりました。

ご教示ありがとうございました。