PythonMania

普段はロボットとAIを組み合わせて色々作ってます。Python関係以外も色々投稿していくと思います。

【Python】画像認識 - SIGNATEで画像分類に挑戦してみる 【DeepLearning】

今回はKaggleではなくSIGNATEのコンペに挑戦してみます。


正確にはコンペというよりはチュートリアルみたいなものですが笑


signate.jp




20種類のラベルを分類してみます。


今回はfastaiを使っていきます。


モデルはDenseNetを転移学習させていきます。


以下コードです。

#必要なライブラリのインポート
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
from pathlib import Path
from fastai import *
from fastai.vision import *
import torch


#ファイルディレクトリの指定
data_folder = Path("../input")
train_df = pd.read_csv("../input/train.csv")
test_df = pd.read_csv("../input/sample_submit.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('submission.csv', index=True)