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

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

  • ,

    TensorFlow 目標檢測API – 設定環境

    相關教學資源 在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 projects 查了一下網路文章,大概猜到是python版本和opencv版本還有tensorflow版本有所不合,所以到官方網站看一下安裝所需要的環境需求如下,不同版本的Tensorflow所要搭配使用的OpenCV、Python的版本都不同: 最後我是使用python3.7的環境,才成功的安裝好object_detection 安裝protobuf工具 在 Windows 上,可以通過以下步驟安裝 protobuf 編譯器: 安裝完成之後,就可以在./models/research下面執行 接著就可以用下面指令進行測試 如果沒有把*.proto編譯成.py,在執行物件偵測的程式碼時會出現以下錯誤 from object_detection.protos import…

    Continue Reading…: TensorFlow 目標檢測API – 設定環境

  • ,

    人工智慧之於微軟的想法

    對AI產業趨勢的觀查 微軟台灣區總經理卞志祥是財務工程和電腦工程的跨界,從新創到外商這樣走,因此他就是擅長電腦工程和產業的分析。他說『很少看到一個科技,是短短三到六個月之間從談論到變成每一個公司廣泛被討論的一個課題,尤其是在企業高層的廣泛討論』 產業的領導者很專注於這一個產業的變革,討論的主題不是技術而是商業模式,所以過去六個月就是不斷的和產業先進去學習一些DOMAIN KNOW HOW 2023年是一個高度不確定性的年代,也就是在這樣的年代之中,危機同時也就會帶有轉機,因為在每一次在全球地緣邊境的變動,會創造出很多變動中產出的WINNER和LOSER。例如:賽車時,要在大晴天之中想要在落後的前提下,超越很多專業車手,是非常困難的,而在大雨天才很有可能有這樣的機會。 產業改變得非常非常的快,並且驅動這個轉型的原因變得非常非常的多元,適應改變的速度會是未來決定一切非常重要的關鍵點 AI核心能力 高度賦能員工,改變與客戶互動的方式,優化流程。做的到這三件事情就有可能去實現你產品的新的機會 BING和CHATGPT的不同 CHATGPT是一個已建模完成的模型,且其資料停在2021年 BING會有一個關鍵字前處理的狀況,會先去網路找相關資料,然後會把資料輸入模型去產生結果,也因為這樣,Bing會有較高的正確性,因為在前處理的部份的搜尋動作,可以增加回應的正確性。 ChatGPT模型架構 CHATGPT在其內部架構中使用了Embedding model。Embedding model在CHATGPT中用於將輸入文本轉換為連續向量表示,以便進一步處理和生成回應。 在CHATGPT中,文本序列首先被轉換為一系列的詞嵌入(Word Embeddings),詞嵌入是將單詞映射為連續向量表示的技術。這些詞嵌入向量在模型內部被用作輸入特徵,以捕捉單詞的語義和上下文信息。通過使用詞嵌入,CHATGPT可以將輸入文本轉換為數字化的連續向量表示,以供模型進一步處理。 Embedding model在CHATGPT中的使用有助於提取和表示輸入文本的含義和特徵,並為模型提供適當的表徵。這樣,模型可以更好地理解和生成合適的回應。 不過CHATGPT不僅僅依賴於Embedding model,它是基於Transformer架構的深度學習模型。Transformer模型的主要組件包括多層的自注意力機制和前饋神經網絡,以實現高效的序列建模和生成。 Embedding model的後續能力很強,因為這些連續向量表示可以應用於多種機器學習和深度學習任務中,提供了強大的特徵表達能力。 Embedding model的後續能力包括: 強大的後續可能性 插件(Plugin)對AI系統可以產生後續更重大的影響力,並擴展其功能和應用領域。插件可以添加到AI系統中,以提供額外的功能、數據源或服務,從而影響整個AI生態系統。 在AI生成和對話方面,外掛插件可以引入特定領域的知識、資源或服務,從而使AI系統能夠處理更廣泛的任務和應用場景。舉例來說,對於旅行規劃,像AGADA這樣的插件可以提供訂房服務,使AI能夠直接與酒店預訂業務進行對話和交互。這樣的插件擴展了AI系統的能力,使其能夠在旅遊領域提供更全面的服務。 對於像CHATGPT或Copilot這樣的AI系統,外掛的成熟度對其功能和效能起著重要作用。成熟的外掛插件可以提供更多的選項和集成,使AI系統能夠與更多的業務單位或服務進行交互,從而增強其應用價值和實用性。 插件的開發和整合需要技術和商業合作,以確保外掛能夠無縫地集成到AI系統中。對於外掛插件的成熟度和支持,開發者和業務單位可以根據其需求和目標來選擇適合的外掛,以擴展AI系統的能力和功能。  Microsoft 365 Copilot即為一種後續應用 相關資訊: 重塑未來工作樣貌:微軟推出 Microsoft 365 Copilot,工作上的最佳 AI…

    Continue Reading…: 人工智慧之於微軟的想法

  • ,

    人工智慧概論

    人工智慧的演進 讓機器自己從圖片中尋找差異 博藍尼悖論(Polanyi’s Paradox)認為人類能表達的,遠比人類所知道的少 莫拉維克悖論(Moravec’s Paradox): 對於機器而言,人類的直覺,遠比人類的推理來的複雜 (更多運算資源) 讓電腦自己學習 從規則驅動變成資料驅動,只是原本是人從資料去定義規則,現在則是由電腦來找到規則 為了讓電腦更有效率地找到規則並在提取特徵之後辨識物體,可以採取以下方法: 應用範例 糖尿病的視網膜病變 https://www.kaggle.com/datasets/eishkaran/diabetes-using-retinopathy-prediction 魔術橡皮擦,可以自動去把相片的很多背景雜物移除 https://www.kaggle.com/datasets/utkarshsaxenadn/human-body-background-remover 利用Diffusion實現圖像生成 https://www.kaggle.com/datasets/dschettler8845/diffusiondb-2m-part-0001-to-0100-of-2000 機器學習的流程 4D Process包括Define Problem, Data Collect, Develop Model, Deploy Model

    Continue Reading…: 人工智慧概論

  • ,

    AI現況的概觀

    人工智慧是第四次的工業革命 Mobile computing, inexpensive sensors collecting terabytes of data, and the rise of machine learning that can use that data will fundamentally change the way the global economy is organized. Fortune, “CEOs: The Revolution is Coming,” March 2016 移動計算、廉價感測器收集的大量數據以及機器學習的興起將從根本上改變全球經濟的組織方式。 移動計算指的是人們使用移動設備(如智能手機、平板電腦)進行計算和資訊處理的能力。隨著移動設備的普及和技術的發展,人們能夠隨時隨地存取資訊和進行各種計算任務,不再受限於固定的位置或時間。這使得商業活動和經濟交易可以更靈活地進行,並且在不同的地點和時間進行交流和合作。…

    Continue Reading…: AI現況的概觀

  • ,

    使用Tensorboard來觀察模型效能

    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非常相似,都是在評估準確度。然而,一個區別是每次訓練迭代而不是每個時期對目標指標的觀察。

    Continue Reading…: 使用Tensorboard來觀察模型效能

  • ,

    如何訓練和測試數據

    將資料切分 在數據科學中,訓練數據和測試數據扮演著兩個主要的角色。評估已構建模型的性能與訓練和構建模型同樣重要,因為未經評估性能的模型可能會產生錯誤的預測並導致嚴重的並發症。為了防止這種情況發生並確保預測的準確性,您必須足夠好地測試和驗證模型。 為了構建和評估機器學習模型的性能,我們通常將數據集分成兩個不同的數據集。這兩個數據集是訓練數據和測試數據。 訓練數據 測試數據 用於構建模型 用於評估構建的模型 分配更大的數據部分 分配較小的數據部分 可進一步劃分以進行驗證 不會進一步分割 什麼是驗證數據 驗證數據是從訓練數據中分離出來的子數據集,用於在訓練過程中驗證模型。來自驗證過程的信息幫助我們改變模型的參數、分類器以獲得更好的結果。所以基本上,驗證數據可以幫助我們優化模型。  使用 Scikit-learn 的 train_test_split來切割數據 使用下面這段程式碼可以將訓練及分割成訓練及驗證集 使用測試資料作驗證 下面這段程式可以使用X_test、y_test來使用model做測試,並且可以用accuracy_score來取得準確率,並將準確率存入一個陣列裡 若是想要取得錯誤的資料集,則可以用np.where來取得與正確答案不一樣的資料,並將錯誤的資料存入incorrect陣列裡面 完整範例 下面的範例為結合K-Fold概念,將資料及分成五份,並做五次的訓練以判別模型的訓練狀況是否有過擬合的狀況。其中會每次會取其4分來做訓練、1份做測試,再將訓練集中的1/10拆做驗證集。最後使用matplotlib.pyplot來顯示這五次之中,測試集中錯誤結果的圖片 參考資料

    Continue Reading…: 如何訓練和測試數據

  • ,

    k-Fold Cross-Validation(交叉驗證)

    一般所使用的方式 – Holdout method 這是一種非常基本且簡單的方法,我們將整個數據集分為兩部分,即訓練數據和測試數據。顧名思義,我們在訓練數據上訓練模型,然後在測試集上進行評估。通常,訓練數據的大小設置為測試數據的兩倍以上,因此數據按70:30或80:20的比例進行分割。 在這種方法中,數據在分割之前首先被隨機洗牌。由於模型是在不同的數據點組合上訓練的,每次訓練時模型都會給出不同的結果,這可能是不穩定的原因。此外,我們永遠無法保證我們選擇的訓練集能夠代表整個數據集。 此外,當我們的數據集不是太大時,測試數據很可能包含一些我們丟失的重要信息,因為我們沒有在測試集上訓練模型。範例程式如下: 改善方法 – k-Fold Cross-Validation K 折交叉驗證是改進的一種方法。這種方法保證了我們模型的分數不依賴於我們選擇訓練集和測試集的方式。將數據集分為 k 個子集,並將保留方法重複 k 次。讓我們分步驟完成這個過程: 因為它確保來自原始數據集的每個觀察結果都有機會出現在訓練和測試集中,所以與其他方法相比,這種方法通常會產生偏差較小的模型。如果我們的輸入數據有限,這是最好的方法之一。  這種方法的缺點是訓練算法必須從頭開始重新運行 k 次,這意味著進行評估需要 k 倍的計算量。 分層k-Fold – Stratified K Fold Cross Validation 在分類問題上使用 K Fold 可能會很棘手。由於我們隨機打亂數據,然後將其劃分為折疊,因此我們可能會得到高度不平衡的折疊,這可能會導致我們的訓練出現偏差。例如,讓我們以某種方式得到一個折疊,其中大多數屬於一個類(例如正類),而只有少數屬於負類。這肯定會破壞我們的訓練,為了避免這種情況,我們使用分層進行分層折疊。 分層是重新排列數據的過程,以確保每次折疊都能很好地代表整體。例如,在每個類包含 50% 數據的二元分類問題中,最好對數據進行排列,使得在每個折疊中,每個類包含大約一半的實例。 下面這張圖,是在分類問題上使用K-Fold折疊的方式,會發現因為不同分類隨機分組導致每個分組的數量不一,而破壞訓練的狀況 資料狀況: 共三種資料,每一種70張,共210張,訓練集168張,測試集42張…

    Continue Reading…: k-Fold Cross-Validation(交叉驗證)

  • ,

    Optimization loop failed: Cancelled: Operation was cancelled

    遇到的錯誤訊息 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 get current CPU and RAM usage in Python 解決 – 若是使用太多記憶體 在Tensorflow裡面有一篇討論串,滿多人都會遇到此問題,其中一位大大建議在GPU上提高可使用的內存,可解決此問題 討論串: Optimization loop…

    Continue Reading…: Optimization loop failed: Cancelled: Operation was cancelled

  • ,

    計算兩個點之間的直線距離

    使用math.hypot math.hypot 是 Python 內置的數學模塊 math 中的函數。它接受兩個參數,分別代表兩點的 x 和 y 坐標差值,然後返回它們的歐幾里德距離(即直線距離)。 使用np.sqrt np.sqrt 是 NumPy 庫中的函數,用於計算給定數值的平方根。要使用 np.sqrt 計算兩點之間的距離,你需要首先計算兩點在 x 和 y 坐標軸上的差值的平方和,然後將它們相加,再使用 np.sqrt 對結果進行平方根運算。

    Continue Reading…: 計算兩個點之間的直線距離

  • ,

    對輪廓的點做旋轉計算

    使用角度的正弦和餘弦函數,將長方形的寬度和高度乘以正確的係數,以獲得旋轉後的角點座標。 下面為一個將一個長方形的四個點作45度旋轉的簡單範例: 顯示結果如下

    Continue Reading…: 對輪廓的點做旋轉計算


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

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