[PYTHON] [Partie 1] J'ai essayé de résoudre l'erreur "Avertissement utilisateur: une entrée n'a pas pu être récupérée. Cela pourrait être parce qu'un travailleur est mort" qui s'est produite dans le masque R-CNN.

Démonstration de la détection de noyau du masque R-CNN

C'est une continuation du défi que moi, un débutant en apprentissage profond, ai essayé et erroné sur Mask R-CNN en utilisant google colaboratory. Cette fois, nous essayons de ** détection de cellule ** en utilisant ce qui suit.

https://github.com/matterport/Mask_RCNN/tree/master/samples/nucleus

Familier, il appartient à Matterport.

Dans cette démo, l'arrière de la détection Mask R-CNN, comme ** ROI et Anchor **, sera affiché, et au moment de la détection, cela se fera étape par étape. Ce sera une excellente expérience d'apprentissage pour les débutants car ils peuvent comprendre comment ils apprennent et reconnaissent.

Pas de formation ipynb

J'ai deux fichiers ipynb, _data et _model, et j'ai pu lancer la démo sans trébucher, mais je n'ai pas d'ipynb pour entraîner le poids utilisé dans la détection. J'ai donc décidé de le faire moi-même et j'ai jeté un coup d'œil au contenu de Nucleus.py **, qui contient des indices cachés.

Les lignes 10 à 25 contenaient les commandes à exécuter pour l'entraînement.

nucleus_train.py


#Train a new model starting from ImageNet weights
python3 nucleus.py train --dataset=/path/to/dataset --subset=train --weights=imagenet

#Train a new model starting from specific weights file
python3 nucleus.py train --dataset=/path/to/dataset --subset=train --weights=/path/to/weights.h5

#Resume training a model that you had trained earlier
python3 nucleus.py train --dataset=/path/to/dataset --subset=train --weights=last

#Generate submission file
python3 nucleus.py detect --dataset=/path/to/dataset --subset=train --weights=<last or /path/to/weights.h5>

Je vois, pour apprendre à partir de 0, il suffit d'exécuter la première commande.

Courons

Étape 1: Exécuter pour le moment

--dataset = / chemin / vers / partie de l'ensemble de données

nucleus_train.py


--dataset=/content/drive/My drive/.../dataset

Passez à et exécutez.

Étape 2: Téléchargement du poids

Lorsque je l'exécute avec cela, l'URL apparaît dans la sortie, donc resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5 Télécharger.

Étape ③: Commencez à apprendre

Après cela, la partie de --weights = / path / to

nucleus_train.py


--weights=/content/.../resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5

Changer pour le même. J'ai pu spécifier le Chemin, donc j'ai pensé que c'était un succès ...! ??

Difficulté

nucleus_train.py


Epoch 1/20

Je suis resté coincé avec le message affiché. L'erreur qui y apparaît est

nucleus_train.py


UserWarning: An input could not be retrieved. It could be because a worker has died

?? ?? Alors, copiez-le et collez-le sur Google et enquêtez. L'article suivant était la première référence.

Article de référence ①

** [UserWarning: Une entrée n'a pas pu être récupérée. Cela peut être dû au décès d'un collaborateur] (https://qiita.com/mosamosa/items/9907a56cab7ae96d76c7)**

Apparemment, la cause est ** "Le flux de fichiers de Colabolatory ne suit pas la vitesse d'apprentissage." **. Il semble que la lecture d'images à partir de Google Drive soit devenue un goulot d'étranglement.

Article de référence ②

[“UserWarning: An input could not be retrieved. It could be because a worker has died. We do not have any information on the lost sample.”] (https://stackoverflow.com/questions/58446290/userwarning-an-input-could-not-be-retrieved-it-could-be-because-a-worker-has)

Eh bien, je sais seulement que je devrais copier le chemin dans le colaboratoire ...

Article de référence ③

** [[Utiliser un processeur graphique gratuit à la vitesse par seconde] (https://qiita.com/tomo_makes/items/b3c60b10f7b25a0a5935)**

nucleus_train.py


!cp drive/My Drive/<Dossier spécifié>/<Fichiers désignés, etc.>

Enregistrez de grands ensembles de données sous forme de fichiers zip dans Google Drive et décompressez-les localement chaque fois que vous démarrez Colab.

nucleus_train.py


!unzip -q drive/My Drive/<Dossier spécifié>/<Fichier spécifié>.zip

-q est une option qui ne génère pas de message lors de la décompression. Même une archive contenant environ 2 Go et des milliers de fichiers peut être acquise et décompressée à partir de Google Drive en environ 1 minute.

En effet, lorsque vous utilisez des données volumineuses, vous devez déplacer les données vers le colaboratoire!

Article de référence ④

** [Décompressez pour spécifier le répertoire] (https://cutmail.hatenablog.com/entry/20100816/1281952284)**

C'est juste une introduction de commande, mais il semble que vous puissiez spécifier la destination de décompression zip comme ceci.

nucleus_train.py


% unzip dataset.zip -d /content/dataset

J'ai essayé de mettre en œuvre

Cela fait longtemps, je vais donc vous montrer un exemple d'implémentation dans le prochain article!

[~~ J'écris un article maintenant. Restez à l'écoute! ~~] [J'ai fini d'écrire l'article. ]

[[Partie 2] J'ai essayé de résoudre l'erreur "Avertissement utilisateur: une entrée n'a pas pu être récupérée. Cela pourrait être parce qu'un travailleur est mort" qui s'est produite dans le masque R-CNN. ] (https://qiita.com/skperfarming/items/8c0ebfe5e72ce7357cf2)

Recommended Posts

[Partie 1] J'ai essayé de résoudre l'erreur "Avertissement utilisateur: une entrée n'a pas pu être récupérée. Cela pourrait être parce qu'un travailleur est mort" qui s'est produite dans le masque R-CNN.
[Partie 2] J'ai essayé de résoudre l'erreur "Avertissement utilisateur: une entrée n'a pas pu être récupérée. Cela pourrait être parce qu'un travailleur est décédé" qui s'est produite dans le masque R-CNN.
Je pensais qu'il serait lent d'utiliser l'instruction for dans NumPy, mais ce n'était pas le cas.
J'ai essayé de prédire les chevaux qui seront dans le top 3 avec LightGBM
Ce qui semble être un modèle pour la partie d'entrée standard du pro de la concurrence en python3