Caffe im2col
Caffe Im2col
Gràcies al coneixement profund de Tiger-Gao, aquest article es transfereix des de https://blog.csdn.net/mrhiuser/article/details/52672824.
Aquest article tracta sobre el procés de convolució en cafeïna. És ben sabut que la convolució en cafe es basa en im2col i sgemm. Ja hi ha moltes explicacions sobre im2col a Internet. No tenia intenció d’escriure aquest article. (Hi ha molts articles a Internet que expliquen el procés del caffe im2col. Alguns articles i la implementació específica de caffe no són correctes. Realment no sé si el tenen. En veure la implementació concreta del codi caffe, és a causa d’aquests articles que van perdre molt de temps.)
Aquest article dóna un exemple del procés específic de im2col i sgemm en caffe. Abans d’explicar-ho, les dades de caffe s’emmagatzemen a la fila major.Un: im2coluna imatge input_num = 1 canal d'imatge input_channel = 1 altura de la imatge input_h = 4 amplada de la imatge input_w = 4 del nucli high kernel_h = 3 d'amplada del nucli kernel_w = 3 stride = 1 ; pad = 0 ; Després de la convolució, la fórmula de càlcul de la imatge de sortida: output_h = (input_h-kernel_h) / stride + 1 output_w = (input_w-kernel_w) / stride + 1
com es mostra a continuació (Nota: les dades de la imatge no representen el valor de color de la imatge)


Dos: im2col multicanalassumeix que hi ha tres canals (R, G, B) canal d’imatge input_channel = 3 La imatge s’emmagatzema a la memòria: primer, les dades del primer canal s’emmagatzemen contínuament, després s’emmagatzemen les dades del segon canal i, finalment, s’emmagatzemen les dades del tercer canal. Com es mostra a continuació:




Com es mostra a continuació:


Quatre: sortida d'imatges multicanalA la matriu caffe i la multiplicació de la matriu del nucli: M = canals_de sortida , N = sortida_h * sortida_w K = canals_entrada * nucli_h * nucli_w
Com es mostra a continuació:


(Acabar)