Recognize.js是一个Node.js物体识别神经网络框架
安装首先下载并安装 GraphicsMagick。在MacOSX中,你可以方便地使用 Homebrew 安装:brewinstallgraphicsmagick然后使用npm下载 Recognizejs:npmirecognizejs开始导入 Recognizejs 到你的项目中:constRecognizejs=require('recognizejs');尝试Recognizejs创建一个新的 Recognizejs 对象模型,然后初始化它:constmyModel=newRecognizejs();//初始化它//init函数会返回一个Promise对象awaitmyModel.init();PS:模型初始化可能需要1-2分钟时间(取决于你的设备性能),所以请耐心等待。 读取你的图片文件constfs=require('fs');constmyImgBuffer=fs.readFileSync(myImagePath);调用模型的 recognize 函数,并将你的图片的buffer通过参数传递给它://recognize函数会返回一个Promise对象,我们推荐你使用await语句获取它的返回值constresults=awaitmyModel.recognize(myImgBuffer);/*[{className:['className1','className2','className...'],probability:0.9},{className:['className1','className2','className...'],probability:0.599}]*/console.log(results);上述例子中的代码可以在 examples 文件夹中找到。API创建一个Recognizejs对象newRecognizejs(config?);参数:config 是一个可选的参数,并有以下的属性:{cocoSsd?:{//base:控制基本cnn模型,可以是“mobilenet_v1”,“mobilenet_v2”或“lite_mobilenet_v2”。默认为“lite_mobilenet_v2”。lite_mobilenet_v2的大小最小,推理速度最快。mobilenet_v2具有最高的分类精度。base?:ObjectDetectionBaseModel,//一个可选的字符串,用于指定模型的自定义网址。这对于无法访问GCP上托管的模型的区域/国家非常有用。modelUrl?:string},mobileNet?:{//MobileNet版本号。将1用于MobileNetV1,将2用于MobileNetV2。默认为1。version:1,//控制网络的宽度,交易性能的准确性。较小的alpha会降低准确性并提高性能。0.25仅适用于V1。默认为1.0。alpha?:0.25|.50|.75|1.0,//用于指定自定义模型url或tf.io.IOHandler对象的可选参数。返回模型对象。//如果您在中国大陆,请将modelUrl改为https://hub.tensorflow.google.cn上的模型。modelUrl?:string//可选参数,用于指定由modelUrl托管的训练模型期望的像素值范围。通常为[0,1]或[-1,1]。inputRange?:[number,number]}}cocoSsd 和 mobileNet 是两种不同的神经网络。cocoSsd 用来侦测一张图片中的多个物体,而 mobileNet 用来精确识别单个物体。初始化训练模型model.init(modelType?);init 函数会返回一个 Promise 对象,你可以使用 await 语句来处理它。参数:modelType 可以是一个字符串或数组。您可以在此处设置要加载的模型,以避免加载不需要的模型。[如果不设置modelType,它将同时加载cocoSsd和mobileNet模型]例子:model.init();//或model.init(['cocoSsd','mobileNet']);//或model.init('cocoSsd');//或model.init('mobileNet');如果你不使用 init 函数加载模型,当你需要使用它们的时候,他们会 自动 加载,但是加载模型可能需要很长的时间,所以请根据情况选择加载方法。识别图片中的物体model.recognize(buf);recognize 函数返回一个 Promise 对象,你可以使用 await 语句来获取它的返回值。参数:buf 参数需要你传递图片文件的Buffer数据,你可以使用fs模块读取图片文件。返回值:[{className:['giantpanda','panda','pandabear','coonbear','Ailuropodamelanoleuca'],probability:0.9819085597991943},{className:['Chihuahua'],probability:0.006128392647951841},{className:['Frenchbulldog'],probability:0.0026271280366927385}]例子:constmyImgBuf=require('fs').readFileSync(myImgPath);model.recognize(myImgBuf);侦测图片中的全部物体model.detect(buf)detect 函数返回一个 Promise 对象,你可以使用 await 语句来获取它的返回值。参数:buf 参数需要你传递图片文件的Buffer数据,你可以使用fs模块读取图片文件。返回值:[{bbox:{x:66.92952662706375,y:158.30181241035461,width:157.67111629247665,height:165.00252485275269},class:'bear',score:0.9642460346221924},{bbox:{x:180.56899309158325,y:-0.32786130905151367,width:246.6680407524109,height:308.3251893520355},class:'bear',score:0.9133073091506958}]例子:constmyImgBuf=require('fs').readFileSync(myImgPath);model.detect(myImgBuf);侦测图片中的全部物体并识别它们model.detectAndRecognize(buf);detectAndRecognize 函数返回一个 Promise 对象,你可以使用 await 语句来获取它的返回值。参数:buf 参数需要你传递图片文件的Buffer数据,你可以使用fs模块读取图片文件。返回值:[recognizeObject,recognizeObject,recognizeObject]例子:constmyImgBuf=require('fs').readFileSync(myImgPath);model.detectAndRecognize(myImgBuf);点击空白处退出提示
评论