人工知能の楽しさを高めるために、我々はドロー何か、このコンテストを開始しました。何かのデータセットを描き、航空機、りんご、バスケットボールなどと上のように一般的なカテゴリでの生活の40種類が含まれています。画像情報は、JSON形式で格納され、各JSONの設定に対応する横軸と縦軸セットスティック図の和あたりユーザが記録します。請求項6のトレーニングセットとテストセット検証セット分周比:2:2。
以下は、JSONの例です。
{"drawing": [[[18, 21, 15, 17, 23], [255, 185, 106, 97, 89]], [[17, 7, 3, 0, 9, 19, 29, 40, 41, 30, 28], [70, 60, 50, 26, 4, 0, 12, 39, 49, 75, 88]], [[28, 25, 22, 13, 11, 14, 15, 7, 11], [63, 10, 67, 53, 30, 17, 28, 63, 58]]]}
あなたはフォーマットがポイントのオーダーである絵にユーザデータで見ることができます。私はNLP非常に精通していないですので、したがって、この問題は、画像分類に変換されます。具体的には、これらの点は、画像(256、256、3)サイズの上に表示されます。次のように視覚的な結果は以下の通りでした。
データの前処理
- JSONデータ・フォーマットは、画像フォーマットに変換し、次に分類する分類の概念を描くであろう。
データ拡張
- 訓練は、データ拡張のためにランダムフリップ、規模およびランダム重複が整理を使用している場合。
- 型破りなデータ拡張、データの独立したデータ拡張の単純な原理を重複が整理、学習サンプルとラベルを構築するための新しい方法である線形補間。非常にシンプルであるが、戦略を強化することであり、非常に一般的な以下の式に示すラベルの最終的な配置。
重複が整理データ拡張を実現する非常に簡単で、実際には、私は個人的にこれがフィット戦略を阻害だと思うモデルの汎化能力を強化するように、いくつかの障害を追加します。
def get_batch(x, y, step, batch_size, alpha=0.2):
candidates_data, candidates_label = x, y
offset = (step * batch_size) % (candidates_data.shape[0] - batch_size)
train_features_batch = candidates_data[offset:(offset + batch_size)]
train_labels_batch = candidates_label[offset:(offset + batch_size)]
if alpha == 0:
return train_features_batch, train_labels_batch
if alpha > 0:
weight = np.random.beta(alpha, alpha, batch_size)
x_weight = weight.reshape(batch_size, 1, 1, 1)
y_weight = weight.reshape(batch_size, 1)
index = np.random.permutation(batch_size)
x1, x2 = train_features_batch, train_features_batch[index]
x = x1 * x_weight + x2 * (1 - x_weight)
y1, y2 = train_labels_batch, train_labels_batch[index]
y = y1 * y_weight + y2 * (1 - y_weight)
return x, y
次のように増加する前と後のモデルの結果は以下のとおりです。
モデル選択
- 大型モデル戦略とアップ点の後、小さなモデル検証コードフローに上記モデル選択を使用して。
- resnet18モデルのアイデアはすぐにモデルの正しさを確認することができます使用する最初は、最後のステップアップグレードの発現を増強する機能です。resnet18が84の精度を達成することができます使用してください。
- senet154最終用途精度は91.5程度まで上昇させることができます。
モデルの最適化
- 次のようにモデル最適化アルゴリズムを使用してSGDは、運動量の最適化を使用して、重み減衰0.0001特定のコードです。
optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=lr, momentum=0.9, weight_decay=0.0001, nesterov=True)
- ウォームアップでレートを動的に調整コサインアニールを学びます。これは概略的に次のように:
最終要約
シンプルなベースモデルは、ベースラインを取得するには、プロセスを介して実行されます使用して最初の。あなたはすぐにポイントアップすることができますので、上のベースラインテストに基づいたトレーニング技術を追加した後!!
この記事では、使用して、元のコンテンツの著作者FlyAIプラットフォームのリリースで、クリエイティブコモンズ帰属-非営利-改変禁止について4.0国際ライセンス契約、再現ライセンスは、オリジナルのソースリンクと、この文を添付してください。
このリンクアドレス(説明するための直接ビデオ):https://www.flyai.com/n/110736