CN111881401A - 基于WebAssembly的浏览器深度学习方法及系统 - Google Patents
基于WebAssembly的浏览器深度学习方法及系统 Download PDFInfo
- Publication number
- CN111881401A CN111881401A CN202010770509.XA CN202010770509A CN111881401A CN 111881401 A CN111881401 A CN 111881401A CN 202010770509 A CN202010770509 A CN 202010770509A CN 111881401 A CN111881401 A CN 111881401A
- Authority
- CN
- China
- Prior art keywords
- browser
- file
- webassembly
- wasm
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000013135 deep learning Methods 0.000 title claims abstract description 44
- 238000012545 processing Methods 0.000 claims abstract description 36
- 238000011068 loading method Methods 0.000 claims abstract description 12
- 238000009877 rendering Methods 0.000 claims abstract description 8
- 238000005538 encapsulation Methods 0.000 claims abstract description 5
- 238000001514 detection method Methods 0.000 claims description 10
- 238000005516 engineering process Methods 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 6
- 238000011056 performance test Methods 0.000 claims description 3
- 230000003213 activating effect Effects 0.000 claims description 2
- 238000004026 adhesive bonding Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 7
- 238000012549 training Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- JEIPFZHSYJVQDO-UHFFFAOYSA-N iron(III) oxide Inorganic materials O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Electrically Operated Instructional Devices (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于WebAssembly的浏览器深度学习方法及系统,属于浏览器深度学习技术领域,要解决的技术问题为如何实现浏览器的深度学习、使得浏览器具有集成AI的能力。方法包括如下步骤:构建WebAssembly格式的wasm文件,将wasm文件加载至浏览器;对于满足wasm文件应用所需特性的浏览器进行环境初始化;浏览器页面主线程从底层环境获取资源信息后,同时创建多个worker子线程,worker子线程运行wasm文件,对资源信息进行数据处理并将封装后处理结果异步写入INdexedDB数据库;浏览器页面主线程从IndexedDB数据库获取处理结果完成页面的渲染。系统用于执行上述方法。
Description
技术领域
本发明涉及浏览器深度学习技术领域,具体地说是一种基于WebAssembly的浏览器深度学习方法及系统。
背景技术
随着近几年前端的高速发展,浏览器生态日益完善,浏览器的性能不断的得到增强,JavaScript诞生起到现在已经变成最流行的编程语言。随着Web应用变得更多更复杂,JavaScript的一些问题逐渐暴露出来。用JavaScript开发,由于是弱类型的语言,代码量大时难以工程化;另外由于JavaScript引擎,应用很难以较高的性能运行。微软的TypeScript虽然能够解决工程化的问题,但最终还是编译成JavaScript而运行;而谷歌提出的Dart只能在Chrome预览版中运行,在其他浏览器中运行仍需要编译成JavaScript,并且Dart作为一门新的编程语言,具有一定的学习和迁移成本。
另外,目前的AI技术大多是通过API接口的形式,由服务端向客户端提供数据,这样造成客户端过度的依赖服务端。由于用户数据实时的传输给服务端,用户的隐私得不到保证,而且返回数据依赖网络质量,服务端的压力过大,需要大量的并发来处理这些数据。
近几年WebAssembly、Workers、IndexedDB等技术得到主流浏览器的广泛支持,使浏览器不仅仅局限于数据的展示,还可以具有数据高效处理、数据分析及存储的功能。这些技术的结合,使得浏览器具有一定的集成AI的能力,能够在浏览器直接进行小规模、短时间的深度学习。
基于上述,如何实现浏览器的深度学习、使得浏览器具有集成AI的能力,是需要解决的技术问题。
发明内容
本发明的技术任务是针对以上不足,提供一种基于WebAssembly的浏览器深度学习方法及系统,来解决如何实现浏览器的深度学习、使得浏览器具有集成AI的能力的问题。
第一方面,本发明提供一种基于WebAssembly的浏览器深度学习方法,包括如下步骤:
基于tfjs-backend-wasm框架、构建WebAssembly格式的wasm文件,将上述wasm文件加载至浏览器;
对浏览器进行性能测试,对于满足wasm文件应用所需特性的浏览器进行环境初始化,初始化IndexedDB数据库并使用ServiceWorker代理浏览器页面;
浏览器页面主线程从底层环境获取资源信息后,同时创建多个worker子线程,worker子线程运行wasm文件,对资源信息进行数据处理并将封装后处理结果异步写入INdexedDB数据库;
浏览器页面主线程从IndexedDB数据库获取处理结果完成页面的渲染。
作为优选,基于tfjs-backend-wasm框架、将训练程序构建为WebAssembly格式的wasm文件,并使用MediaPipe BlazeFace模型的人脸识别检测,作为wasm文件的后端程序;
通过WebPack技术构建前端应用,将wasm文件打包加载至浏览器。
作为优选,ServiceWorker相对于于浏览器页面主线程是独立的,基于Promise实现;
使用ServiceWorker代理浏览器页面,包括:
浏览器页面下载并安装并激活ServiceWorker;
通过ServiceWorker代理wasm文件,通过ServiceWorker更新及删除资源信息;
通过ServiceWorker向用户发送信息,通知用户拉取最新的资源信息。
作为优选,浏览器页面通过浏览器API调用底层环境设备获取资源信息,并将获取的资源信息以数据流的形式传送至worker子线程;
所述底层环境设备包括但不限于CPU、GPU、内存和I/O设备,所述IO设备包括但不限于摄像头IO设备和声音IO设备。
作为优选,所述worker子线程生成新的worker子线程,所述新的worker子线程运行wasm文件,对资源信息进行数据处理并将封装后处理结果异步写入INdexedDB数据库。
作为优选,浏览器页面主线程与worker子线程之间以及浏览器页面主线程与新的worker子线程之间均通过postMessage()方法传送信息,并通过onmessage事件接收信息。
作为优选,所述worker子线程通过如下方法运行wasm文件:所述worker子线程导入JavaScript粘合代码,实例化wasm文件。
作为优选,所述worker子线程运行wasm文件的同时,实例化JavaScript库文件;
和/或,所述worker子线程运行wasm文件的同时,调用服务端API兜底。
第二方面,本发明提供一种基于WebAssembly的浏览器深度学习系统,所述系统用于执行如第一方面任一项所述基于WebAssembly的浏览器深度学习方法,所述系统包括:
WebAssembly应用模块,所述WebAssembly应用模块由加载运行在浏览器中的wasm文件生成,所述wasm文件为基于tfjs-backend-wasm框架构建的WebAssembly格式的文件;
IndexedDB数据库,所述IndexedDB数据库加载于浏览器中,用于缓存数据;
ServiceWorker,所述ServiceWorker下载安装于浏览器中,用于代理浏览器页面;
浏览器页面主线程,所述浏览器页面主线程用于从底层环境获取资源信息,并在获取资源信息后同时创建多个worker子线程,所述worker子线程能够生成新的worker子线程,所述worker子线程与浏览器页面主线程之间通过postMessage()方法传送信息,并通过onmessage事件接收信息;
所述worker子线程运行wasm文件、实例化JavaScript库文件、和/或调用服务端API,用于对资源信息进行数据处理并对处理结果进行封装,并用于将封装后处理结果异步写入IndexedDB数据库;所述浏览器页面主线程还用于从IndexedDB数据库获取处理结果并渲染浏览器页面。
作为优选,所述浏览器页面通过浏览器API调用底层环境设备获取资源信息,并将获取的资源信息以数据流的形式传送至worker子线程;
所述底层环境设备包括但不限于CPU、GPU、内存和I/O设备,所述IO设备包括但不限于摄像头IO设备和声音IO设备;
所述wasm文件为通过如下方法得到的:基于tfjs-backend-wasm框架、将训练程序构建为WebAssembly格式的wasm文件,并使用MediaPipe BlazeFace模型的人脸识别检测,作为wasm文件的后端程序;
所述wasm文件通过如下方法加载至浏览器:通过WebPack技术构建前端应用,将wasm文件打包加载至浏览器;
所述ServiceWorker代理浏览器页面,包括代理如下操作:
更新及删除资源信息;
向用户发送信息,通知用户拉取最新的资源信息。
本发明的基于WebAssembly的浏览器深度学习方法及系统具有以下优点:
1、基于WebAssembly、IndexedDB数据库以及ServiceWorker实现浏览器的深度学习,使得浏览器具有数据存储、数据处理的功能,相较于其他环境,不需要安装大量的依赖,真正做到了随时打开随时使用;
2、相对于JavaScript引擎,基于wasm的应用性能得到了巨大的提升,可以在大多数的设备包括移动端得到应用,尤其是缺乏WebGL支持或GPU速度较慢的低端移动设备;
3、基于tfjs-backend-wasm框架、将训练程序构建为WebAssembly格式的wasm文件,tfjs-backend-wasm框架属于Tensorflow框架,核心代码可以在客户端得到复用,训练的结果也可以通过导入Keras的形式直接使用,服务端的训练程序及结果集得到了很好的利用;
4、大量计算都是在本地运行的,数据经过在本地计算程序的加工处理后才返回到服务端进行统计,而不需要将用户隐私信息实时的发送到服务端,用户隐私得到了保护;
5、应用通过Service Worker的代理,能够透明便捷的处理缓存,无需打开应用即可在后台同步数据吗,在初始化数据后,之后在弱网络甚至无网络环境下都能够正常的使用应用,具有高效的缓存及更新机制。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
下面结合附图对本发明进一步说明。
图1为实施例1基于WebAssembly的浏览器深度学习方法的流程框图;
图2为实施例1基于WebAssembly的浏览器深度学习方法中使用npm构建wasm应用的关键代码;
图3为实施例1基于WebAssembly的浏览器深度学习方法中人脸识别检测程序加载代码;
图4为实施例1基于WebAssembly的浏览器深度学习方法中人脸识别检测程序检测结果代码;
图5为实施例1基于WebAssembly的浏览器深度学习方法中ServiceWorker生命周期;
图6为实施例1基于WebAssembly的浏览器深度学习方法中worker子线程工作流程框图;
图7为实施例2基于WebAssembly的浏览器深度学习系统的项目框架结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。
需要理解的是,在本发明实施例中的“多个”,是指两个或两个以上。
本发明实施例中的属于“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B这三种情况。另外,本文中字符“/”一般表示前后关联对象是一种“或”关系。
本发明实施例提供基于WebAssembly的浏览器深度学习方法及系统,用于解决如何实现浏览器的深度学习、使得浏览器具有集成AI的能力的技术问题。
实施例1:
本发明的一种基于WebAssembly的浏览器深度学习方法,包括如下步骤:
S100、基于tfjs-backend-wasm框架、构建WebAssembly格式的wasm文件,将上述wasm文件加载至浏览器;
S200、对浏览器进行性能测试,对于满足wasm文件应用所需特性的浏览器进行环境初始化,初始化IndexedDB数据库并使用ServiceWorker代理浏览器页面;
S300、浏览器页面主线程从底层环境获取资源信息后,同时创建多个worker子线程,worker子线程运行wasm文件,对资源信息进行数据处理并将封装后处理结果异步写入INdexedDB数据库;
S400、浏览器页面主线程从IndexedDB数据库获取处理结果完成页面的渲染。
本实施例步骤S100中,基于tfjs-backend-wasm框架、将训练程序构建为WebAssembly格式的wasm文件,并使用MediaPipe BlazeFace模型的人脸识别检测,作为wasm文件的后端程序。通过开源公共包的支持,只需要加载模型权重并传递图像即可进行人脸模型的坐标检测。通过开源公共包的支持,只需要加载模型权重并传递图像即可进行人脸模型的坐标检测,代码如图2所示,检测模型如图3所示。构建wasm文件后,使用WebPack技术构建前端应用,引入wasm的npm包构建应用,代码如图4所示。
本实施例中使用WebAssembly为深度学习提供支持,WebAssembly是体积小且加载快的二进制格式,可以在所有现代浏览器(包括移动浏览器)中实现近乎原生的性能,而且不需要插件,许多语言,包括C、C#、Go和Rust,都可以编译成面向基于栈的WebAssembly虚拟机的代码。字节码格式是一种更紧凑的代码交付方式,作为字节码的格式,不需要解析脚本和预编译来进行优化,代码可以直接翻译成本机指令。另外Wasm实现了自己的指令集,因此不受JavaScript语言的限制。
同时,本实施例中使用tensorflow.js作为深度学习框架,tensorflow.js作为Tensorflow的一种,可以直接导入Keras使用,训练的结果集可以复用,达到单平台训练、多平台复用。
步骤S200中,首先检测浏览器是否符合要求,系统是否符合最低要求,通过运行一系列检验程序的形式,测试程序所需的特性是否都作为浏览器的实验性特性开启,对于满足wasm文件应用所需特性的浏览器进行环境初始化,初始化IndexedDB数据库,方便之后计算程序的数据存储及操作;并使用ServiceW-orker代理浏览器页面。
由于Service Workers的控制,Service Worker会被立刻下载,浏览器页面会进行安装,安装成功之后会被激活。项目被Service Workers所代理,后续资源的更新及删除都通过Service Workers所实现。由于Service Workers的机制,即使没有用户访问特定站点,也可以更新缓存,实现后台同步,Service Worke可以通过向用户发送信息的形式,通知用户拉取最新的资源。ServiceWorkers相对于浏览器的主线程是独立的,并且是基于Promise实现的,因此是完全异步的,在运行的过程中不会阻塞主线程。具体过程如图5所示。
IndexedDB是一种底层API,用于客户端存储大量结构化数据(包括,文件/二进制大型对象(blobs)。该API使用索引来实现对该数据的高性能搜索。通过对IndexedDB的封装,可以使用rxjs异步的操作数据库,更利于工程化的开发。并且IndexedDB在Web Worker中可以使用,这样可以实时、高效的通过子线程去存储、操作数据,而不比影响到主线程的执行。
使用Service Workers作为服务端和客户端(浏览器)之间的代理服务器,资源的创建、更新及删除等操作都通过Service Workers来实现。通过Service Workers可以创建有效的用户离线体验。ServiceWorkers相对于浏览器的主线程是独立的,并且是基于Promise实现的,因此是完全异步的,在运行的过程中不会阻塞主线程。
步骤S300中,浏览器页面通过浏览器API,调用底层环境设备,例如系统摄像头、声音等I/O设备,实时的将捕获到的信息以数据流的形式传递。浏览器页面主线程创建worker子线程,主线程将捕获到的数据流发送到worker子线程中,子线程对信息进行数据处理。浏览器页面主线程和worker线程之间通过使用postMessage()方法来发送信息,通onmessage事件来接收信息。Web Workers可以使应用程序独立与主线程运行在后台线程中,这样可以在独立线程中运行高复杂度的任务,而不会造成主线程的阻塞。
实时收集用户的操作,如鼠标键盘事件、摄像头信息、声音信息以及外置设备等,确保能够及时的获取用户数据信息,将这些信息实时的发送到程序去处理。
具体的,如图6所示,浏览器页面主线程从底层环境获取资源信息后,同时创建多个worker子线程,worker子线程导入JavaScript粘合代码,实例化wasm文件以运行wasm文件,通过计算程序实时对资源信息进行数据处理,并将封装后处理结果异步写入INdexedDB数据库,处理完毕后,worker子线程通过postMessage()将信息传给浏览器页面主线程,浏览器页面主线程从IndexedDB数据库获取处理结果完成页面的渲染。
通过在浏览器创建多个Workers,开启子线程,使用多线程并发处理数据,确保程序能够在独立线程中运行高复杂度的任务,而不会造成主线程的阻塞。在worker子线程中可以另外生成新的worker子线程,并且新生成的worker子线程属于同一个主线程,都能够独立的与主线程进行通信。
同时为了防止在特殊情况下wasm效率过低,worker子线程实例化JavaScript库文件;在训练初期还可以调用服务端API兜底。
在worker子线程还可以另外生成新的Worker,并且都能与主线程进行通信。
本发明的基于WebAssembly的浏览器深度学习方法,能够高效的对数据进行收集、加工、处理,最终转化为可处理数据,返回给主线程,直观的展示给用户,给用户在浏览器提供近乎原生的体验。
实施例2:
如图7所示,本发明的基于WebAssembly的浏览器深度学习系统,包括WebAssembly应用模块、IndexedDB数据库、ServiceWorker应用模块以及浏览器页面主线程,WebAssembly应用模块由加载运行在浏览器中的wasm文件生成,wasm文件为基于tfjs-backend-wasm框架构建的WebAssembly格式的文件;IndexedDB数据库加载于浏览器中,用于缓存数据;ServiceWorker应用模块下载安装于浏览器中,用于代理浏览器页面;浏览器页面主线程用于从底层环境获取资源信息,并在获取资源信息后同时创建多个worker子线程,worker子线程能够生成新的worker子线程,worker子线程与浏览器页面主线程之间通过postMessage()方法传送信息,并通过onmessage事件接收信息;worker子线程运行wasm文件、实例化JavaScript库文件、和/或调用服务端API,用于对资源信息进行数据处理并对处理结果进行封装,并用于将封装后处理结果异步写入IndexedDB数据库;浏览器页面主线程还用于从IndexedDB数据库获取处理结果并渲染浏览器页面。
其中,浏览器页面通过浏览器API调用底层环境设备获取资源信息,并将获取的资源信息以数据流的形式传送至worker子线程。上述底层环境设备包括但不限于CPU、GPU、内存和I/O设备,IO设备包括但不限于摄像头IO设备和声音IO设备。
wasm文件为通过如下方法得到的:基于tfjs-backend-wasm框架、将训练程序构建为WebAssembly格式的wasm文件,并使用MediaPipe BlazeFace模型的人脸识别检测,作为wasm文件的后端程序。
wasm文件通过如下方法加载至浏览器:通过WebPack技术构建前端应用,将wasm文件打包加载至浏览器。
ServiceWorker代理浏览器页面,包括代理如下操作:
更新及删除资源信息;
向用户发送信息,通知用户拉取最新的资源信息。
本发明的基于WebAssembly的浏览器深度学习系统,可执行实施例1公开的基于WebAssembly的浏览器深度学习方法。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。
Claims (10)
1.基于WebAssembly的浏览器深度学习方法,其特征在于包括如下步骤:
基于tfjs-backend-wasm框架、构建WebAssembly格式的wasm文件,将上述wasm文件加载至浏览器;
对浏览器进行性能测试,对于满足wasm文件应用所需特性的浏览器进行环境初始化,初始化IndexedDB数据库并使用ServiceWorker代理浏览器页面;
浏览器页面主线程从底层环境获取资源信息后,同时创建多个worker子线程,worker子线程运行wasm文件,对资源信息进行数据处理并将封装后处理结果异步写入INdexedDB数据库;
浏览器页面主线程从IndexedDB数据库获取处理结果完成页面的渲染。
2.根据权利要求1所述的基于WebAssembly的浏览器深度学习方法,其特征在于基于tfjs-backend-wasm框架、将训练程序构建为WebAssembly格式的wasm文件,并使用MediaPipe BlazeFace模型的人脸识别检测,作为wasm文件的后端程序;
通过WebPack技术构建前端应用,将wasm文件打包加载至浏览器。
3.根据权利要求1所述的基于WebAssembly的浏览器深度学习方法,其特征在于ServiceWorker相对于于浏览器页面主线程是独立的,基于Promise实现;
使用ServiceWorker代理浏览器页面,包括:
浏览器页面下载并安装并激活ServiceWorker;
通过ServiceWorker代理wasm文件,通过ServiceWorker更新及删除资源信息;
通过ServiceWorker向用户发送信息,通知用户拉取最新的资源信息。
4.根据权利要求1所述的基于WebAssembly的浏览器深度学习方法,其特征在于浏览器页面通过浏览器API调用底层环境设备获取资源信息,并将获取的资源信息以数据流的形式传送至worker子线程;
所述底层环境设备包括但不限于CPU、GPU、内存和I/O设备,所述IO设备包括但不限于摄像头IO设备和声音IO设备。
5.根据权利要求1-4任一项所述的基于WebAssembly的浏览器深度学习方法,其特征在于所述worker子线程生成新的worker子线程,所述新的worker子线程运行wasm文件,对资源信息进行数据处理并将封装后处理结果异步写入INdexedDB数据库。
6.根据权利要求5所述的基于WebAssembly的浏览器深度学习方法,其特征在于浏览器页面主线程与worker子线程之间以及浏览器页面主线程与新的worker子线程之间均通过postMessage()方法传送信息,并通过onmessage事件接收信息。
7.根据权利要求1-4任一项所述的基于WebAssembly的浏览器深度学习方法,其特征在于所述worker子线程通过如下方法运行wasm文件:所述worker子线程导入JavaScript粘合代码,实例化wasm文件。
8.根据权利要求1-4任一项所述的基于WebAssembly的浏览器深度学习方法,其特征在于所述worker子线程运行wasm文件的同时,实例化JavaScript库文件;
和/或,所述worker子线程运行wasm文件的同时,调用服务端API兜底。
9.基于WebAssembly的浏览器深度学习系统,其特征在于所述系统用执行如权利要求1-8任一项所述基于WebAssembly的浏览器深度学习方法,所述系统包括:
WebAssembly应用模块,所述WebAssembly应用模块由加载运行在浏览器中的wasm文件生成,所述wasm文件为基于tfjs-backend-wasm框架构建的WebAssembly格式的文件;
IndexedDB数据库,所述IndexedDB数据库加载于浏览器中,用于缓存数据;
ServiceWorker,所述ServiceWorker下载安装于浏览器中,用于代理浏览器页面;
浏览器页面主线程,所述浏览器页面主线程用于从底层环境获取资源信息,并在获取资源信息后同时创建多个worker子线程,所述worker子线程能够生成新的worker子线程,所述worker子线程与浏览器页面主线程之间通过postMessage()方法传送信息,并通过onmessage事件接收信息;
所述worker子线程运行wasm文件、实例化JavaScript库文件、和/或调用服务端API,用于对资源信息进行数据处理并对处理结果进行封装,并用于将封装后处理结果异步写入IndexedDB数据库;所述浏览器页面主线程还用于从IndexedDB数据库获取处理结果并渲染浏览器页面。
10.根据权利要求9所述的基于WebAssembly的浏览器深度学习系统,其特征在于所述浏览器页面通过浏览器API调用底层环境设备获取资源信息,并将获取的资源信息以数据流的形式传送至worker子线程;
所述底层环境设备包括但不限于CPU、GPU、内存和I/O设备,所述IO设备包括但不限于摄像头IO设备和声音IO设备;
所述wasm文件为通过如下方法得到的:基于tfjs-backend-wasm框架、将训练程序构建为WebAssembly格式的wasm文件,并使用MediaPipe BlazeFace模型的人脸识别检测,作为wasm文件的后端程序;
所述wasm文件通过如下方法加载至浏览器:通过WebPack技术构建前端应用,将wasm文件打包加载至浏览器;
所述ServiceWorker代理浏览器页面,包括代理如下操作:
更新及删除资源信息;
向用户发送信息,通知用户拉取最新的资源信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010770509.XA CN111881401B (zh) | 2020-08-04 | 2020-08-04 | 基于WebAssembly的浏览器深度学习方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010770509.XA CN111881401B (zh) | 2020-08-04 | 2020-08-04 | 基于WebAssembly的浏览器深度学习方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111881401A true CN111881401A (zh) | 2020-11-03 |
CN111881401B CN111881401B (zh) | 2023-12-26 |
Family
ID=73210124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010770509.XA Active CN111881401B (zh) | 2020-08-04 | 2020-08-04 | 基于WebAssembly的浏览器深度学习方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111881401B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112291628A (zh) * | 2020-11-25 | 2021-01-29 | 杭州视洞科技有限公司 | 一种基于web浏览器的多线程视频解码播放方法 |
CN112307449A (zh) * | 2020-11-10 | 2021-02-02 | 上海市数字证书认证中心有限公司 | 权限分级管理方法、装置、电子设备和可读存储介质 |
CN112435320A (zh) * | 2020-11-05 | 2021-03-02 | 北京浪潮数据技术有限公司 | 一种数据处理方法、装置及电子设备和存储介质 |
CN112527413A (zh) * | 2020-12-23 | 2021-03-19 | 平安普惠企业管理有限公司 | 一种页面加载方法、装置、设备及存储介质 |
CN112632159A (zh) * | 2020-12-01 | 2021-04-09 | 腾讯科技(深圳)有限公司 | 数据库访问控制方法及装置、电子设备、存储介质 |
CN112650502A (zh) * | 2020-12-31 | 2021-04-13 | 广州方硅信息技术有限公司 | 批处理任务处理方法、装置、计算机设备和存储介质 |
CN113190367A (zh) * | 2021-07-02 | 2021-07-30 | 成都数联铭品科技有限公司 | 基于浏览器实现的跨系统数据交互方法及装置、电子设备 |
CN113806054A (zh) * | 2021-09-27 | 2021-12-17 | 北京市商汤科技开发有限公司 | 任务处理方法及装置、电子设备和存储介质 |
CN114189369A (zh) * | 2021-11-30 | 2022-03-15 | 中国建设银行股份有限公司 | 一种浏览器下的安全通讯方法及装置 |
CN115116585A (zh) * | 2022-07-14 | 2022-09-27 | 杭州华卓信息科技有限公司 | 一种基于web的本地DICOM文件渲染方法及装置 |
CN115658330A (zh) * | 2022-12-23 | 2023-01-31 | 南京大学 | 面向WebAssembly的跨平台GPU虚拟化方法 |
CN116542334A (zh) * | 2023-05-12 | 2023-08-04 | 北京大学 | 基于Web浏览器的深度神经网络推理调度方法和装置 |
CN118377625A (zh) * | 2024-06-25 | 2024-07-23 | 硕橙(厦门)科技有限公司 | 一种在线频谱分析方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160226888A1 (en) * | 2015-01-29 | 2016-08-04 | Government Of The United States As Represetned By The Secretary Of The Air Force | Web malware blocking through parallel resource rendering |
WO2019242559A1 (zh) * | 2018-06-20 | 2019-12-26 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置、电子设备、系统及存储介质 |
CN110765381A (zh) * | 2019-10-10 | 2020-02-07 | 许昌许继软件技术有限公司 | 基于WebAssembly技术的配网主站的Web发布方法及系统 |
-
2020
- 2020-08-04 CN CN202010770509.XA patent/CN111881401B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160226888A1 (en) * | 2015-01-29 | 2016-08-04 | Government Of The United States As Represetned By The Secretary Of The Air Force | Web malware blocking through parallel resource rendering |
WO2019242559A1 (zh) * | 2018-06-20 | 2019-12-26 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置、电子设备、系统及存储介质 |
CN110620959A (zh) * | 2018-06-20 | 2019-12-27 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置、电子设备、系统及存储介质 |
CN110765381A (zh) * | 2019-10-10 | 2020-02-07 | 许昌许继软件技术有限公司 | 基于WebAssembly技术的配网主站的Web发布方法及系统 |
Non-Patent Citations (2)
Title |
---|
任双君;周旭;任勇毛;李灵玲;: "基于HTML5的浏览器端多线程下载技术", 计算机系统应用, no. 11 * |
林宏阳;彭建山;赵世斌;朱俊虎;许航;: "JavaScript引擎漏洞检测方法综述", 计算机工程与应用, no. 11 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112435320A (zh) * | 2020-11-05 | 2021-03-02 | 北京浪潮数据技术有限公司 | 一种数据处理方法、装置及电子设备和存储介质 |
CN112435320B (zh) * | 2020-11-05 | 2023-12-22 | 北京浪潮数据技术有限公司 | 一种数据处理方法、装置及电子设备和存储介质 |
CN112307449A (zh) * | 2020-11-10 | 2021-02-02 | 上海市数字证书认证中心有限公司 | 权限分级管理方法、装置、电子设备和可读存储介质 |
CN112307449B (zh) * | 2020-11-10 | 2022-12-27 | 上海市数字证书认证中心有限公司 | 权限分级管理方法、装置、电子设备和可读存储介质 |
CN112291628A (zh) * | 2020-11-25 | 2021-01-29 | 杭州视洞科技有限公司 | 一种基于web浏览器的多线程视频解码播放方法 |
CN112632159A (zh) * | 2020-12-01 | 2021-04-09 | 腾讯科技(深圳)有限公司 | 数据库访问控制方法及装置、电子设备、存储介质 |
CN112632159B (zh) * | 2020-12-01 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 数据库访问控制方法及装置、电子设备、存储介质 |
CN112527413A (zh) * | 2020-12-23 | 2021-03-19 | 平安普惠企业管理有限公司 | 一种页面加载方法、装置、设备及存储介质 |
CN112650502A (zh) * | 2020-12-31 | 2021-04-13 | 广州方硅信息技术有限公司 | 批处理任务处理方法、装置、计算机设备和存储介质 |
CN113190367A (zh) * | 2021-07-02 | 2021-07-30 | 成都数联铭品科技有限公司 | 基于浏览器实现的跨系统数据交互方法及装置、电子设备 |
CN113806054A (zh) * | 2021-09-27 | 2021-12-17 | 北京市商汤科技开发有限公司 | 任务处理方法及装置、电子设备和存储介质 |
WO2023045207A1 (zh) * | 2021-09-27 | 2023-03-30 | 上海商汤智能科技有限公司 | 任务处理方法及装置、电子设备、存储介质和计算机程序 |
CN114189369A (zh) * | 2021-11-30 | 2022-03-15 | 中国建设银行股份有限公司 | 一种浏览器下的安全通讯方法及装置 |
CN114189369B (zh) * | 2021-11-30 | 2024-04-26 | 中国建设银行股份有限公司 | 一种浏览器下的安全通讯方法及装置 |
CN115116585A (zh) * | 2022-07-14 | 2022-09-27 | 杭州华卓信息科技有限公司 | 一种基于web的本地DICOM文件渲染方法及装置 |
CN115116585B (zh) * | 2022-07-14 | 2023-10-03 | 杭州华卓信息科技有限公司 | 一种基于web的本地DICOM文件渲染方法及装置 |
CN115658330A (zh) * | 2022-12-23 | 2023-01-31 | 南京大学 | 面向WebAssembly的跨平台GPU虚拟化方法 |
CN116542334B (zh) * | 2023-05-12 | 2023-10-20 | 北京大学 | 基于Web浏览器的深度神经网络推理调度方法和装置 |
CN116542334A (zh) * | 2023-05-12 | 2023-08-04 | 北京大学 | 基于Web浏览器的深度神经网络推理调度方法和装置 |
CN118377625A (zh) * | 2024-06-25 | 2024-07-23 | 硕橙(厦门)科技有限公司 | 一种在线频谱分析方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111881401B (zh) | 2023-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111881401B (zh) | 基于WebAssembly的浏览器深度学习方法及系统 | |
US9405555B2 (en) | Automated code splitting and pre-fetching for improving responsiveness of browser-based applications | |
US20200057658A1 (en) | Method and system for loading resources | |
EP2062136B1 (en) | System and method for using stream objects to perform stream processing in a text-based computing environment | |
CN112329945A (zh) | 一种模型部署及推理的方法和装置 | |
KR20010020250A (ko) | 객체 지향의 프로그래밍 언어를 위한 하드웨어 가속기 | |
US20090328012A1 (en) | Compiler in a managed application context | |
US20200404046A1 (en) | Application Download Method and Apparatus, Application Sending Method and Apparatus, and System | |
US9678814B2 (en) | Implementing a java method | |
CN112882709B (zh) | 基于容器引擎系统的渲染方法、装置、设备以及存储介质 | |
JP6379654B2 (ja) | 処理実行プログラム、処理実行方法、及び情報処理装置 | |
CN112506602B (zh) | 页面生成方法及装置、电子设备、计算机可读介质 | |
CN111026490A (zh) | 页面渲染方法、装置、电子设备及存储介质 | |
CN113010827A (zh) | 页面渲染方法、装置、电子设备以及存储介质 | |
EP4209894A1 (en) | Cloud code development system, method, and apparatus, device, and storage medium | |
CN111782181A (zh) | 代码生成方法、装置、电子设备以及存储介质 | |
CN112506854A (zh) | 页面模板文件的存储和页面生成方法、装置、设备及介质 | |
CN112835582A (zh) | 基于容器引擎的渲染方法、装置、设备以及存储介质 | |
EP1949228B1 (en) | Asynchronous just-in-time compilation | |
US11429358B2 (en) | Representing asynchronous state machine in intermediate code | |
CN112379945B (zh) | 用于运行应用的方法、装置、设备以及存储介质 | |
CN112860235B (zh) | 处理文本的方法、装置、设备和存储介质 | |
EP3115898B1 (en) | Method for generating user-level events for an application | |
CN114911541A (zh) | 配置信息的处理方法、装置、电子设备及存储介质 | |
CN111708630A (zh) | 基于web前端技术的多线程处理方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |