快手极速版免费下载2023抖音,下载快手极速版最新版本202
DouJia 2024-01-21 14:30 155 浏览
PaddleSharp:跨越一年的版本更新与亮点
我始终坚信,开源社区是技术进步的重要推动力,也是我抽出我业余时间,投入到PaddleSharp这个项目的原因,这个项目充分展现快手极速版免费下载2023抖音了.NET在复杂计算领域的潜力。今天很高兴地告诉大家,PaddleSharp有快手极速版免费下载2023抖音了新版本快手极速版免费下载2023抖音!
先来说说背景,有的朋友可能知道,PaddleSharp过去老版本存在一些东西过时或者无法使用的情况。但是,时光恰恰是优化和革新的好理由和契机,我在距离上一篇文章发布之后,做了许多优化,下面我挑重要的部分做介绍。
整体体验 文档和示例
我一直在更新Github首页的使用文档和示例:
https://github.com/sdcb/PaddleSharp (项目首页+整体介绍+推理库部分)
https://github.com/sdcb/PaddleSharp/blob/master/docs/ocr.md (PaddleOCR)
https://github.com/sdcb/PaddleSharp/blob/master/docs/detection.md (PaddleDetection)
https://github.com/sdcb/PaddleSharp/blob/master/docs/rotation-detection.md (RotationDetection)
https://github.com/sdcb/PaddleSharp/blob/master/docs/paddle2onnx.md (Paddle模型转Onnx)
里面包含了大致介绍、使用方式、使用示例、注意事项等。
我会持续维护这些文档,尤其是有客户有时向我反馈一些问题,我会将里面一些常见的问题和解决办法写在上面文档中,因此建议初接触PaddleSharp的朋友看看。
xml注释和snuget调试
作为一名程序员,编程体验很重要,方法怎么用,一个是看示例,另一个就是看注释。
为此我将PaddleSharp中所有的公有方法、受保护方法都加上了详尽的xml注释,这一点在Github上显示了超过9000行代码变动,以后在Visual Studio中鼠标放在PaddleSharp里面的类、参数、方法上时,就会显示详尽的注释,比如下面这个注释:
///<summary>
///Returns an Action delegate that configures PaddleConfig for use with Onnx.
///</summary>
///<param name="cpuMathThreadCount">The number of CPU threads to use for math operations. A value of 0 sets it to minimum of 4 and the available number of processors.</param>
///<param name="enableOnnxOptimization">Flag to enable or disable Onnx runtime optimization.</param>
///<param name="memoryOptimized">Flag to enable or disable memory optimization.</param>
///<param name="glogEnabled">Flag to enable or disable logging with glog.</param>
///<returns>The ONNX Runtime paddle device definition.</returns>
publicstaticAction<PaddleConfig> Onnx(intcpuMathThreadCount = 0, boolenableOnnxOptimization = true, boolmemoryOptimized = true, boolglogEnabled = false)
{
returncfg =>
{
cfg.OnnxEnabled = true;
if(enableOnnxOptimization) cfg.EnableOnnxOptimization;
cfg.CpuMathThreadCount = cpuMathThreadCount switch
{
0=> Math.Min( 4, Environment.ProcessorCount),
_ => cpuMathThreadCount
};
CommonAction(cfg, memoryOptimized, glogEnabled);
};
}
可见它会每个成员函数、参数、返回值都作出了详尽的xml注释。
以此为基础,我还将所有的.NET包发布了.snuget包,这些包自带pdb调试符号文件,以后编程中按F11即可单步调试进入PaddleSharp的源代码中,。
Paddle推理库 设备管理
其中,一项重要的改变在于设备使用接口的设计。老版本中只有PaddleConfig.Defaults.UseGpu这一设备启用选项,为了增强扩展性和用户体验,便对其进行了扩展:新版本中我引入了下列设备:
PaddleDevice.Gpu
PaddleDevice.Openblas
PaddleDevice.Onnx
PaddleDevice.Mkldnn
PaddleDevice.TensorRt(需要和 PaddleDevice.Gpu配合使用)
不同的方法代表着不同的设备类型,这无疑为用户提供了更大的选择空间,这是PaddleOCR的新版本使用示例(它需要作为PaddleOcrAll的参数传进去):
// 注:需要先安装如下NuGet包:
// * Sdcb.PaddleInference
// * Sdcb.PaddleOCR
// * Sdcb.PaddleOCR.Models.LocalV3
// * Sdcb.PaddleInference.runtime.win64.mkl
// * OpenCvSharp4.runtime.win
FullOcrModel model = LocalFullModels.ChineseV3;
byte[] sampleImageData;
stringsampleImageUrl = @"https://www.tp-link.com.cn/content/images2017/gallery/4288_1920.jpg";
using(HttpClient http = newHttpClient)
{
Console.WriteLine( "Download sample image from: "+ sampleImageUrl);
sampleImageData = awaithttp.GetByteArrayAsync(sampleImageUrl);
}
// 下面的PaddleDevice.Mkldnn是新加的
// 之前是用的PaddleConfig.Defaults.UseMkldnn = true
// 如果想要GPU,则改为PaddleDevice.Gpu即可
using(PaddleOcrAll all = newPaddleOcrAll(model, PaddleDevice.Mkldnn)
{
AllowRotateDetection = true, /* 允许识别有角度的文字 */
Enable180Classification = false, /* 不允许识别旋转角度大于90度的文字 */
})
{
// 如果需要读取本地文件,使用如下被注释的代码
// using (Mat src2 = Cv2.ImRead(@"C:\test.jpg"))
using(Mat src = Cv2.ImDecode(sampleImageData, ImreadModes.Color))
{
PaddleOcrResult result = all.Run(src);
Console.WriteLine( "Detected all texts: \n"+ result.Text);
foreach(PaddleOcrResultRegion region inresult.Regions)
{
Console.WriteLine( $"Text: {region.Text}, Score: {region.Score}, RectCenter: {region.Rect.Center}, RectSize: {region.Rect.Size}, Angle: {region.Rect.Angle}");
}
}
}
其中用于设备管理的代码在:
using(PaddleOcrAll all = newPaddleOcrAll(model, PaddleDevice.Mkldnn)
它可以换为PaddleDevice.Openblas(表示不使用Mkldnn):
using(PaddleOcrAll all = newPaddleOcrAll(model, PaddleDevice.Openblas)
或者换成PaddleDevice.Gpu(表示使用GPU——但必须先安装Gpu的相关包并配好环境):
using(PaddleOcrAll all = newPaddleOcrAll(model, PaddleDevice.Gpu)
当然,我会尽量简化和清晰地解释这个部分。以下是我的修改提案:
库加载方式优化
在旧版PaddleSharp中,库加载方式主要有两种:在.NET Framework中采用Autoload方式,在.NET Core中采用SearchPathLoad方式。然而,这两种方式在某些情况下并不理想,特别是在Linux环境下。
Autoload方式
Autoload方式的主要问题在于,PaddleSharp依赖于paddle_inference_c.dll,而paddle_inference_c.dll又依赖于其他dll如openblas.dll。即使paddle_inference_c.dll成功加载,也可能因为其他依赖dll的问题导致推理失败。
解决办法是在调用依赖dll加载的函数前,先调用一个不会触发加载的函数,例如PaddleConfig.Version。然后在当前进程模型中找到paddle_inference_c模块,定位到它所在的文件夹,并把文件夹路径导入到环境变量中。
SearchPathLoad方式
SearchPathLoad方式利用了.NET Core 3.1引入的AppContext变量:NATIVE_DLL_SEARCH_DIRECTORIES。这种方式不需要读取进程模块就能知道dll的位置。
但是,这种方法在Linux环境下行不通。因为Linux的LD_LIBRARY_PATH环境变量必须在进程启动前被确定。一旦进程启动,环境变量的值就被缓存起来,运行时的修改对程序无效。
新的加载方式
为了解决上述问题,新的PaddleSharp版本采用了逐步加载依赖的方式。在Linux环境中,依次加载以下动态库:
libgomp.so.1
libiomp5.so
libdnnl.so.2
libmklml_intel.so
libonnxruntime.so.1.11.1
libpaddle2onnx.so.1.0.0rc2
这种新的加载方式有效解决了在Linux环境下的问题。
PaddleOCR 已经支持表格识别
这个许多客户反馈了许久,我在大概2023年五一的时候实现了表格识别功能,同时表格识别的模型我都加入了Sdcb.PaddleOCR.Models.LocalV3/Sdcb.PaddleOCR.Models.Online包,可以全离线表格识别或者按需下载模型表格识别。
它的使用示例如下(最新版本请参考这个链接:https://github.com/sdcb/PaddleSharp/blob/master/docs/ocr.md#table-recognition ):
// Install following packages:
// Sdcb.PaddleInference
// Sdcb.PaddleOCR
// Sdcb.PaddleOCR.Models.LocalV3
// Sdcb.PaddleInference.runtime.win64.mkl (required in Windows, linux using docker)
// OpenCvSharp4.runtime.win (required in Windows, linux using docker)
usingPaddleOcrTableRecognizer tableRec = new(LocalTableRecognitionModel.ChineseMobileV2_SLANET);
usingMat src = Cv2.ImRead(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "table.jpg"));
// Table detection
TableDetectionResult tableResult = tableRec.Run(src);
// Normal OCR
usingPaddleOcrAll all = new(LocalFullModels.ChineseV3);
all.Detector.UnclipRatio = 1.2f;
PaddleOcrResult ocrResult = all.Run(src);
// Rebuild table
stringhtml = tableResult.RebuildTable(ocrResult);
效果如图:
Raw table
Table model output
Rebuilt table
值得注意的是,PaddleSharp的表格识别是基于飞桨的深度学习模型,对于一些规整的表格,它的效果可能不如使用传统的OpenCV算法,如果想了解传统算法,可以参考我2021年.NET Conf China做的技术分享的pdf:[.NET玩转计算机视觉OpenCV - 周杰](https://io.starworks.cc:88/cv-public/2021/.NET%E7%8E%A9%E8%BD%AC%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89OpenCV.pdf)
两个新的模型包LocalV3/Online
新版本中,还引入了两个新的本地模型包:Sdcb.PaddleOCR.Models.LocalV3/Sdcb.PaddleOCR.Models.Online。一个表示完全本地——不用联网即可使用OCR,另一个表示需要联网,模型按需下载。
下面是使用Sdcb.PaddleOCR.Models.LocalV3的示例:
FullOcrModel model = LocalFullModels.EnglishV3; // 将EnglishV3换为其它模型,如ChineseV3
using(PaddleOcrAll all = newPaddleOcrAll(model))
{
// ...
}
下面是使用Sdcb.PaddleOCR.Models.Online的示例:
FullOcrModel model = awaitOnlineFullModels.EnglishV3.DownloadAsync;
using(PaddleOcrAll all = newPaddleOcrAll(model))
{
// ...
}
其中值得一提的是LocalV3,它将所有已知PaddleOCR的v3模型都包含了,安装这个包可以实现完全不联网部署。
为什么我需要淘汰原来的Sdcb.PaddleOCR.KnownModels?
说来话长,首先KnownModels有下面几个缺点:
主要原因是OCR需要使用的文字检测、180度分类、文字识别3个模型会下载到以语言命名的同一个文件夹中:
C:\Users\ZhouJie\AppData\Roaming\paddleocr-models\ppocr-v3>tree /f
C:.
│ key.txt
│
├─cls
│ inference.pdiparams
│ inference.pdiparams.info
│ inference.pdmodel
│
├─det
│ inference.pdiparams
│ inference.pdiparams.info
│ inference.pdmodel
│
└─rec
inference.pdiparams
inference.pdiparams.info
inference.pdmodel
如上图,每个模型的cls文件夹都可能重复占用磁盘空间、且需要重复下载——这不合理。
因此我引入了Sdcb.PaddleOCR.Models.Online,已经下载过的模型不会重复下载,这个行为和PaddleOCR上游Python代码一致。
次要问题是它的命名,KnownModels不能代表它是本地模型还是线上模型(虽然它本质是线上模型、按需下载),如果使用LocalV3和Online,则可以清晰地看出是本地模型或者线上模型。
识别阶段走batch
关于性能问题,新版本也做了一些重要的升级。OCR文字识别阶段能够自动支持batch处理,且走batch时会排序,将一样宽的文字行做一批识别,这样大大优化了程序的性能。
据一些客户的测试反馈,PaddleSharp的PaddleOCR的性能表现很好,甚至在某些场景下和官方的C++、Python版本相比有更好的表现。
总结
其实上面只是一些主要的,其实PaddleSharp项目还有许多非常有意思功能增强,比如RotationDetection和Paddle2Onnx,以后有机会我一一介绍。
我深信这些更新无疑会为.NET开源社区带来更多的可能性和便利。我将继续在这个领域上付出努力,为.NET社区做出更多的贡献。我期待着更多.NET爱好者能够加入我,一起提升PaddleSharp在.NET深度学习实战应用中的影响力,它将始终保持好用且免费,让我们共同期待它的更多精彩!
想尝试PaddleSharp的朋友,欢迎访问我的[Github](https://github.com/sdcb/PaddleSharp)
,也请给个Star🌟
喜欢的朋友 请关注我的微信公众号:【DotNet骚操作】
DotNet骚操作
- 上一篇:我想看快手上百科,快手百科知识
- 下一篇:快手直播代表性礼物(快手直播的代表性礼物)
相关推荐
-
- 周杰伦快手直播有哪些明星,快手周杰伦线上演唱会
-
直播平台快手快手周杰伦线上演唱会,下载并进入快手App,在搜索框中搜索“周杰伦”,即可跳转至周杰伦线上哥友会的门票预约页面投票选歌活动期间,在周杰伦线上哥友会开始前,平台将从用户投票选歌结果中选出一定数量的高票歌曲,作为周杰伦线上哥友会演唱...
-
2025-07-05 07:30 DouJia
-
- 逆袭人生攻略,快手小游戏逆袭人生破解版
-
柳岩被拍到恋爱实锤了!和个敦敦实实的老公脸男生同游,两人亲亲密密,开开心心。 期间还贡献了,一张甜度超高的迷妹盯,这才是比搂腰拉手更实的锤啊。 往前翻翻,一年多前,柳岩被拍到和一个同样敦敦实实的男生同回房间,看身形看脸都应该是一...
-
2025-07-04 21:30 DouJia
-
- 快手极速版下载领现金真的假的,快手极速版下载领现金一
-
舒适百搭快手极速版下载领现金一,多色字母印花,凸显青春活力!Skechers斯凯奇夏季男装圆领运动T恤SAMS16123,原价89元,目前天猫领取店铺10元优惠券(领取地址),实付79元包邮,三色可选,尺码齐全,喜欢快手极速版下载领现金...
-
2025-07-04 14:30 DouJia
-
- 快手小店pc端在哪里(pc端快手小店使用教程)
-
若用户想要使用电脑登录快手小店,只需打开电脑浏览器,打开浏览器后输入快手电商点击搜索,然后打开快手电商官网,打开后点击页面右上角快手小店pc端在哪里的商家登录,接着选择我是店主,输入快手账号与密码进行登录就可以快手小店pc端在哪里了快手使用...
-
2025-07-04 07:30 DouJia
-
- 快手小游戏勇士回归兑换码是多少,快手小游戏勇士回归兑换码是多少号
-
完成所有DIY任务快手小游戏勇士回归兑换码是多少,或者用凯德星30积分兑换即可获得一枚游戏币变身真快手小游戏勇士回归兑换码是多少的勇士,走出不可思议的迷宫?还有色彩魔术疯狂保龄球快手小游戏勇士回归兑换码是多少;原神IP战场英姿·蒙德篇再次...
-
2025-07-04 00:30 DouJia
-
- 抖音老板创始人是谁(抖音老板创始人是谁?)
-
1、一颗奔跑抖音老板创始人是谁的心也是蠢蠢欲动,去抖音老板创始人是谁了短视频平台才发现这口饭不好混了在朋友圈,喊话抖音各大老板欢迎来谈。2、不仅如此,长春店的老板抖音百万粉丝网红小哥哥废话少说速来围观!朱丽叶为朱古力准备了10份价值200...
-
2025-07-04 00:06 DouJia
-
- 快手极速版免费下载安装官网最新版,快手极速版免费下载2023
-
1、一快手极速版电脑版官方下载快手没有电脑版,只能通过模拟器安装1首先打开电脑浏览器页面,搜索输入安卓模拟器,进入页面后,点击立即下载2下载完成之后打开安卓模拟器,在模拟器内快手极速版免费下载2023的搜索页输入快手,然后点击右侧的查找按钮...
-
2025-06-07 18:30 DouJia
-
- 快手app官网免费下载(快手官方免费下载最新版本)
-
打开浏览器运行iPad上的浏览器快手app官网免费下载,打开任意网页搜索快手在搜索栏中输入“快手”进行搜索进入快手官网从搜索结果中找到并点击“快手”官网链接快手app官网免费下载,进入快手官网主页点击下载链接在快手官网主页中,找到并点击“免...
-
2025-06-07 18:16 DouJia
-
- 快手官方网页版入口无需下载安装(快手官方网页版入口无需下载安装快手音乐人)
-
1、快手官方网页版入口位于%E3%80%82快手,作为中国领先快手官方网页版入口无需下载安装的短视频社交平台,不仅提供了移动应用供用户下载和使用,同时也设有官方网页版,方便用户在电脑或其快手官方网页版入口无需下载安装他非移动设备上浏览和观看...
-
2025-06-07 16:30 DouJia
-
- 快手极速版下载安装2021最新版app,快手极速版免费下载安装2021最新版
-
1在快手极速版首页快手极速版免费下载安装2021最新版,点击主菜单2进入到快手极速版主菜单快手极速版免费下载安装2021最新版,点击“快手客服”3进入到快手极速版客服中心快手极速版免费下载安装2021最新版,点击“大屏模式”4进入到大屏模式...
-
2025-06-07 16:16 DouJia
-
- 快手客服怎么拉黑用户,快手客服售后怎么拉黑用户
-
上班早餐吃什么好? 快手简单易学的杂蔬米饼早餐食谱~ 明天早上就吃它们快手客服怎么拉黑用户了~ 食材:米饭100g、包菜20g、胡萝卜20g、洋葱10g、鸡蛋1个、玉米淀粉5g 做法: 1、胡萝卜洗净去皮后快...
-
2025-06-07 14:15 DouJia
-
- 快手极速版能赚钱吗,快手极速版正规赚钱下载
-
10快手极速版是快手视频快手极速版能赚钱吗的一个版本快手极速版能赚钱吗,用户可以阅读视频内容,但不能发布视频快手极速版同样提供小视频内容,每天大约能赚取3元的收入;个金币,但4小时后就不再计酬而抖音的体验不同,虽然金币数量较少,每天约。...
-
2025-06-07 12:30 DouJia
-
- 百度热搜
- 新浪热搜
- 1 把顶层设计和问计于民统一起来
- 2 热 中国驻日使馆提醒:密切关注地震动态
- 3 团购价318元吃完结账变2297元
- 4 这些创新高地正在拔地而起
- 5 特朗普签法案 B-2轰炸机飞越白宫
- 6 热 “热死人”不是开玩笑
- 7 陈楚生唱情歌像失恋了几百回
- 8 热 10元快剪店理发师月入2万
- 9 热 “上菜像端地雷”的暑假工火了
- 10 乌总统:俄对乌发动规模最大空袭之一
- 最新抖音
-
抖音名字起什么好听(抖音名字取什么好听?)
抖音名字推荐风韵与潮流相结合好听抖音名字起什么好听的名字流年碎影详细解释如下1名字的独特性在抖...
抖音月月大小姐中国速度在哪看,小月唱大小姐和大少爷的反派生涯
抖音中国速度指的是在中国互联网环境下抖音月月大小姐中国速度在哪看,特别是在抖音平台上抖音月月大小姐中...
40岁抖音名字女生简单气质,适合40岁的抖音名女
《庄子》是道家学派主要代表人物庄子所著,又名《南华经》,是道家经文,其内容丰富,博大精深,不仅是...
抖音创作服务平台手机登录不了吗,抖音创作服务平台手机登录不了
导读 王府半岛酒店经过庞大抖音创作服务平台手机登录不了的翻新工程抖音创作服务平...
抖音app官网免费下载极速版(下载抖音免费下载安装下载抖音极速版)
1打开手机自带抖音app官网免费下载极速版的应用市场2在搜索栏输入并搜索抖音极速版抖音app官网免费...
抖音骑手众包下载,抖音外卖众包
洗面奶是所有护肤程序里抖音外卖众包的第一步抖音外卖众包,只有将脸部清洁干净才能很好抖音外卖众包的...
抖音极速版下载app,抖音极速版下载App领1000金币怎么浏览才能行
抖音APP极速版下载安装教程,轻松开启短视频之旅在当今数字化的时代,短视频已经成为人们生活中不可或缺...
抖音官方最新版下载(2020抖音官网最新版本下载)
苹果手机升级抖音最新版本抖音官方最新版下载的教程如下打开AppStore在你的苹果手机主屏幕上抖音...
- 最新快手
-
周杰伦快手直播有哪些明星,快手周杰伦线上演唱会
直播平台快手快手周杰伦线上演唱会,下载并进入快手App,在搜索框中搜索“周杰伦”,即可跳转至周杰伦线...
逆袭人生攻略,快手小游戏逆袭人生破解版
柳岩被拍到恋爱实锤了!和个敦敦实实的老公脸男生同游,两人亲亲密密,开开心心。 期间还贡献了...
快手极速版下载领现金真的假的,快手极速版下载领现金一
舒适百搭快手极速版下载领现金一,多色字母印花,凸显青春活力!Skechers斯凯奇夏季男装圆领运...
快手小店pc端在哪里(pc端快手小店使用教程)
若用户想要使用电脑登录快手小店,只需打开电脑浏览器,打开浏览器后输入快手电商点击搜索,然后打开快手电...
快手小游戏勇士回归兑换码是多少,快手小游戏勇士回归兑换码是多少号
完成所有DIY任务快手小游戏勇士回归兑换码是多少,或者用凯德星30积分兑换即可获得一枚游戏币变身真...
抖音老板创始人是谁(抖音老板创始人是谁?)
1、一颗奔跑抖音老板创始人是谁的心也是蠢蠢欲动,去抖音老板创始人是谁了短视频平台才发现这口饭不好混了...
快手极速版免费下载安装官网最新版,快手极速版免费下载2023
1、一快手极速版电脑版官方下载快手没有电脑版,只能通过模拟器安装1首先打开电脑浏览器页面,搜索输入安...
快手app官网免费下载(快手官方免费下载最新版本)
打开浏览器运行iPad上的浏览器快手app官网免费下载,打开任意网页搜索快手在搜索栏中输入“快手”进...
- 热门关注