快訊!我的新書今天開始可以在天瓏網路書店預購啦!歡迎大家前往訂購!

 >>>> AI 職場超神助手:ChatGPT 與生成式 AI 一鍵搞定工作難題 <<<<

  • , ,

    好用的線上標記工具-Roboflow

    Roboflow介紹 官網: https://roboflow.com/ 文檔: https://docs.roboflow.com/ Roboflow 是一個用於計算機視覺項目的平台,它旨在幫助開發人員和團隊更輕鬆地構建、訓練和部署計算機視覺模型。 Roboflow 提供了一系列工具和功能,使您能夠有效地處理圖像數據、訓練機器學習模型,並將這些模型集成到您的應用程序中。以下是 Roboflow 的一些主要特點和功能: 可讓團隊於線上共同標記圖片 這個功能是我覺得Roboflow大勝labelImg的原因,當團隊有很多人要負責標記時,這個工具可以非常方便的檢視、確認、共同標記。 可匯入現有的資料集及標記 Roboflow可以直接匯入以標記好的檔案,可以在線上去觀察以標記的資料的標記樣態,這些都是labelImg沒有辦法做到的,我們可以直接把含有標記和圖片的資料夾拉近網頁裡面,他會問你是否資料夾內的檔案全部放入,選擇Upload 就會可以看到已經標記好的狀況,我覺得這個功能在使用別人標記的圖檔時非常重要,才可以知道別人是如何去標記圖片的 線上做資料增強 Roboflow 提供了豐富的在線數據增強工具,用於處理圖像數據,改善數據集的多樣性,提高模型的泛化能力。數據增強是在保持圖像語義信息的前提下,通過應用各種變換和處理來生成多樣性的圖像,從而增加模型對於不同場景的適應能力。以下是 Roboflow 在線數據增強工具的一些功能和特點: 按Generate可以做圖像預處理並選擇資料增強的方法,不過這邊圖片要輸出的若太多,就會要升級方案,免費方案沒辦法輸出破千張 線上建模 選擇Deploy頁籤,可以線上建模,並可以看到在測試資料及上的偵測狀況,我覺得最酷的是這一切都完全使用點、按就可以達成,完全no code

    Continue Reading…: 好用的線上標記工具-Roboflow

  • ,

    YOLOv8模型訓練:深入解析性能指標與優化策略

    深入探討YOLOv8模型的訓練過程和性能評估。本文詳細解釋了如何使用預訓練模型進行遷移學習,分析了IoU、mAP等關鍵指標的含義,並通過Tensorboard可視化訓練結果。適合想要深入了解物件偵測模型訓練和評估的AI開發者和研究人員。

    Continue Reading…: YOLOv8模型訓練:深入解析性能指標與優化策略

  • , ,

    Yolov8 – 物件偵測模型

    模型介紹 GitHub位置: https://github.com/ultralytics/ultralytics 官方網站: https://ultralytics.com/ YOLOv8 最初由 Ultralytics 公司的開發人員開發和發布,旨在在目標檢測任務中提供高性能和高效率的解決方案。 基於深度學習和計算機視覺領域的前沿進步而構建,在速度和準確性方面提供無與倫比的性能。其流線型設計使其適用於各種應用程序,並可輕鬆適應從邊緣設備到雲 API 的不同硬件平台。 與之前的 YOLO 版本相比,YOLOv8 引入了一些新的設計思想和技術,以提高模型的精度和速度。它在模型結構、數據增強、網絡設計等方面進行了優化,使得在目標檢測任務中取得了出色的結果。 YOLOv8 不僅可以在通用的目標檢測任務中表現良好,還可以應用於各種應用領域,如自動駕駛、工業檢測、物體識別等。 模型安裝 官方的教學提供了非常明確的指導: https://docs.ultralytics.com/quickstart/ 在這邊我選擇了使用pip安裝,只需要打下這一行就可以了 用command line執行的方式如下 用python執行偵測的方式 官方建議使用的相關工具 建立一個物件偵測模型,需要做標註、影像增強、修改、訓練、佈署,以及將模型整合至使用端的程式。對於這些流程,Yolo提供了很完整的生態鏈去實現這些步驟 支持的任務 自己建立模型 下面是官方網站內一個包含建模、預測、輸出模型的程式碼範例 我自己嘗試使用原有的模型訓練新的資料,在訓練過程中,會出現下面這樣的模型訊息 上面那些數值的解釋如下 以上圖而言,在第23輪的訓練其精度為48.4%,F1召回率為59% 處理圖片大小的不一致 YOLO原本建模時所使用的是COCO的資料集,在這個資料集裡面,圖片的長、寬皆為640px,但是實際上我們應用上所使用的圖片很可能並不是640×640的尺寸,這時候就要先對圖片做處理。 如果只是要做預測,可以直接使用resize_with_pad來對圖片做縮放,這個函數可以保持長寬比相同且不失真,將圖像大小調整為目標寬度和高度。如果目標尺寸與圖像尺寸不匹配,則會調整圖像大小,然後用零填充以匹配請求的尺寸。 但對於訓練,您還需要相應地調整邊界框的大小和填充邊界框,這並非易事。這是如何完成此操作的示例https://nbviewer.jupyter.org/github/aleju/imgaug-doc/blob/master/notebooks/B02%20-%20Augment%20Bounding%20Boxes.ipynb 以下為幾個主要手法: 無論你選擇哪種方法,都需要注意到調整輸入尺寸可能會對模型性能產生影響,特別是在目標檢測任務中。你可能需要在實際場景中進行測試和調整,以找到最適合你應用的方法。

    Continue Reading…: Yolov8 – 物件偵測模型

  • ,

    PyTorch於Mac系統下的安裝教學

    環境架設 相關教學文章: https://github.com/pytorch/pytorch 首先,PyTorch需要 Python 3.8.1以上的環境,先安裝Anaconda,接著設定一個虛擬環境使用py3.8.1 切換到新創建的環境之後,就依照下面的步驟下載PyTorch 編譯PyTorch 當你運行python setup.py develop來安裝PyTorch(或任何其他Python套件)時,這個命令的目的是在”開發模式”下安裝該套件。這意味著源代碼的更改會立即反映到Python環境中,無需重新安裝。 但是對於像PyTorch這樣的大型項目,這個過程可能會變得相對緩慢。如果你只是想試用PyTorch而不是開發它,那麼通常建議直接從官方渠道安裝預編譯的版本,這樣會快得多。(可以跳過此步驟) 安裝編譯所需工具 開始編譯 直接安裝PyTorch 使用預編譯的二進制檔案安裝PyTorch是相對簡單的。以下是使用pip或conda安裝PyTorch的方法: 使用pip安裝 使用conda安裝 下載第一個測試專案 https://github.com/pytorch/ios-demo-app 首先要先安裝依賴管理套件cocoapods,安裝指令如下: cocoapods安裝失敗解決方法 https://stackoverflow.com/questions/69460048/unable-to-install-cocoapods-in-macos-monterey-version-12-0-beta-xcode-13-013a 用homebrew安裝 安裝依賴項 先把目錄切到有PodFile的位置,然後下指令

    Continue Reading…: PyTorch於Mac系統下的安裝教學

  • ,

    Tensorflow.js的coco-ssd對象檢測

    官方教程 教程網址: 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> 元素),並返回帶有類名稱和置信度的邊界框數組。 讀取攝像機 以下為一個簡單讀取攝像機並且作物件偵測的程式範例 執行成果 以下為範例執行程式: https://claire-chang.com/wp-content/uploads/2023/08/sample.html 要開啟鏡頭權限需要至網站設定開啟權限

    Continue Reading…: Tensorflow.js的coco-ssd對象檢測

  • Modern data architecture on AWS

    為什麼會需要現代資料架構 數據量正以前所未有的速度增長,從 TB 級激增到 PB 級,有時甚至達到 EB 級。傳統的本地數據分析方法無法處理這些數據量,因為它們的擴展性不夠好並且成本太高。許多公司正在從各個孤島獲取所有數據,並將所有數據聚合到一個位置(許多人稱之為數據湖),以便直接在這些數據之上進行分析和機器學習。有時,這些公司將其他數據存儲在專門構建的數據存儲中,以分析結構化和非結構化數據并快速獲得見解。這種數據移動可以是“由內而外”、“由外而內”、“圍繞周邊”或“跨區域共享”,因為數據具有重力。 什麼是數據湖? 數據湖是一個集中式存儲庫,允許您存儲任意規模的所有結構化和非結構化數據。您可以按原樣存儲數據,而無需首先構建數據,並運行不同類型的分析 – 從儀表板和可視化到大數據處理、實時分析和機器學習,以指導更好的決策。 含括各種不同類型的存儲 在數據湖架構中,資料庫通常用於存儲結構化數據或半結構化數據,這些數據可能來自企業應用系統、交易數據、用戶資訊等。資料庫提供了結構化的數據儲存和查詢功能,並且支援事務處理,這使得它適合存儲需要高度結構化的數據。 除了資料庫,數據湖還可以包括其他類型的存儲,如: 總的來說,數據湖是一個集中式的、可擴展的數據存儲和管理架構,它可以包括多種不同類型的存儲,以容納不同格式和來源的數據。資料庫是數據湖中的一種重要存儲形式,但不是唯一的選擇,而根據應用需求,可以根據需要選擇不同的存儲技術和服務。 AWS 數據湖的基本支柱 數據湖基礎:Amazon S3、AWS Lake Formation、Amazon Athena、Amazon EMR 和 AWS Glue 數據湖通常用於存儲非結構化和半結構化數據,例如影片、音頻、圖像、日誌文件等。而關聯型數據庫(包括Amazon RDS和Amazon Aurora)通常用於存儲結構化數據,這些數據具有固定的模式和結構。 由於數據湖和關聯型數據庫的用途和數據類型有所不同,所以在數據湖架構圖中通常不會將關聯型數據庫包含在內。在數據湖架構中,關聯型數據庫通常用於存儲和管理已經轉換成結構化數據的部分,例如從數據湖中提取的特定數據子集,這些數據可以被用於更嚴格的查詢和分析需求。

    Continue Reading…: Modern data architecture on AWS

  • ,

    軟件定義存儲(Software Defined Storage,SDS)介紹

    甚麼是SDS 軟件定義存儲(Software Defined Storage,SDS)是一種存儲技術的方法論,它通過軟件層面的控制和管理來處理存儲資源,使得存儲系統更加靈活、可擴展和易於管理。傳統的存儲系統通常使用專用的硬體設備和控制器來管理數據存儲,而軟件定義存儲採用軟件定義的方法,將存儲處理功能抽象出來,從而使得存儲資源可以根據需要進行分配和管理。 SDS的主要特色 SDS的工作原理 借助軟件定義的存儲,應用程序可以動態配置所需的容量、性能和保護的精確組合——不多也不少。SDS 為存儲帶來了服務器虛擬化為計算帶來的簡單性、效率和成本節約。它允許您消除低效的專用硬件,並使用更靈活、透明和自動化的系統。此外,該存儲解決方案可與現有存儲解決方案和雲配合使用。 SDS軟件通過虛擬數據平面對底層存儲進行抽象;這使得虛擬機(和應用程序)成為存儲配置和管理的基本單元。 通過在應用程序和可用資源之間創建靈活的分離,普及的虛擬機 管理程序 可以平衡應用程序所需的所有 IT 資源(計算、內存、存儲和網絡)。 SDS與Persistent Volumes SDS(軟件定義存儲)和Kubernetes中的Persistent Volumes(持久化存儲卷)是相關的概念,它們都涉及到在容器化環境中對存儲資源的管理。 Kubernetes是一個用於容器化應用程序管理和部署的開源平台,而Persistent Volumes(PV)是Kubernetes中用於持久化存儲的抽象層。PV允許將持久化存儲資源(例如Amazon EBS、Google Persistent Disk、NFS、Ceph等)與Kubernetes集群中的Pod相關聯,從而實現容器應用程序的持久化數據存儲。 Kubernetes的Persistent Volumes(PV)提供了對多種存儲技術的抽象,因此你可以使用多種技術來實現PV。以下是一些常見的PV實現技術: SDS則是一種更廣泛的存儲技術,它可以用來管理和處理各種存儲資源,並提供更高級別的抽象和自動化。在Kubernetes中,PV可以使用SDS技術來實現,例如使用Ceph、GlusterFS等SDS解決方案作為Kubernetes Persistent Volumes的後端存儲。 SDS不一定要是物件存儲服務才算。SDS可以涵蓋多種存儲技術,包括塊存儲、文件存儲和物件存儲等。重要的是,SDS是通過軟件進行存儲管理和控制,而不依賴於特定硬體或供應商。 SDS是一種以軟件為基礎的存儲管理方法 SDS(軟件定義存儲)是一種存儲技術的方法論,它通過軟件層面的控制和管理來處理存儲資源,而不是依賴於特定的硬體設備或供應商。這意味著SDS可以在不同的硬體平台上運行,並且可以支援多種存儲技術,如塊存儲、文件存儲和物件存儲等。SDS的目標是提供一個統一的、抽象的存儲管理接口,使得存儲資源的配置、管理和控制可以在軟件層面進行,而不需要直接依賴於特定的硬體或供應商的API。 當談到儲存圖片和影片等數據時,最終這些數據是需要存儲在硬碟上的,而硬碟是物理媒體。SDS並不是指數據直接存在於軟件中,而是指存儲管理和控制的功能在軟件層面進行。 SDS可以使用不同的硬體設備來實現存儲,比如使用傳統硬碟(HDD)、固態硬碟(SSD)、雲端存儲、存儲區域網絡(SAN)等。這些硬體設備提供實際的數據存儲介質,而SDS則通過軟件抽象出這些硬體設備的管理和控制功能。 總的來說,SDS是一種以軟件為基礎的存儲管理方法,它可以在不同的硬體平台上運行,並且可以支援多種存儲技術,但最終數據仍然需要存儲在實際的硬碟或媒體上。 使用SDS來蒐集ML資料的優勢 使用SDS(軟件定義存儲)可以幫助蒐集機器學習(Machine Learning,ML)所需的資料,並且相對於傳統的數據存儲方式,它可能更有利於處理大量數據並提供更好的可擴展性和彈性。 以下是幾個使用SDS來蒐集ML資料的優勢:

    Continue Reading…: 軟件定義存儲(Software Defined Storage,SDS)介紹

  • ,

    TensorFlow目標檢測API – 訓練自己的資料

    安裝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 和 eval_input_reader。 例如 在這個配置檔案中,path_to_train.tfrecord 和 path_to_eval.tfrecord 是你的訓練和驗證TFRecord檔案的路徑。你需要將這些路徑換成你的TFRecord檔案的實際路徑。 路徑path_to_train.tfrecord和path_to_label_map.pbtxt通常是指向文件系统上的絕對路徑,不是相對於pipeline.config文件的相對路徑。 例如,如果你的訓練TFRecord文件位於/home/user/dataset/train.tfrecord,你應該這樣設置: train_input_reader和eval_input_reader分別用於指定訓練數據和評估數據的路徑。這些數據通常是標註過的圖像,已經被轉化為TFRecord格式。 使用自訂資料集進行訓練 訓練模型的指令:

    Continue Reading…: TensorFlow目標檢測API – 訓練自己的資料

  • ,

    TensorFlow目標檢測API – 程式使用範例

    事前作業 先在這一篇選定想要使用的模型,然後下載後解壓縮在專案的資料夾內,然後參考這篇文章設定環境: TensorFlow 的目標檢測API – 設定環境 程式實作範例 這個範例需要一個攝影機,使用的是SSD MobileNet V2 FPNLite 640×640的預設資料集 執行的速度很不錯,一秒可以有25FPS,適合用於實時串流 執行的畫面如下,因為懶惰所以還沒有把標記的label標上去,若想要標記,可直接使用detections[‘detection_classes’]作為分類的index,從category_index去取分類名稱

    Continue Reading…: TensorFlow目標檢測API – 程式使用範例

  • ,

    TensorFlow目標檢測API – 功能介紹

    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 是一種非常流行的實時目標檢測系統,以其快速和精確而著名。 YOLO 的預訓練模型並不在 TensorFlow Hub 提供,但你可以在 YOLO 的官方網站或者 Github 倉庫找到相關的預訓練模型和代碼(https://github.com/yyccR/yolov5_in_tf2_keras)。 如果你有特定的需求,例如對速度,精度,或者是特定類型的任務(例如實例分割或者姿態估計)有特殊的需求,可根據這些需求來選擇合適的模型。目前YOLO在PyTorch的支持進度比較快,到筆者這篇文章時,TF2對YOLO的支持只到yolov5。 包含的物件檢測模型列表 在這邊Speed越低代表速度越快,因為目標網址的CORSS DOMAIN的問題,要下載會需要按右鍵儲存網址然後到新視窗貼上才可以下載 Model name…

    Continue Reading…: TensorFlow目標檢測API – 功能介紹


17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。

如果你認同我或想支持我的努力,歡迎請我喝一杯咖啡!讓我更有動力分享知識!