iT邦幫忙

0

使用tensorflow.js做機器學習的問題?問題有些複雜。

我沒接觸過機器學習,但是現在在做的功能可能可以用這個來實作,所以想套套看
小弟參考的是這個範例程式
https://github.com/tensorflow/tfjs-examples/tree/master/webcam-transfer-learning
live demo網頁在此
https://storage.googleapis.com/tfjs-examples/webcam-transfer-learning/dist/index.html

可以看到demo是可以預拍各種不一樣的sample進去然後train
之後預測webcam裡的畫面是哪種狀況

這是我自己參考寫出來的,其實就是抄出來的,主要是引入tensorflow.js不太一樣而已
https://github.com/tak40548798/tensorflow.js-sheet-type-predict
大概是長這樣
https://www.youtube.com/watch?v=fRKNSM7LvwY
(錄影軟體沒拍到input輸入選檔案的window所以怪怪的)

我目前想做的是
可以預測webcam裡面擺放的紙張是哪一種型態(格式)的紙張
比方說我有三種類型的紙張,拍在webcam裡面像是這樣
連結1:https://imgur.com/a/KqnMizp
img
img
img
img
分別有兩種不一樣的擺放高度,webcam角度紙張方向先不考慮

實際需要預測的使用情況可能會在這個紙張上填入各種不同的資料
而且一樣會有兩種不一樣的擺放高度
比方說像是這樣
連結2:https://imgur.com/a/S3RIOG7
img
img
img
也就是說需要預測紙張內寫入了文字之類的東西後
也還要能預測出他是哪種型態(格式)的紙張

範例access camera解析度比例是1:1的大小,解析度是224x224
所以他輸入給模型的那張圖解析度就是224x224
輸入給模型預測的frame也是224x224

而我的作法是access camera解析度比例16:9比例的大小,解析度1920x1080
用canvas從畫面中心裁切方框1080x1080後縮小到224x224輸入給模型做訓練
就是中間裁切一個正方形,從16:9圖片的中心切出1:1圖像
這是用來餵給模型的圖片
連結3: https://imgur.com/a/17BOcE9
img
img
img
img -> 這是給模型的sample
也就是連結1( https://imgur.com/a/KqnMizp )切出來的圖片

而做預測是用一個Loop從Webcam裡面持續提取frame也就是圖片
然後依樣從16:9圖片的中心切出1:1圖像縮小,丟給模型預測,來做判斷

目前看起我自己測試看起來有時候是會失準的
因為看到添加給模型的圖片都是乾淨的,這些訓練用的紙張,或是說表格他是空白乾淨的
但是需要預測的東西是寫有東西,也就是有雜訊的

再加上預測時也是要做裁切
就像是這樣,連結4:https://imgur.com/a/i3VOqmb
img
img
img
-> 這是給模型預測的圖像

簡單來說
輸入給模型訓練的圖是連結3看到的圖,這些圖是從連結1裁切來的
輸入給模型預測的圖是連結4看到的圖,這些圖是從連結2裁切出來
預測的動作會是不斷的從camera裡面擷取frame出來

總而言之
想問的是如果改用其他model會比較好嗎?
現在這個程式用的模型是一個叫做mobilenet_v1的模型
如果改用其他模型準確率會提高嗎?
https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md
範例用的模型是這個,感覺指同一個東西mobilenet_v1_0.25_224

const mobilenet = await tf.loadLayersModel(
            'https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_0.25_224/model.json');

輸入給模型的資料可以是其他比例和大小的圖片嗎?
因為我現在用的這個模型如果不給224x224大小的圖片他會跳出錯誤
比如說像是這個樣子
error when checking : expected input_1 to have shape [null,224,224,3] but got array with shape [1,463,642,3].

因為我現在就是只能從16:9圖片或是4:3圖片裡裁切1:1圖片出來
不管是做訓練或是做預測都只能是224x244大小的圖片

EN iT邦研究生 3 級 ‧ 2021-07-07 00:26:15 檢舉
圖片請用 ![img](src) 的形式內嵌到網站上,不然我怕沒有人願意看你的問題 XDD

1 個回答

0
I code so I am
iT邦高手 1 級 ‧ 2021-07-07 08:12:02
  1. 要辨識圖片中的文字,用OCR更適合。
  2. 要抓紙張大小,可用OpenCV抓輪廓。
  3. 不給224x224大小的圖片會跳出錯誤 ==> 資料餵進模型前,先resize,可用OpenCV或其他套件。

如果用其他模型會比較好嗎?輸入給模型的圖我已經resize過了。

我要發表回答

立即登入回答