今回は予測した結果を実際にコミットしてみて、精度を見てみたいと思います。
サボテンの画像認識コンペです(既に終了しているコンペです)
先に結果を書いてしまうと、
Scoreは1.000
でした!
簡単に高精度の結果が出せてしまうfastai恐るべしですね
#必要なライブラリのインポート import numpy as np import os from sklearn.metrics import f1_score from fastai import * from fastai.vision import * import torch import torch.nn as nn import torchvision import cv2 from tqdm import tqdm from skmultilearn.model_selection import iterative_train_test_split from sklearn.model_selection import train_test_split from sklearn.preprocessing import MultiLabelBinarizer import warnings warnings.filterwarnings("ignore") %load_ext autoreload %autoreload #ディレクトリの指定 data_folder = Path("../input") train_df = pd.read_csv("../input/train.csv") test_df = pd.read_csv("../input/sample_submission.csv") #学習用データの読み込み test_img = ImageList.from_df(test_df, path=data_folder/'test', folder='test') trfm = get_transforms(do_flip=True, flip_vert=True, max_rotate=10.0, max_zoom=1.1, max_lighting=0.2, max_warp=0.2, p_affine=0.75, p_lighting=0.75) train_img = (ImageList.from_df(train_df,path=data_folder/"train",folder="train") .split_by_rand_pct(0.01) .label_from_df() .add_test(test_img) .transform(trfm,size=128) .databunch(path=".",bs=64,device=torch.device('cuda:0')) .normalize(imagenet_stats)) learn = cnn_learner(train_img, models.densenet161, metrics=[error_rate, accuracy]) #学習の実行 lr = 3e-02 learn.fit_one_cycle(6, slice(lr)) #推論実行・提出用ファイル作成 preds,_ = learn.get_preds(ds_type=DatasetType.Test) test_df.has_cactus = preds.numpy()[:, 0] test_df.to_csv('sample_submit.csv', index=False)