I'm a mother of two precious kids and a professional programmer.
快訊!我的新書今天開始可以在天瓏網路書店預購啦!歡迎大家前往訂購!
>>>> AI 職場超神助手:ChatGPT 與生成式 AI 一鍵搞定工作難題 <<<<
官方教程 教程網址: https://github.com/tensorflow/tfjs-models/tree/master/coco-ssd 目標檢測模型,旨在定位和識別單個圖像中的多個目標。 該模型是 COCO-SSD 模型的 TensorFlow.js 移植。有關 Tensorflow 對象檢測 API 的更多信息,請查看 tensorflow/object_detection中的自述文件。 該模型檢測 COCO 數據集中定義的對象,這是一個大規模的對象檢測、分割和字幕數據集。您可以在這裡找到更多信息。該模型能夠檢測80 類物體。(SSD 代表單次多盒檢測)。 此 TensorFlow.js 模型不需要您了解機器學習。它可以將輸入作為任何基於瀏覽器的圖像元素(例如<img>、<video>、<canvas> 元素),並返回帶有類名稱和置信度的邊界框數組。 讀取攝像機 以下為一個簡單讀取攝像機並且作物件偵測的程式範例 執行成果 以下為範例執行程式:…
安裝labelImg來標記物件 到GitHub官網上面可以下載release的版本 下載網址labelImg labelImg操作介面 準備訓練用資料集 以下是一個基本步驟: 將圖片和標籤轉換成TFRecord格式 以下為一個範例程式 準備分類設定檔案*.pbtxt 接著上面會產出path_to_output.tfrecord這個檔案,到object detection裡新建一個資料夾,把path_to_output.tfrecord丟進去。 接著,修改mscoco_label_map.pbtxt(可在\models\research\object_detection\data找到此檔案),檔案內容如下: 這邊的/m/01g317是一個在Google Knowledge Graph中的專屬識別碼(獨特的標籤),用來代表特定的實體或概念。在這裡,/m/01g317是代表”person”(人)這個概念的識別碼。 Google Knowledge Graph是一個大型的知識庫,由Google建立和維護,用來增強其搜索引擎的搜索結果,提供更準確和詳細的資訊。它儲存了數以億計的物件和實體以及他們之間的連結。每個物件或實體都被分配一個獨特的ID,這就是這裡提到的/m/01g317。 在訓練物體檢測模型時,這些識別碼會被用於表示各種可以識別的物體或實體。例如,在你給出的配置中,/m/01g317被指定為表示”person”。 如果你是在自己的專案中,並且與Google Knowledge Graph無關,那麼可以自由地創建你自己的類別標籤或ID。例如,你可以簡單地使用數字(如1,2,3等)或有意義的名稱作為你的類別標籤。在你給出的配置項中,只需要確保每個類別的name和id是唯一的,並且display_name清楚地表示了該類別的含義。 於pipeline.config指定資料集的位置 在pipeline.config檔案中,你將會找到兩個主要的部分,分別代表訓練和驗證數據集,它們的名稱通常為 train_input_reader…
事前作業 先在這一篇選定想要使用的模型,然後下載後解壓縮在專案的資料夾內,然後參考這篇文章設定環境: TensorFlow 的目標檢測API – 設定環境 程式實作範例 這個範例需要一個攝影機,使用的是SSD MobileNet V2 FPNLite 640×640的預設資料集 執行的速度很不錯,一秒可以有25FPS,適合用於實時串流 執行的畫面如下,因為懶惰所以還沒有把標記的label標上去,若想要標記,可直接使用detections[‘detection_classes’]作為分類的index,從category_index去取分類名稱
YOLO並沒有含在TF2內建的Object Detection API TensorFlow Object Detection API 提供了在COCO 2017 數據集上預訓練的檢測模型集合 。有多種類型的模型,包括 CenterNet,EfficientDet,SSD,Faster R-CNN 和 Mask R-CNN 等。 每個模型都有其特點: 然而,YOLO (You Only Look Once) 並沒有在這個列表中。 YOLO 是一種非常流行的實時目標檢測系統,以其快速和精確而著名。…
相關教學資源 在Python安裝object_detection 我是在Windows的環境做開發,而官網的教學的環境是Linux,所以相關工具的安裝有花了一些時間,在這邊分享一下我的安裝方式 以下為Linux環境的工具安裝指令 大概就是要安裝protobuf,接著下載TensorFlows Model,然後把model放到你要呼叫Object Detection的程式目錄的下方 ,在這邊我執行python -m pip install .時,會一直出現如下錯誤 ERROR: Could not build wheels for opencv-python, which is required to install pyproject.toml-based…
Tensorboard介紹 在機器學習中,要改進模型的某些參數,通常需要觀察模型數據以進行衡量。TensorBoard 是用於提供機器學習工作流期間所需測量和呈現的工具。它使您能夠跟踪實驗指標(例如損失和準確率),呈現模型計算圖,將嵌入向量投影到較低維度的空間等。 TensorBoard是TensorFlow的可視化工具,用於可視化和分析機器學習實驗的結果。它提供了一組豐富的可視化面板,可以幫助您理解、調節測試和優化訓練過程中的模型。 主要功能和用途 以下是TensorBoard的一些主要功能和用途: TensorBoard 提供了一種觀察的方式來監視和分析機器學習模型,以了解模型的行為並進行調優。您可以使用 TensorFlow 的相關API(如)將數據寫入TensorBoard日誌文件,然後在命令tf.summary中行中運行 TensorBoard 來查看和分析結果。 如何使用 以下為一個範例程式 接著就可以在所指定的資料夾位置運行tensorboard介面 接著開啟http://localhost:6006就可以看到如下畫面,這個畫面是Scalars,顯示損失和指標在每個時期如何變化 Graphs用以可視化模型。可以看出你的模型是如何建構的,有用到那些方法 Distributions是顯示張量隨時間的分佈。Distributions和Histograms這兩頁很相似,可了解模型權重隨時間的變化,作為判斷是否出現問題的初步衡量標準。 Histograms是使用Ridgeline plot來顯示張量隨時間的分佈,橫軸為epochs訓練的次數,縱軸則為權重和偏差的值 Time-Series與scalars非常相似,都是在評估準確度。然而,一個區別是每次訓練迭代而不是每個時期對目標指標的觀察。
將資料切分 在數據科學中,訓練數據和測試數據扮演著兩個主要的角色。評估已構建模型的性能與訓練和構建模型同樣重要,因為未經評估性能的模型可能會產生錯誤的預測並導致嚴重的並發症。為了防止這種情況發生並確保預測的準確性,您必須足夠好地測試和驗證模型。 為了構建和評估機器學習模型的性能,我們通常將數據集分成兩個不同的數據集。這兩個數據集是訓練數據和測試數據。 訓練數據 測試數據 用於構建模型 用於評估構建的模型 分配更大的數據部分 分配較小的數據部分 可進一步劃分以進行驗證 不會進一步分割 什麼是驗證數據 驗證數據是從訓練數據中分離出來的子數據集,用於在訓練過程中驗證模型。來自驗證過程的信息幫助我們改變模型的參數、分類器以獲得更好的結果。所以基本上,驗證數據可以幫助我們優化模型。 使用 Scikit-learn 的 train_test_split來切割數據 使用下面這段程式碼可以將訓練及分割成訓練及驗證集 使用測試資料作驗證 下面這段程式可以使用X_test、y_test來使用model做測試,並且可以用accuracy_score來取得準確率,並將準確率存入一個陣列裡 若是想要取得錯誤的資料集,則可以用np.where來取得與正確答案不一樣的資料,並將錯誤的資料存入incorrect陣列裡面 完整範例 下面的範例為結合K-Fold概念,將資料及分成五份,並做五次的訓練以判別模型的訓練狀況是否有過擬合的狀況。其中會每次會取其4分來做訓練、1份做測試,再將訓練集中的1/10拆做驗證集。最後使用matplotlib.pyplot來顯示這五次之中,測試集中錯誤結果的圖片 參考資料
一般所使用的方式 – Holdout method 這是一種非常基本且簡單的方法,我們將整個數據集分為兩部分,即訓練數據和測試數據。顧名思義,我們在訓練數據上訓練模型,然後在測試集上進行評估。通常,訓練數據的大小設置為測試數據的兩倍以上,因此數據按70:30或80:20的比例進行分割。 在這種方法中,數據在分割之前首先被隨機洗牌。由於模型是在不同的數據點組合上訓練的,每次訓練時模型都會給出不同的結果,這可能是不穩定的原因。此外,我們永遠無法保證我們選擇的訓練集能夠代表整個數據集。 此外,當我們的數據集不是太大時,測試數據很可能包含一些我們丟失的重要信息,因為我們沒有在測試集上訓練模型。範例程式如下: 改善方法 – k-Fold Cross-Validation K 折交叉驗證是改進的一種方法。這種方法保證了我們模型的分數不依賴於我們選擇訓練集和測試集的方式。將數據集分為 k 個子集,並將保留方法重複 k 次。讓我們分步驟完成這個過程: 因為它確保來自原始數據集的每個觀察結果都有機會出現在訓練和測試集中,所以與其他方法相比,這種方法通常會產生偏差較小的模型。如果我們的輸入數據有限,這是最好的方法之一。 這種方法的缺點是訓練算法必須從頭開始重新運行 k 次,這意味著進行評估需要 k 倍的計算量。 分層k-Fold –…
遇到的錯誤訊息 2023-06-14 16:32:39.652288: W tensorflow/core/data/root_dataset.cc:167] Optimization loop failed: Cancelled: Operation was cancelled 這個錯誤訊息代表TensorFlow 在優化過程中遇到了問題,並且操作被取消了。當操作被取消時,TensorFlow 無法完成所需的計算任務,因此無法產生期望的結果。具體來說,如果你在使用 TensorFlow 的 CPU 模式下運行一個優化循環,並且該循環被取消,以下情況可能發生: 為什麼會出現此錯誤 大部分的狀況是因為資源不足,導致運算被中斷 觀察電腦CPU與MEMORY使用狀況 要解決此問題,首先要先觀察是哪一部分出了問題,就需要在程式內去監控資源的使用。請參考此篇教學: How to…
從本機圖片建立模型的簡單範例 以下為從classify資料夾內載入圖片並建構分類模組的範例。圖片資料夾的結構如下: 其中daisy、dandelion、roses、sunflowers、tulips為標籤名稱,在各個資料夾內為圖片 然後使用 image_dataset_from_directory 函數載入圖片,需要傳遞以下參數: directory:包含圖片的目錄。 labels:標籤的名稱。預設情況下,每個圖片所在的子目錄將被當作標籤。 class_names:標籤的名稱列表。 label_mode:標籤的格式。可以是 ‘int’(預設值)、’binary’ 或 ‘categorical’。 batch_size: 用於指定每個批次中包含的圖片數量。 在載入圖片時,tf.keras.utils.image_dataset_from_directory 函數會使用 RGB 色彩空間。 tf.keras.utils.image_dataset_from_directory 函數中的 seed 參數用於設置隨機數生成器的種子。 如果指定了 seed…
17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。
如果你認同我或想支持我的努力,歡迎請我喝一杯咖啡!讓我更有動力分享知識!