機器視覺小教室 Aurora Vision Studio 入門篇【01】產品架構簡介

弘翔精密科技股份有限公司
1粉絲
2024年10月15日 #機器視覺小教室
#機器視覺小教室
Aurora Vision Studio 入門教學線上課程網頁
https://www.urvision-tw.com/article_detail/25.htm
我們這一集是一個線上版的 Zebra Aurora Vigil Studio 的產品介紹
那這個 Aurora Vigil 它的前身是這個 Adapting Vigil
那這個它在 2013 年的時候在市場上開始出現
然後它的年度的大事跡就是在 17 到 18 年之間
在它的 4.9 版的時候加入這個深度學習的功能
然後開始在市場上面能見度開始增加
因為當時在算是很早就有深度學習的功能的出現
在機器視覺 SDK 函式庫的這個領域裡面
比較早出現深度學習的一個工業版
好那到了這個 5.1 版也就是 2021 到 2022 之間
這個一家美國的大企業叫 Zebra 收購了這家公司
所以以後它的名稱就改做 Zebra Aurora Vigil
那在這個影片的當下也就是 2024 目前推出到 5.4 的版本
那這個它的版本的命名規則就是
整數位跟小數位的第一位叫做大版本
那它這個大版本就是平均來說大概每一年會更新一次
那會有一些技術性的大突破這樣
好那這邊就是可能要跟各位就是說
宣導一個就是說闡明一件事情就是說
有些人覺得這個機器視覺的軟體到底它的定位在哪裡
同樣的就是說我們這個 Aurora Vigil 它其實是一個機器視覺的開發工具
而不是一個已經做好的機器視覺的檢測軟體
這是差在哪裡
有人會問說我想要檢測什麼
我想要量什麼
你能不能檢出什麼
那其實這個檢出什麼是結果
比如說打個比方說你其實是你要買的一臺飛機
那你想要買飛機或是買汽車
那你可能會有想要知道它的最高速度可以達到多少
可以飛多高
體重然後身高體重油耗這些規格
但是其實我們這個是一個工具
工具其實不能這樣討論
它是一個坐飛機前面的這些模組
它是給一個設計飛機或是設計汽車的設計師
在用的一些模組
好比他的零件
當然說你用的模組的好壞會影響
它最終可以飛多高飛多快沒有錯
但是它終究它不是一個飛機
所以你在問說這個能不能撿的好
其實有時候是等你開發完
你才會知道說它到底能不能撿的好
那至於另外一個50%
你要活用它裡面的這些東西
那你才能設計出一個好的飛機
所以重點是放在活用的這件事情上面
那怎麼活用
這個活用其實很有學問
我們在開發這個視覺或是影像處理的程式的時候
很常會遇到一些很麻煩的事情
導致我們不是很好活用它
第一個就比如說
你不知道怎麼debug
你看到這個錯誤訊息
你不知道怎麼找到為什麼
以及就是你可能剛投入這個功能的時候
你找了一個可能網路上找了一個SDK
可是你問題是你不知道怎麼用它
然後你一直不停的在查資料
或者說你已經跳進去寫了
但是辨識的過程不知道
我們是玩影像
你想要做為一個影像出去
你想要知道它吐出來是什麼東西
有時候你在寫code的時候
你都還要寫一個秀圖的畫面
才能知道它秀出來是什麼
或者說如果你來不及
你可能沒有時間寫這個秀圖的畫面
那你還要另外再寫一個存檔
把它的結果把它畫上去
一起存下來看看
你才會知道你的戰事的結果長什麼樣子
可是這個都只是過程而已
你的過程如果花了很多時間
在做這種無謂的事情的話
那整個是大幅拖慢這個程式開發的速度
然後或者說
你不知道它的語法順序用的對不對
其實跟前面這個熟悉功能是有類似的
那還有就是說
有可能你可能找了一個SDK
但是它只專精於某件事情
SDK叫SDK-A
它只專注於A的事情
SDK-B只專注於B的事情
SDK-C只專注於C的事情
那我們在做專案
其實就是在做一些整合的工作
但是這個整合
比如說你光光為了了解這個ABCD
你就花很多時間
那你熟悉了以後還要再花更多的時間
再去搞這個ABCD的整合
所以這個時間都被喫掉了
這個五跟六是差不多的意思
好 那第七點就是說
因為畢竟是血扣
那個久了以後有時候不容易看懂
每個人的血扣的風格又不太一樣
那有時候時間久了以後
那個人可能你連問的對象都找不到
那如果當客戶跟你抱怨說
這個設備的它這個軟體
好像有一些很奇怪的異常
你甚至你也不知道這個異常
要從哪裡開始找
那換句話說
我們如果可以看
就算你都是一樣不知道
你如果可以馬上看到它的辨識的過程
那這個第七個問題
是不是可以好解決很多
即使它本來就是一個很棘手的問題
只是如果你可以馬上看到過程的話
那這個除錯的難度可能就會大幅的下降
好 那我們再往後面介紹的時候
我們稍微提一下
通常我們在寫這個機器視覺開發的時候
我們一般來說專注於哪幾個層面
第一個層面就是所謂的基礎工具
那這基礎工具
最好我們要包含一些取向的功能
以及影像處理的功能
那影像處理功能
我們就希望它有影像處理啊
定位啊 量測 讀碼
或是2D、3D或者叫Deep Learning的
這些工具可以讓我們去使用
好 那我們其實專注於
把這些功能做成我的應用的邏輯
因為這個功能
我是玩這些科學研究的人寫出來的
那我們畢竟是做應用的
我們不是在做科研
所以我們在做整合這些功能
那我的對象其實是終端客戶
所以我要終端客戶要做瑕疵檢查
我這個應用邏輯針對就是瑕疵檢查
我的終端客戶要的是上下料
我的應用邏輯寫的就是上下料的應用
我的終端客戶做的是量測系統
我的應用邏輯就做的是量測的系統
我的終端客戶希望我
辨識完的時候可以吐出資訊給TLC
那我的應用邏輯就必須要有通訊交握的功能
這個是我的應用邏輯的部分
那再來就是因為我這個開發完以後
我是要給人家操作
因為你要放在生產線
那我是不是要有一個簡單可以切換配方
顯示辨識結果並且寫Log的一些介面出來
那你還是得花時間在這個地方
那你這個東西做得好的話
那你的客戶在用你的機臺的時候
他比較不會有這種抗拒感
然後這個操作的頻密性也是一個
我們這個整體的軟體開發的
好不好的一個指標
所以我們這套軟體
我們呈現的就是藍色的這個部分
他具備了取向的功能
也具備了影像處理3D 2D深度學習
並且他還有辦法幫你去編輯這個操作UI
那我們來看一下
這個是一個簡易的圖索
就是說他在講說他的工具非常多
他只要用這個拖拉的方式
這個是一個示意
用拖拉的方式把功能拖到程式的區塊
然後進行簡易的操作的設定
那我們可以在這個程式拖拉的區塊
去編輯邏輯
那也可以在UI的編輯區塊
去設計我的操作的顯示的UI
那整個是一條龍
可以去做完然後輸出成執行檔
這個是他這個宣傳影片
那我們暫時總結一下
我這個產品定位在哪裡
我們這個產品定位是定位在
針對的是各種少量多樣化的客製化的應用
那為什麼會需要這樣子的一個
簡單應用的軟體
那我們來分一下就是說
這個軟體開發軟體在市場上面的差別
我們講左派跟右派
左派叫做方便的速食保養
也就是說隨差即用
我們針對一些特定的大量的應用
我們直接把功能都做好
所以你只要把功能開起來插電
那馬上就可以上線
那所謂的極右派
極右派的話就是屬於科研的類型
那他可能裡麪包含了非常多的這種函式庫的功能
那這些功能多到沒辦法想像
那當然學習期限就必然比左邊的長很多
那我們這套工具的話
他是處在中間權衡的一個位置
就是他的開發也是挺方便
雖然沒有極左派的這麼快
極左派插電打開調設定就可以用
我們畢竟還是要編排一些邏輯
應用邏輯
還是要寫一些圖塊
即使你是圖形化的建立
還是得拖拉他的邏輯出來
但是就是因為你可以拖拉他的邏輯
所以纔有辦法做客製化
極左派是沒辦法客製化
好那右派的話
極右派他是非常適合做客製化
但是客製化遇到的一個難題就是說
你每開發一套
可能是非常少量的
因為可能他是一個特殊特殊的應用
他這個工廠他可能
拿他端個應用來問
他可能只有一套兩套
但是你為了開發
用這些百科全書
工具非常的瑣碎的
幫他開發一套兩套
其實花到你非常多的時間
所以我們寧可我們走一個權衡的路線
我可以客製化
但是我又可以把開發時程壓到最低
這樣子才能取得一個折衷
纔有辦法做快速的去評估
各種少量多樣化階段
好那這個回到這個客羣
比如說我們其實因為
想要快速多樣化的階段
所以針對就是小型的開發團隊
或是小型的系統商
或者個人的開發者
或者你自己的公司裡面本身
是製造車子
或者說一些五金用品
或者各行各業的製造業
你的工廠如果有一定的規模
有時候你會在工廠裡面
自己找一些自動化團隊
來開發自家公司的自動化的應用
你的人少
但是你的案子
因為你畢竟要顧
你整個工廠的整個全部的流程
所以你自動化人員的比例
因為你公司畢竟不是做自動化
你能提供出來
這個公司提供出來的人力
畢竟不會像一個設備上
分工的這麼細
但是你又需要顧及
從上游到下游
你的整間工廠裡面
所有的製程裡面
可能需要用到視覺的部分
所以幾乎每一年都在做不同的型案
所以我們這個適合給這些設計師
著重的是開發過程中
可以快速的評估演算法
以及辨識的過程
直到你的應用能夠
落地生產的開發工具
因為他收羅了各式各樣的工
2D、3D深度學習
所以我把他喜歡
叫做他是總複師
就是他什麼東西都有
他可以取向
也可以跑2D也可以跑3D
也可以跑深度學習
你怎麼去對總複師下達
各式各樣的命令
其實就是你
你這個設計者
你只要活用他的功能
就可以炒出各式各樣的菜色
我們來舉一個應用的實例
這個是我們展會的影片
我們打出一個Slogan
叫做簡單易部署的機器視覺軟體
他集2D、3D加AI與神
首先我快轉一下
首先看到這個攤位裡面
我們一下子用同一套軟體
開發出很多種不同的
風格非常迥異的應用
比如說像左邊這個有扳手的
這個是在做文字辨識
他可以辨識出包裝袋
以及扳手上面的這些
帶有反光的字體
這個的話是在辨識說
我的包裝內容物裡面的品項
有沒有放錯
包裝內容物裡面的品項有沒有放錯
或是少放
這個是在清點裡面的
盒子裡面的東西
他的種類是什麼
並且算出一個總數出來
我們故意讓他假裝在算錢
Total cost假裝在算錢
這三種應用有沒有
一樣沒有
你會說三種
這個世界上絕對不會只有這三種應用
你可以想像出
我們遇到的
即使是類似的產業
常常問到的應用
我想要做的方法
事實上都是不太一樣
所以絕對找不到一模一樣的應用方式
所以為什麼
我們會有這樣子的客製化的
一個開發工具的存在
走到另外一點
他是用這個3D線條
去抓這個錫球
錫球的這個高度
每個錫球的點點
的那個最高值的高度
全部都是用這個AuraVision
用一套軟體就可以寫出
各種奇奇怪怪的東西
這個是電路板後面的針腳
在抓這個針腳的高度
大概是這樣
剛才就提過說
前面有2D有兩三種
就是那個文字辨識
然後包裝內容物的檢測
以及包裝裡面的這個種類的
這個數量統計
以及那個3D的這個錫球
以及這個3D的電路板的針腳
總共有五種應用
那五種多不多
一點都不多
你要做出50種500種
這個絕對都是有可能
5000種都是有可能
好那我們在開始之前
比如說我們要先了解一下
它這個軟體裡面的架構到底是什麼
那這個網頁在這個地方
就是你只要在瀏覽器上面輸入
www.adaptivevision
然後這中間有一個dash
然後.com
其實只要輸入前面那個就可以了
好那www其實也可以省
那我再示範一下
好那個www
好所以我現在輸入
這個用瀏覽器輸入這個
adaptivevision.com
然後再按Enter
那這個就會跑出它這個官網
它跑出官網之後按下載軟體
那你如果沒有帳號的話
就是你要先在這個
這個畫面裡面去
按這個create new account
然後去先註冊
用你的公司的email
先去註冊一個帳號
那註冊這個帳號的話
要先回覆一些
填一些資料
然後並且收到這個通知信
以後按確認
這個帳號才會通過
通過以後你才能進來
才能登錄
好那這邊我們
本來就有一個線上有一個
這個註冊的這個教學檔
跟影片
那可以參考
那假設你已經有這個帳號了
就可以這樣輸入進去
比如說這個是我
私人自己註冊的一個帳號
好那就打它的密碼
好登入
好登入完以後
你就會看到這個下載頁
好下載頁
最上面這個
就是所謂的免費版
免費版
一般來說我們直接
我們如果還沒有這個license
就是我沒有拿到這個
這個key pro
或者說我也沒有
試用版的license的時候
我就直接下載這個Lite的
最上面這個最新的版本
那我可以馬上
做一個體驗的行為
這個隨便哪個人
只要你有帳號
或者說找一個人幫忙下載
我share給大家
隨時都可以使用
而且沒有時間的限制
好那再來就是說
你如果有這個key pro
或者說有跟我們拿到
這個試用的這個
試用的這個檔案
一般來說我們會推薦下載
這個professional
然後找新的下載這個
以及
這是studio professional
studio runtime
最新的這個
那你如果想要寫code
寫code
想要評估寫code
這個的話
studio是
所謂的圖控
這個是圖控
那這個是code
寫code才需要
library
下載這個
好那我們講的
都是windows的
因為這個主力
其實在windows
好那再拉到這個下
拉到這個下
那你如果要評估
這個deep learning
的話一樣最新版
那你的電腦
當然最好
你要評估deep learning
電腦要插這個
那個有cuda
的這個顯卡
那一般來說
都是用往左邊
那左邊這個的話
你可以跑cuda的模式
也可以跑cpu的模式
但是你如果只是下載
你沒有
你的電腦完全沒有顯卡
而且也裝不了顯卡
那你可以
只是想要跑跑看的話
你可以下載這個
這個就只能用cpu
好那
下載完了以後
就會在這個地方
那這個檔呢
這個檔就是這個
那這個第二個的話
是library
library是這個
然後這個light
是這個
然後
studio professional
這個
然後studio runtime
這個
好那安裝非常簡單
就是點兩下
然後一直按下
就會裝完
就每個都一樣
那我們回到
這個投影片
就是說
剛纔有提過說light
light的話
它是永久的免費版
然後就是
當你沒有
手上沒有這個license
的時候授權
那你可以永久免費的去做
那它有一個限制
取向是有浮水印
你用它內建的功能去抓
從相機裡面抓影像的話
它會有一個廣告的
浮水印在那邊飄來飄去
然後再來就是它
你即使把deep learning裝進去
它也不會顯示
deep learning的功能
它是被封印起來的
然後再來就是它
不能使用這個
TCP IP serial port
Modbus
這些跟外界去做通訊
然後它
這個是
也是不能編譯成執行檔
就是讓你玩玩看它的操作
好那主例子的話
是這個studio professional
那就是剛才前面介紹的
這些方便的功能
好那它編譯成執行檔
以後就要
在這個
Runtime的環境上面跑
這個執行檔
它是附掛在這個Runtime上
這個Runtime是它的解析器
等於說它編譯出來以後
要靠這個Runtime去執行
好那如果你走的是
Library這條路
Library這條路的話
反正你就是用
C++ C++或是VD.NET
去呼叫它
直接編譯成機器碼
好那這個Runtime的話就
它只是為了可以把授權通過而已
它這不是解析器
架構不太一樣
好那deep learning
deep learning是它的附掛元件
就是它不能獨立使用
然後裡面有deep learning功能
你必須要左邊的
這個主
等於說左邊這個是主角
右邊這是附掛的功能
好那我們稍微看一下導覽一下
就是它這個
當然有提到很多專有的
什麼Studio啊Library
Library其實是它的底層
因為這些程式碼
事實上都是從Library
基本上在做軟體
很多寫演算法
都用C++在寫這些東西
所以這個Studio
它把它的介面設計的
很便宜很華麗
那當然它的底層
一樣都是靠C++的這個DLL
所以它的底層是個Library
那你必須用這個
做這個圖控開發的時候
事實上它的底下也在靠這個
當然你在灌的這個的時候
事實上這個是不一定是需要灌的
只有你一定要寫code的時候
才需要灌
好那這個deep learning
它是附掛在這個旁邊
好那這邊我們稍微列出一下
這個產品的特色
就是有數千種種子
然後各種功能都有
那它可以去設計這個HMI
剛才也在前面有提過
那它可以去用這個通訊的裝置
而且可以支援一些標準的
輸入輸出的這些介面的相機
好那這邊會有幾種
這個整個框架
大框架幾種用法
這個後面再介紹
好那這個第一種用法
第一種用法就是
這個是它的這個圖形化的介面
圖形化介面
你打開它就是一個視窗軟體
那這個視窗軟體
左邊是它的功能的工具
中間是它寫程式的地方
右邊是它debug的視窗
你可以把你目前跑到的結果
丟到右邊去預覽
好那你寫完了以後
你在它這個菜單裡面
你去Export圖執行檔
它就會編譯成一個這個
AVEXE
副檔名不是EXE叫AVEXE
好這個AVEXE
它實際上是一個
一個Binary的腳本
那這Binary腳本
必須掛在這個Runtime上面
讓這個Runtime去跑它
好那我看
來簡介一下這個
這個操作的過程
比如說我現在用一個Webcam
它有支援這個
Windows內建的這個Webcam
你就插用筆電啊
前面不是有一個小鏡頭
或者說拿那個USB
插這種市售的Webcam
只要是Windows
免安裝的這種插上去
馬上就可以評估影像
好那這邊
我這邊寫個二值化
然後用這個UI的視窗的Designer
把這個畫面顯示出來
然後再來就是
把這個二值化的結果
也拖到這個視窗上面
然後再拉一個拉霸
那這個拉霸
想要控制這個二值化的髮質
好髮質就0到25
所以調一下設定
好那把這個髮質的
拉霸的結果
把它丟到這個程式裡面
所以這個程式的參數
會受這拉霸的影響
好那它這個
把這個二值化這個的區域
0或1的區域
把它顯示在這個畫面上
而且還可以改顏色
好這個
大概足夠到這個程度了
好接下來我們就按這個
去改一下這個視窗
好那視窗的標題啊
你要有什麼樣的這個設定
這個
這些視窗的控制項
這裡面這些參數
其實跟C-SHAPE不像
所以如果
以前就很常在寫C-SHAPE的話
基本上沒有什麼上手的瓶頸
好寫完了以後
我們就按這個輸出
好那這個時候
就可以把這個
開發程式把它灌掉
直接執行
那你的電腦
只要有灌這個Runtime的話
就可以直接執行這個小程式
那這小程式就是
直接用這個Studio
從頭到尾包含UI
一起開發出來
好這是第一種玩法
那我們第二種玩法
第二種玩法
其實最後會走到C-SHAPE
那最後走到C-SHAPE
你就問說
那走到C-SHAPE不是要寫程式嗎
其實並沒有
就是我們還是想要發揮這個
這個Studio
這個圖控開發的這個好處
因為我們畢竟在寫
視覺演算法的時候
就是希望這個演算法
這個編輯的過程
我可以看到
影像辨識出什麼東西嗎
二值化它到底框到哪裡啊
然後定位有沒有準啊
那這個過程
你用寫程式
有時候不是很好出錯
所以我們就先用
這個Studio
好一樣寫好了以後
編譯成這個
這個腳本的執行檔
好做到這邊以後
就先暫停
好做到這邊先暫停
我不幫他做UI
因為我最後要走C-SHAPE
所以我只是把這個程式的功能
把它放到這個裡面
好
放到這個裡面來以後
我再用這個裡面的功能
把它去輸出一個DLL
這個功能叫做
Generate Domain Macrofilter Interface
這個DLL事實上
只是提供這個interface
這個interface
就是這個DLL裡面的interface
可以去索引到這個
腳本執行檔裡面的工具
好那我用這個C-SHAPE
透過這個interface
去調用它裡面的功能
叫它做事情
簡單來講就是這樣
我的影像組
全部都在這個
Runtime的ADSE裡面
它只是負責叫它做事
叫它做事
所以我這個血腥效果
其實不用把我影像處理
只要會用就好
好那我們來看一下
這個具體的
是怎麼玩出來的
好假設我現在
寫了一個什麼
二值化Open Close的比動
有的沒的
這個沒有學過影像處理的人
事實上
也不知道我在幹什麼
我好不容易把它寫出來
好那寫出來以後
我可以做這個缺陷檢測
就我現在有一個
這個小燈泡
然後這個小燈泡
裡面有一個電極
電極上的破洞
我破洞還把它畫出來
做完了以後
這個破洞
我把它畫出來
我把它包裝成這樣子
我現在包裝成兩個方式
第一個方式叫做
QC Quality Check
Perform QC
我輸入影像
然後得到Defect
再包裝另外一個程式
我輸入影像
然後給我Defect
我幫你把這個Defect
再畫圈圈
這個繪圖的指令
我也都包在這個裡面
這個功能
我就包兩件事
我包兩件事
好 Stop
那這個我包好了
我已經包好了
好那接下來
使用這個
輸出成Dynamic Markov Filter
這個功能
好所以
輸出這個功能
我就直接把這個Markov Filter
這個DL
把它引用到C-SHAP裡面
那我C-SHAP
寫了一堆程式
那個都是跟我的
這個自動化的流程有關
好那重點
我要跑影像處理的時候
我在跑什麼
我就跑Marco
這個Marco的名字
自己取的
我裡面的函式的名稱
就是跟我腳本的程式一樣
叫做Perform Quality Check
丟影像進去得到Defect
好Draw as Circle
丟影像等級Defect
然後得到一個畫好的影像
好那我把這個畫好的影像
嵌在我的視窗上面
得到的結果
跟我在圖控看到的東西
是一模一樣的
這個就是
我們把這個圖控
做的這個成果
可以直接導入
跟C-SHAP去做一個整合
我其實並沒有想在C-SHAP
直接寫它的SDK底層的功能
我只是把圖控的這個過程
把它封裝起來
然後叫C-SHAP去呼叫
這個方法事實上
非常多人在用
因為畢竟做一個設備
有時候你想要做功能
其實還頗多的
你可能會對它這個
第一種方法
直接用UI去寫
可能搞不好一開始
沒有太大的信心
你還是相信自己
用C-SHAP寫出來的東西
但是你對影像處理的掌握度
事實上可以放心的
使用它這個Studio
開發出來這個效果
所以把這個效果
跟C-SHAP快速的
把它整合在一起
好那當然就是說
如果你玩到一個
非常熟練的程度
當然還是可以使用
這個底層的SDK
而底層SDK
以C++的例子
寫法風格大概是像這個樣子
就是AVL
然後這是Cache
然後AVL這個Cache
裡面有一些函式
你可以去呼叫
那C-SHAP的話
就是AVL.
然後什麼什麼的
好那當然說
它有提供一個功能
就是說你可以用這個
因為有時候剛開始玩的時候
有時候語法
你不知道要給什麼參數
所以你就把這個功能
把它在Studio
把它拉進來
拉進來以後
你想要知道
這個C++該怎麼寫
你可以按這個
Generate C++ Code
好Generate
它就會幫你
跑出一個C++的Source Code
那這個Source Code
你把它打開來偷看
它都會用這個Map
它其實不會幫你把專案寫好
只是一個Sample Code而已
主要是用來
方便你去查這個語法
語法可以查手冊
可是問題是手冊
不可能什麼Sample Code
都會幫你寫
所以你想要對照手冊的時候
有的手冊它這個
搞不好一些比較複雜的方式
它可能有十幾個參數這麼多
看了頭昏眼花
那你把它在一個圖控
一個一個填好
看到結果是對的以後
你就Generate C++ Code
然後它就跑出來
跑出來以後
原來第一個Image
要放在這裡
然後這個Node
只放在這裡
128版
這個用Node
要0.0 Region 1
那跟這邊的結構會是一樣的
就這樣子的話
寫Code的時間又會再縮短
那你就可以把它
抄到你自己的組成詞裡面去
好那其實還有第四種
第四種就是在這個裡面
沒有提到的
它有支援就是說
我如果覺得這個
Studio裡面的工具
搞不好你有一些工具
你還是找不到的
可是你自己有一些想法
那它這邊有一個按鈕
就是有一個按鈕
就是可以讓你去
自己寫的外掛
然後你按下去了以後
它會彈出一個
寫外掛的範例程式
你就用那範例程式去改
改完了以後
可以直接把它
import到這個Studio裡面
比如說我寫了一個
很奇怪的演算法
然後把它import到這裡面來
然後這個它會變成工具
你可以直接拉進來用
好這個是第四種
可以擴充
很方便的擴充這個Studio的功能
