Dessiner le titre du jeu Quelque chose à ne pas manquer « alchimie » technique pour vous prendre rapidement des points! !

Afin d'améliorer le plaisir de l'intelligence artificielle, nous avons lancé un concours Draw Something. Dessiner ensemble de données Quelque chose comprend 40 types de vie dans les catégories générales telles que les avions, les pommes, le basket-ball et ainsi de suite. Informations sur l'image sont stockées au format JSON, enregistre l'utilisateur par somme des abscisse et l'ordonnée figure de bâton ensemble correspondant à l'ensemble dans chaque JSON. Dans lequel l'ensemble d'apprentissage et un ensemble de test de validation rapport de division de série de 6: 2: 2.

Voici un exemple 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]]]}

Vous pouvez voir le format est des données d'utilisateur à la peinture est de l'ordre des points. Depuis que je ne suis pas très familier avec NLP, donc ce problème se transforme en une classification d'image. Plus précisément ces points est affiché au-dessus de la taille de l'image (256, 256, 3). Les résultats visuels sont les suivants:

image.png

Les données pré-traitement

  • Le format de données JSON sera converti en format d'image, puis l'image l'idée de classification pour classer.

amélioration des données

  • Lors de la formation à l'aide chiquenaude au hasard, l'échelle et mixup aléatoire pour l'amélioration des données. 
  • MixUp une amélioration des données non conventionnelles, indépendamment des données et un principe simple de l'amélioration des données, une interpolation linéaire qui est une nouvelle façon de construire les échantillons de formation et des étiquettes. disposition finale des étiquettes indiquées dans la formule suivante, qui est très simple, mais la stratégie est d'améliorer et très général.

image.png

 

Atteindre l'amélioration des données mixup est très simple, en fait, je pense personnellement que cela est une stratégie de montage Inhibe ajoute une certaine perturbation, afin de renforcer la capacité de généralisation du modèle.

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

Les résultats du modèle avant et après l'augmentation sont les suivantes:

image.png

sélection modèle

  • Utilisation de la sélection du modèle ci-dessus pour un petit flux de code de validation du modèle, après les points avec une grande stratégie de modèle.
  • Le premier à utiliser l'idée du modèle resnet18 peut vérifier rapidement l'exactitude du modèle est la capacité d'améliorer l'expression sur la dernière mise à jour de l'étape. Utilisez resnet18 peut atteindre une précision de 84 ans.
  • senet154 précision l'utilisation finale peut être portée à environ 91,5.

modèle d'optimisation

  • SGD en utilisant l'algorithme d'optimisation du modèle, en utilisant l'optimisation de la dynamique, la carie poids 0,0001 code particulier est comme suit:
optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=lr, momentum=0.9, weight_decay=0.0001, nesterov=True)
  • taux d'apprentissage dynamiquement ajusté recuit cosinus avec un échauffement. Ce qui suit schématiquement comme suit:

image.png

 

 

Le résumé final


Le premier à utiliser un simple modèle de base se déroulera à travers le processus, pour obtenir une base de référence. Après avoir ajouté les techniques de formation basée sur le test de base, donc vous pouvez rapidement des points! !

Cet article est l'auteur FlyAI version de la plate - forme de contenu original, en utilisant les Creative Commons Attribution - Pas d' Utilisation Commerciale - Pas de modification 4.0 Accord international de licence pour les licences, reproduit, s'il vous plaît joindre le lien source d' origine et cette déclaration.
Cette adresse de liaison (vidéo directe pour expliquer): https://www.flyai.com/n/110736

Publié 35 articles originaux · louange gagné 22 · vues + 50000

Je suppose que tu aimes

Origine blog.csdn.net/iFlyAI/article/details/105126127
conseillé
Classement