Darkflow: Erreur de reformation du tenseur de flux de tenseur

Créé le 8 avr. 2017  ·  3Commentaires  ·  Source: thtrieu/darkflow

J'essaie d'entraîner yolo sur mon propre ensemble de données. J'ai réussi à suradapter avec succès l'entraînement sur 10 images avec 2 objets. L'inférence fonctionne bien.

Maintenant, j'essaie de m'entraîner sur l'ensemble de données complet de 6000 images et j'obtiens une erreur.
Le cmd que j'utilise pour m'entraîner :
./flow --train --dataset /home/ubuntu/datasets/img/ --annotation /home/ubuntu/datasets/anno/ --model cfg/yolo-17c.cfg --load bin/yolo.weights --keep 5 --epoch 30000 --save 1000 --lr 0.00001 --batch 16 --gpu .8

L'erreur réelle :

Causée par l'opération 'Reshape', définie à :
Fichier "./flow", ligne 44, dans
tfnet = TFNet(DRAPEAU)
Fichier "/home/ubuntu/darkflow/net/build.py", ligne 63, dans __init__
self.setup_meta_ops()
Fichier "/home/ubuntu/darkflow/net/build.py", ligne 106, dans setup_meta_ops
si self.FLAGS.train : self.build_train_op()
Fichier "/home/ubuntu/darkflow/net/help.py", ligne 15, dans build_train_op
self.framework.loss(self.out)
Fichier "/home/ubuntu/darkflow/net/yolov2/train.py", ligne 56, en perte
net_out_reshape = tf.reshape(net_out, [-1, H, W, B, (4 + 1 + C)])
Fichier "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/ops/gen_array_ops.py", ligne 2630, en refonte
nom=nom)
Fichier "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", ligne 763, dans apply_op
op_def=op_def)
Fichier "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", ligne 2327, dans create_op
original_op=self._default_original_op, op_def=op_def)
Fichier "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", ligne 1226, dans __init__
self._traceback = _extract_stack()
InvalidArgumentError (voir ci-dessus pour le traçage) : l'entrée à remodeler est un tenseur avec 1149200 valeurs, mais la forme demandée nécessite un multiple de 18590
[[Noeud : Reshape = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _device="/ job:localhost/replica :0/ task:0/gpu :0"](output, Reshape/shape)]]
[[Node : mul_30/_195 = _Recv[client_terminated=false, recv_device="/ job:localhost/replica :0/ task:0/cpu :0", send_device="/ job:localhost/replica :0/ task:0 /gpu :0", send_device_incarnation=1, tensor_name="edge_188_mul_30", tensor_type=DT_FLOAT, _device="/ job:localhost/replica :0/ task:0/cpu :0"]()]]

Mon fichier labels.txt a 17 étiquettes.
Les modifications que j'ai apportées au fichier yolo-17c.cfg sont :
filters=125 pour la dernière couche j'ai aussi essayé cela avec 425 et 35
classes=17 selon le nombre de cours

Je me rends compte que le nombre 18590 est associé à width=416, height=416 quand je les change en width=224, height=224 , j'obtiens
...but the requested shape requires a multiple of 21560

@thtrieu , @Dhruv-Mohan , @abagshaw avez-vous une idée de la raison pour laquelle

Merci pour l'aide

Commentaire le plus utile

Vous devez définir le filters=110 pour la dernière conv. couche.
Il doit être basé sur cette formule:
filtres= #num * (#classes + 5)

[convolutionnel]
taille=1
foulée=1
pad=1
filtres=110
activation=linéaire
[Région]
ancres = 0,738768,0,874946, 2,42204,2.65704, 4.30971,7.04493, 10.246,4.59428, 12.6868,11.8741

J'espère que cela pourra aider

Tous les 3 commentaires

Vous devez définir le filters=110 pour la dernière conv. couche.
Il doit être basé sur cette formule:
filtres= #num * (#classes + 5)

[convolutionnel]
taille=1
foulée=1
pad=1
filtres=110
activation=linéaire
[Région]
ancres = 0,738768,0,874946, 2,42204,2.65704, 4.30971,7.04493, 10.246,4.59428, 12.6868,11.8741

J'espère que cela pourra aider

@1NNcoder Veuillez indiquer si le problème est déjà résolu ? Si c'est le cas, vous pouvez le fermer et libérer l'espace pour d'autres personnes :)

Oui cela fonctionne

Cette page vous a été utile?
0 / 5 - 0 notes