javascript之基於tensorflow的posenet項目

1)源代碼如下:

git clone https://github.com/tensorflow/tfjs-models

2)編譯:

tfjs-models>yarn

tfjs-models>cd posenet

tfjs-models\posenet>yarn

tfjs-models\posenet>cd demos

\tfjs-models\posenet\demos>yarn

tfjs-models\posenet\demos>yarn parcel build index.html        (這一步很重要,用parcel編譯js,最後彙總成一個js前端文件)

輸出如下:

----------------------------------------------------------------------------------------------

$ C:\Users\jmmy\Downloads\tfjs-models\posenet\demos\node_modules\.bin\parcel build index.html
/ Building coco.html...Browserslist: caniuse-lite is outdated. Please run next command `yarn upgrade`
\ Building coco.html...Browserslist: caniuse-lite is outdated. Please run next command `yarn upgrade`
- Building posenet.esm.js...Browserslist: caniuse-lite is outdated. Please run next command `yarn upgrade`
√  Built in 16.41s.

dist\camera.83bdd5c6.js.map    ‼  4.09 MB     352ms
dist\coco.8f7bfb53.js.map      ‼  4.08 MB     351ms
dist\camera.83bdd5c6.js         998.63 KB    13.57s
dist\coco.8f7bfb53.js           994.59 KB    13.96s
dist\camera.html                  1.81 KB     3.56s
dist\coco.html                    1.74 KB     1.62s
dist\index.html                     251 B     510ms
Done in 17.60s.

3)啓動:

demos>cd dist

tfjs-models\posenet\demos\dist>http-server
Starting up http-server, serving ./

 

4)總結:

A)這裏的posenet是前端javascipt代碼,但是還是用nodejs的目錄結構

B)camera.js demo_util.js 和node_modules裏面的有些模塊會被編譯到dist\camera.83bdd5c6.js的前端js代碼中,

這在編譯後的camera.html中包含的<script src="/camera.83bdd5c6.js"></script>可以反映出來;或者camera.js的源碼也可以反映出來:


import * as posenet from '@tensorflow-models/posenet';
import dat from 'dat.gui';
import Stats from 'stats.js';

import {drawBoundingBox, drawKeypoints, drawSkeleton, isMobile, toggleLoadingUI, tryResNetButtonName, tryResNetButtonText, updateTryResNetButtonDatGuiCss} from './demo_util';

const videoWidth = 600;
const videoHeight = 500;
const stats = new Stats();

 

5)parcel的構建理解:

A)以前Browserify的作用(https://www.ibm.com/developerworks/cn/web/1501_chengfu_browserify/index.html):

Browserify 作爲 NodeJS 模塊與瀏覽器端應用之間的橋樑,讓應用可以直接使用 NodeJS 中的模塊,並可以把應用所依賴的模塊打包成單個 JavaScript 文件。通過 Browserify 還可以在應用開發中使用與 NodeJS 相同的方式來進行模塊化和管理模塊依賴。如果應用的後臺是基於 NodeJS 的,那麼 Browserify 使得應用的前後端可以使用一致的模塊管理方式。即便應用的後端不使用 NodeJS,Browserify 也可以幫助進行前端代碼的複用和組織。


B)parcel也是一個類似Browserify的構建工具,並且更高效:

a)自動轉換

如若有需要,Babel, PostCSS, 和 PostHTML 甚至 node_modules 包會被用於自動轉換代碼。只需要自定義好 babelrc.json、postcss.config.js、tsconfig.json 等配置文件就可以直接轉換代碼,如果 Parcel 發現打包時有缺少的依賴(如 babel plugin 等)就會自動幫你安裝並且加到 package.json 的 devDependencies 中,如果不看控制檯,你甚至對此無感。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章