Vous pouvez fournir le paramètre mean_file
à une couche Input
dans le cadre du bloc transform_param
, tels que:Pouvez-vous définir une couche Caffe pour faire une soustraction à une couche d'entrée pour un modèle déployé?
layer {
name: "data"
type: "Input"
top: "data"
input_param { shape: { dim: 1 dim: 3 dim: 224 dim: 224 } }
transform_param {
mean_file: "imagenet_mean.binaryproto"
}
}
mais pour une couche Input
il semble que cette transformation est juste ignored without warning.
Lors de l'inspection de l'autre data layer types, il semble qu'aucun d'entre eux sont capables d'utiliser une couche couche Input
plaine comme en bas (entrée), et si aucune de ces couches peut être utilisée pour appliquer une soustraction moyenne après le fait.
Il existe également un Bias
layer, mais je ne comprends pas sa documentation et il ne semble pas accepter un fichier binaryproto. Supposons que je sois contraint, donc je ne peux exprimer que la soustraction moyenne dans le fichier proto. Je ne peux pas le faire en C++ ou en Python à l'avance avant de passer l'entrée, et je ne peux pas l'écrire comme un calque personnalisé ou un calque Python
.
Étant donné cette contrainte, comment puis-je obtenir une soustraction moyenne par un fichier binaryproto dans la couche d'entrée - soit en définissant une autre couche après ou après, ou d'autres moyens?
Je pense que caffe a une couche de normalisation par lots, si vous voulez une soustraction moyenne appropriée, vous pouvez l'utiliser et définir la taille de lot à une qui serait lente mais je pense que la normalisation sera généralement utile, https: //stackoverflow.com/questions/41222815/image-moyenne-soustraction-vs-batchnormalization-caffe – Eliethesaiyan
'La couche" Input "' est généralement utilisée dans 'deploy.prototxt', ce qui signifie que vous allez fournir manuellement et indirectement au réseau des données d'entrée. Comment nourrissez-vous ce filet particulier? Dans la plupart des cas, le processus alimentant le filet en temps de test gère également les différentes transformations requises. – Shai
@Shai Oui, comme je l'ai mentionné dans la question, cette opération est destinée à se produire dans un modèle déployé. Dans ce cas, il s'agit d'un système dans lequel vous pouvez soumettre le fichier de poids de modèle formé, le fichier de proto de couche et les fichiers * data *, mais vous ne pouvez pas soumettre de code supplémentaire. Vous ne pouvez donc pas ajouter une nouvelle couche Python ni contrôler aucun prétraitement avant que l'image ne soit transmise au réseau. Je voudrais également faire une opération de redimensionnement dans le calque d'entrée de Caffe, mais il existe une solution de contournement différente dans ce cas pour cela. – ely