pytorchOCR icon indicating copy to clipboard operation
pytorchOCR copied to clipboard

问题汇总

Open Jiolen opened this issue 3 years ago • 35 comments

非常感谢badboy的工作,👍赞

记录下自己在使用项目过程中遇见的问题 1、 问题:torch 用不了cuda 原因:pytorch==1.5.0 是用pip安装的,导致torch和cuda可能不匹配,具体匹配规则可见https://blog.csdn.net/kellyroslyn/article/details/109668001 解决:去torch官网下载https://pytorch.org/get-started/previous-versions/,选定指定版本的torch和cuda

2、 问题:训练识别的时候,No module named “warpctc_pytorch” 原因:没有这个库,不能用pip安装,pip直接安装的会报错。 解决:去pypi官网下载这个包即可,需要选定pytorch版本和cuda版本和python版本https://pypi.org/project/warpctc-pytorch/#files 注意:ptocr/model/loss/ctc_loss.py 作者的ctc还有另外一个torch.nn.CTCLoss ,如果用这个的话,训练出来结果不准。网上可以去搜这两个ctc的区别,搞不懂

3、 问题1:编译pse出错,比如 recipe for target 'pixel merge.so' failed
问题2: pse预测的时候出错,libopencv_imgproc.so.3.2:cannot open shared object file 原因:opencv导致,opencv不能用pip安装的,需要源码编译 解决:去opencv官网https://opencv.org/releases/下载3.2.0版本,然后按照下面的教程编译即可https://blog.csdn.net/kingroc/article/details/93893828 (camke的时候注意python版本)

4、 scikit-image 和 numpy 库要匹配,我用的是skimage==0.17.2 和numpy==1.16.2

Jiolen avatar Dec 31 '20 03:12 Jiolen

非常感谢badboy的工作,👍赞

记录下自己在使用项目过程中遇见的问题 1、 问题:torch 用不了cuda 原因:pytorch==1.5.0 是用pip安装的,导致torch和cuda可能不匹配,具体匹配规则可见https://blog.csdn.net/kellyroslyn/article/details/109668001 解决:去torch官网下载https://pytorch.org/get-started/previous-versions/,选定指定版本的torch和cuda

2、 问题:训练识别的时候,No module named “warpctc_pytorch” 原因:没有这个库,不能用pip安装,pip直接安装的会报错。 解决:去pypi官网下载这个包即可,需要选定pytorch版本和cuda版本和python版本https://pypi.org/project/warpctc-pytorch/#files 注意:ptocr/model/loss/ctc_loss.py 作者的ctc还有另外一个torch.nn.CTCLoss ,如果用这个的话,训练出来结果不准。网上可以去搜这两个ctc的区别,搞不懂

3、 问题1:编译pse出错,比如 recipe for target 'pixel merge.so' failed 问题2: pse预测的时候出错,libopencv_imgproc.so.3.2:cannot open shared object file 原因:opencv导致,opencv不能用pip安装的,需要源码编译 解决:去opencv官网https://opencv.org/releases/下载3.2.0版本,然后按照下面的教程编译即可https://blog.csdn.net/kingroc/article/details/93893828 (camke的时候注意python版本)

4、 scikit-image 和 numpy 库要匹配,我用的是skimage==0.17.2 和numpy==1.16.2

感谢分享,对于第二点,我解释一下,对于warp-ctc 见 https://github.com/SeanNaren/warp-ctc/blob/pytorch_bindings/pytorch_binding/warpctc_pytorch/init.py 这里第34行求得是sum,size_average默认false,所以结果是没有除以batch_size的,于是在 https://github.com/BADBADBADBOY/pytorchOCR/blob/master/ptocr/model/loss/ctc_loss.py 第19行除以batch_size, 如果要使用torch ctc,需要把注释的第九行打开,注释第十行,并把config['loss']['reduction']设置成sum,这样两者的结果应该是类似的

BADBADBADBOY avatar Dec 31 '20 11:12 BADBADBADBOY

补充一点,能装一下warp ctc最好,torch ctc会出现莫名nan的情况,不知道高版本的有没有修复,当然我在crnn.py中也加了防止nan的操作,现在用torch ctc 一般来说不因该会出现nan, 总之warp ctc 用起来更加友好

BADBADBADBOY avatar Dec 31 '20 11:12 BADBADBADBOY

torch ctc nan 是因为超 step 的原因, 加个 zero infinity 就好

leng-yue avatar Jul 14 '21 08:07 leng-yue

infinity

是官网给出的那个 把梯度为nan的置零的操作吗

fxwfzsxyq avatar Jul 15 '21 00:07 fxwfzsxyq

对的, CTCLoss 有这个参数, 根据我自己撸框架的经历来说有两种情况会导致 loss nan

  • 图片宽度不够 / 网络太深, 出来的 timestep 太短 (<= label length * 1.5), 无法对齐
  • 没有使用 log softmax

ZeroInfinity 可以解决偶尔 label 太长的问题

leng-yue avatar Jul 15 '21 02:07 leng-yue

下载ag_DB_bb_resnet50_he_DB_Head_bs_8_ep_1200和ag_DB_bb_resnet50_he_DB_Head_bs_8_ep_1201均解压失败,不如直接放上来模型呀。

Lanme avatar Aug 02 '21 10:08 Lanme

下载ag_DB_bb_resnet50_he_DB_Head_bs_8_ep_1200和ag_DB_bb_resnet50_he_DB_Head_bs_8_ep_1201均解压失败,不如直接放上来模型呀。

这里面的不用解压,就是模型文件

fxwfzsxyq avatar Aug 02 '21 11:08 fxwfzsxyq

Windows环境遇到 if subprocess.call(['make', '-C', BASE_DIR]) != 0: # return value raise RuntimeError('Cannot compile lanms: {}'.format(BASE_DIR)) 直接将这两行注释掉就可以了

yufanxin avatar Sep 01 '21 11:09 yufanxin

Windows环境遇到 if subprocess.call(['make', '-C', BASE_DIR]) != 0: # return value raise RuntimeError('Cannot compile lanms: {}'.format(BASE_DIR)) 直接将这两行注释掉就可以了

请问 Windows 也可以跑这个代码吗

wayne2tech avatar Oct 18 '21 01:10 wayne2tech

可以跑的-------- 原始邮件 --------发件人: Ethan @.>日期: 2021年10月18日周一 上午9:54收件人: BADBADBADBOY/pytorchOCR @.>抄送: Jiolen @.>, Author @.>主 题: Re: [BADBADBADBOY/pytorchOCR] 问题汇总 (#16)

Windows环境遇到 if subprocess.call(['make', '-C', BASE_DIR]) != 0: # return value raise RuntimeError('Cannot compile lanms: {}'.format(BASE_DIR)) 直接将这两行注释掉就可以了

请问 Windows 也可以跑这个代码吗

—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.

Jiolen avatar Oct 18 '21 03:10 Jiolen

可以跑的-------- 原始邮件 --------发件人: Ethan @.>日期: 2021年10月18日周一 上午9:54收件人: BADBADBADBOY/pytorchOCR @.>抄送: Jiolen @.>, Author @.>主 题: Re: [BADBADBADBOY/pytorchOCR] 问题汇总 (#16) Windows环境遇到 if subprocess.call(['make', '-C', BASE_DIR]) != 0: # return value raise RuntimeError('Cannot compile lanms: {}'.format(BASE_DIR)) 直接将这两行注释掉就可以了 请问 Windows 也可以跑这个代码吗 —You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.

请问在win下编译是怎样的流程呢,需要修改什么文件吗,https://blog.csdn.net/kingroc/article/details/93893828 您给出的这个方法好像只针对于linux系统,win下我没编译成功

wayne2tech avatar Oct 18 '21 08:10 wayne2tech

Xnip2021-11-11_15-25-04

LanWong1 avatar Nov 11 '21 07:11 LanWong1

Xnip2021-11-11_15-24-07

LanWong1 avatar Nov 11 '21 07:11 LanWong1

这是作者写的infer推断备份,你不用管这些bak,只需用rec_infer.py就行发自我的荣耀手机-------- 原始邮件 --------发件人: LanWong1 @.>日期: 2021年11月11日周四 下午3:27收件人: BADBADBADBOY/pytorchOCR @.>抄送: Jiolen @.>, Author @.>主 题: Re: [BADBADBADBOY/pytorchOCR] 问题汇总 (#16)

—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.

Jiolen avatar Nov 12 '21 12:11 Jiolen

你好,我看你dbnet的蒸馏算法里,loss两个都是dice loss,可原版dbnet一个loss是bceloss 这么用是经过实验的吗

GYxiaOH avatar Nov 16 '21 07:11 GYxiaOH

在icdar2015上实验的,性能就是表格里给的

------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2021年11月16日(星期二) 下午3:39 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [BADBADBADBOY/pytorchOCR] 问题汇总 (#16)

你好,我看你dbnet的蒸馏算法里,loss两个都是dice loss,可原版dbnet一个loss是bceloss 这么用是经过实验的吗

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

fxwfzsxyq avatar Nov 16 '21 07:11 fxwfzsxyq

dice用于分割可能比较好吧祝好!王毅---- 回复的原邮件 @.>发送日期2021年11月16日 15:39 @.> @.@.>主题Re: [BADBADBADBOY/pytorchOCR] 问题汇总 (#16)

你好,我看你dbnet的蒸馏算法里,loss两个都是dice loss,可原版dbnet一个loss是bceloss 这么用是经过实验的吗

—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.

[

{

@.***": "http://schema.org",

@.***": "EmailMessage",

"potentialAction": {

@.***": "ViewAction",

"target": "https://github.com/BADBADBADBOY/pytorchOCR/issues/16#issuecomment-969964346",

"url": "https://github.com/BADBADBADBOY/pytorchOCR/issues/16#issuecomment-969964346",

"name": "View Issue"

},

"description": "View this Issue on GitHub",

"publisher": {

@.***": "Organization",

"name": "GitHub",

"url": "https://github.com"

}

}

]

LanWong1 avatar Nov 16 '21 10:11 LanWong1

在icdar2015上实验的,性能就是表格里给的 ------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2021年11月16日(星期二) 下午3:39 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [BADBADBADBOY/pytorchOCR] 问题汇总 (#16) 你好,我看你dbnet的蒸馏算法里,loss两个都是dice loss,可原版dbnet一个loss是bceloss 这么用是经过实验的吗 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

好的谢谢,所以是实验过在teachermodel里用dice loss会比较好是吗,因为我之前在dbnet里把bce loss 换成了dice loss 效果还是差的比较明显的

GYxiaOH avatar Nov 18 '21 07:11 GYxiaOH

dice用于分割可能比较好吧祝好!王毅---- 回复的原邮件 @.>发送日期2021年11月16日 15:39 @.> @.@.>主题Re: [BADBADBADBOY/pytorchOCR] 问题汇总 (#16) 你好,我看你dbnet的蒸馏算法里,loss两个都是dice loss,可原版dbnet一个loss是bceloss 这么用是经过实验的吗 —You are receiving this because you commented.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android. [ { @.": "http://schema.org", @.": "EmailMessage", "potentialAction": { @.": "ViewAction", "target": "#16 (comment)", "url": "#16 (comment)", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { @.": "Organization", "name": "GitHub", "url": "https://github.com" } } ] 谢谢,因为我之前在dbnet里把bce loss 换成了dice loss 效果还是差的比较明显的

GYxiaOH avatar Nov 18 '21 07:11 GYxiaOH

请问以下模型剪枝只适用于mobilenetv3吗?为什么不是通用的剪枝呢?还有就是您使用的剪枝算法是什么?流程是怎么样的? @BADBADBADBOY

LanWong1 avatar Jan 20 '22 00:01 LanWong1

问一下如何加入群呢?二维码已经失效了?

LanWong1 avatar Jan 20 '22 00:01 LanWong1

请问以下模型剪枝只适用于mobilenetv3吗?为什么不是通用的剪枝呢?还有就是您使用的剪枝算法是什么?流程是怎么样的? @BADBADBADBOY

请问以下模型剪枝只适用于mobilenetv3吗?为什么不是通用的剪枝呢?还有就是您使用的剪枝算法是什么?流程是怎么样的? @BADBADBADBOY

用L1正则化加到BN层的缩放因子上,训练的时候L1正则化推动BN层的缩放因子趋向于零,然后对bn层通道排序,再剪掉一定比例的通道,最后再finetune,方法适用任何有bn的模型,只是剪枝部分需要根据不同模型重写

fxwfzsxyq avatar Jan 20 '22 03:01 fxwfzsxyq

font{
    line-height: 1.6;
}
ul,ol{
    padding-left: 20px;
    list-style-position: inside;
}



但是那个剪枝是训练之后的剪枝呀, 并不是训练的时候

    
        
    


  

    
                
        
            
                
                        
                            
                        
                        
                            wangyi4422
                        
                
                    
                        
                                ***@***.***
                        
                    
            
        
    
    


    签名由
    网易邮箱大师
    定制




在2022年01月20日 ***@***.***> 写道: 

请问以下模型剪枝只适用于mobilenetv3吗?为什么不是通用的剪枝呢?还有就是您使用的剪枝算法是什么?流程是怎么样的? @BADBADBADBOY

请问以下模型剪枝只适用于mobilenetv3吗?为什么不是通用的剪枝呢?还有就是您使用的剪枝算法是什么?流程是怎么样的? @BADBADBADBOY

用L1正则化加到BN层的缩放因子上,训练的时候L1正则化推动BN层的缩放因子趋向于零,然后对bn层通道排序,再剪掉一定比例的通道,最后再finetune

—Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you commented.Message ID: @.***>

LanWong1 avatar Jan 21 '22 02:01 LanWong1

def polygon_area(self, polygon): #这么算面积多方便 #return cv2.contourArea(polygon.astype(np.float32)) #为啥要这么算面积 这么算面积都是为0 edge = 0 for i in range(polygon.shape[0]): next_index = (i + 1) % polygon.shape[0] edge += (polygon[next_index, 0] - polygon[i, 0]) * (polygon[next_index, 1] - polygon[i, 1]) return edge / 2.

LanWong1 avatar Jan 26 '22 08:01 LanWong1

这里面积总是为0 的, 因为四个点是按照顺时针方向的, 那么polygon[next_index, 1] - polygon[i, 1]肯定是0 或者 (polygon[next_index, 0] - polygon[i, 0])为0 Xnip2022-01-26_16-35-37

LanWong1 avatar Jan 26 '22 08:01 LanWong1

crnn的文档可否完善一下

morestart avatar Feb 15 '22 07:02 morestart

这里面积总是为0 的, 因为四个点是按照顺时针方向的, 那么polygon[next_index, 1] - polygon[i, 1]肯定是0 或者 (polygon[next_index, 0] - polygon[i, 0])为0 Xnip2022-01-26_16-35-37

是的 这是个bug

fxwfzsxyq avatar Feb 16 '22 02:02 fxwfzsxyq

crnn的文档可否完善一下

crnn的文档可否完善一下

周末我看看,具体哪里有问题你可以先提出来,不然不知道怎么完善,我这里给出的默认是有一定基础和debug能力的

fxwfzsxyq avatar Feb 16 '22 02:02 fxwfzsxyq

key_file是字典吗?bg_path里的图是用来做什么的,合成数据还是? 还有个问题请教一下,我自己实现了resnetvd的crnn但是reshape到B,C,H*W维度之后接两层lstm后几乎不收敛,loss维持在4.左右,去掉lstm层,reshape后的数据直接到全连接的话就可以收敛的很好,没想明白为什么。。。

morestart avatar Feb 16 '22 02:02 morestart

key_file是字典吗?bg_path里的图是用来做什么的,合成数据还是? 还有个问题请教一下,我自己实现了resnetvd的crnn但是reshape到B,C,H*W维度之后接两层lstm后几乎不收敛,loss维持在4.左右,去掉lstm层,reshape后的数据直接到全连接的话就可以收敛的很好,没想明白为什么。。。

key_file 是字典,bg_path是背景图地址,crnn里一种数据增强会用到

fxwfzsxyq avatar Feb 18 '22 09:02 fxwfzsxyq