web-dev-qa-db-ja.com

fastai学習者の要件とバッチ予測

以前、fastaiライブラリを使用してresnet34モデルをトレーニングし、weights.h5ファイルを保存しました。 fastaiの最新バージョンでは、学習者をインポートしてテストセットで予測するために、空でないトレインと有効なフォルダーが必要ですか?

また、現在、すべてのテスト画像をループしてlearn.predict_array、しかしテストフォルダのバッチで予測する方法はありますか?

ロード/予測のためだけに現在行っている例:

PATH = '/path/to/model/'
sz = 224
Arch=resnet34
tfms = tfms_from_model(resnet34, sz, aug_tfms=transforms_side_on, max_zoom=1.1)
data = ImageClassifierData.from_paths(PATH, tfms=tfms, bs=64)
learn = ConvLearner.pretrained(Arch, data, precompute=False)
learn.unfreeze()
learn.load('224_all')

imgs = sorted(glob(os.path.join(test_path, '*.jpg')))
preds = []
_,val_tfms = tfms_from_model(resnet34, 224)
for n, i in enumerate(imgs):
        im = val_tfms(open_image(i))[None]
        preds.append(1-np.argmax(learn.predict_array(im)[0]))

今までにこれを行うためのよりクリーンな方法があるに違いありませんか?

8
Austin

Fastaiでは、空でないトレーニングと検証セットをロードする必要なしに、学習者をエクスポートしてロードし、テストセットで予測を行うことができます。そのためには、exportメソッドとload_learner関数を使用する必要があります(どちらもbasic_trainで定義されています)。

現在の状況では、学習者を古い方法で(トレーニング/有効なデータセットを使用して)ロードし、それをエクスポートする必要がある場合があります。これにより、load_learnerを使用してテストセットで予測を行うことができます。

ドキュメントへのリンクを残しておきます。

- https://docs.fast.ai/basic_train.html#Deploying-your-model

これにより、フォローアップの質問が明確になります。

3
Statistic Dean
data = ImageClassifierData.from_paths(PATH, tfms=tfms, bs=64)
learn = ConvLearner.pretrained(Arch, data, precompute=False)
learn.unfreeze()
learn.load('224_all')

preds = learn.predict(is_test=True)
3
Sunhwan Jo