senlinuc / caffe_ocr

主流ocr算法研究实验性的项目,目前实现了CNN+BLSTM+CTC架构
1.26k stars 535 forks source link

DenseBlockLayer的 openblas实现 #110

Closed sunjunlishi closed 4 years ago

sunjunlishi commented 4 years ago

template void convolution_Fwd(Blob input, Blob output, Blob* filter, int N, int c_output, int c_input, int h_img, int w_img, int h_filter, int w_filter) { int outputShape[] = { N,c_output,h_img,w_img }; vector outputShapeVec(outputShape, outputShape + 4); output->Reshape(outputShapeVec);

    vector<int > outShap = output->shape();
    std::string info="";
    for (int k = 0; k < outShap.size(); ++k)
    {
        char szBuf[256];
        sprintf(szBuf," %d", outShap[k]);
        info += szBuf;
    }

    info += "| ";
    outShap = filter->shape();
    for (int k = 0; k < outShap.size(); ++k)
    {
        char szBuf[256];
        sprintf(szBuf, " %d", outShap[k]);
        info += szBuf;
    }

    info += "| ";
    outShap = input->shape();
    for (int k = 0; k < outShap.size(); ++k)
    {
        char szBuf[256];
        sprintf(szBuf, " %d", outShap[k]);
        info += szBuf;
    }
     Dtype * outputPtr = output->mutable_cpu_data();
    const Dtype * col_buff = input->cpu_data();
    const Dtype * weights = filter->cpu_data();

    caffe_cpu_gemm<Dtype>(CblasNoTrans, CblasNoTrans, c_output,
        h_img*w_img, c_input*h_filter*w_filter,
        (Dtype)1., weights, col_buff,
        (Dtype)0., outputPtr );
}
sunjunlishi commented 4 years ago

我像如此实现,我打印出 out 1 8 16 260 filter 8 64 3 3 input 1 64 16 260 发现 input 不对,少了3*3; 我们应该 怎么实现啊

sunjunlishi commented 4 years ago

你好 还有 ; DenseBlockLayer总是在这 崩溃呀;为啥 this->merged_conv[0]->CopyFrom(*(bottom[0]));

第4个denseBlock DenseBlock3

我把大小打印出来了, 1 64 16 49| 1 64 16 116 前后两层的大小 不一样,所以崩溃,怎么解决呀; 终于找到原因,net我没删除。用的还是第一个。所以。。。 delete new 再次便可。

sunjunlishi commented 4 years ago

你的 这个 项目 非常 不错,有 lstm 对后续的 其他项目比如语音等都是有非常大的好处。而且你的项目非常完整。我已经 训练了你的另外一个模型,效果还可以。

sunjunlishi commented 4 years ago

大拿,怎么cpu版本,不可以呀;求救啊;cpu版本应该好好搞搞呀。

sunjunlishi commented 4 years ago

终于明白了,memory-efficient densenet也是原班人马搞的,但是没有优化速度,好可惜。 (你好我不用 memory-efficient densenet,应该怎样搞个网络呀;)

mengpengfei commented 4 years ago

大拿,怎么cpu版本,不可以呀;求救啊;cpu版本应该好好搞搞呀。

cpu 版本 gpu版本我都有,这个项目在图片大小方便很多问题,

mengpengfei commented 4 years ago

终于明白了,memory-efficient densenet也是原班人马搞的,但是没有优化速度,好可惜。 (你好我不用 memory-efficient densenet,应该怎样搞个网络呀;)

我已经把ocr_test里的函数编译成dll,很方便调用

sunjunlishi commented 4 years ago

cpu的 densenet 你优化了吗;编译dll很简单。

sunjunlishi commented 4 years ago

@mengpengfei cpu版本很慢,denseBlockLayer你优化了?能共享下这个文件便可。

sunjunlishi commented 4 years ago

@mengpengfei DenseBlockLayer的 openblas实现 你实现了??

sunjunlishi commented 4 years ago

作者,你可以用普通的densenet实现啊;这样更好的用cpu,更好的用到项目上,会产生很大影响。

sunjunlishi commented 4 years ago

作者,你的模型怎么改成 普通的 densenet网络呀;我改了,不中啊;望指教啊;

sunjunlishi commented 4 years ago

densenet 相关,我训练的时候,总是进行不了。我更换caffe项目,把你的代码放进去,可以训练 densenet网络了。

sunjunlishi commented 4 years ago

我正在 尝试 普通的 densenet可以训练,效果总是训练不太好。 作者大拿希望你能够 搞个 普通的 densenet 网络啊;这样的应用更加广泛呀;

sunjunlishi commented 4 years ago

基本可以尝试普通的 densenet.作者的 一个 densenet是8个 contact。每个 contact里面有个 11 和 33 的卷积,还有 bn。。。。ok