發表文章

Tensorflow1.x跟2.x版本透過anaconda去跑各自不同執行環境

圖片
  TensorFlow 是為了能輕鬆實現深度學習與機器學習演算法而開發的函式庫。因此,在任何可以使用機器學習、深度學習的領域,都可以使用 TensorFlow。深度學習演算法的優點在於其通用性,能廣泛應用於多種不同領域。 雖然僅使用 TensorFlow 函式庫也能編寫深度學習程式碼,但為了能更輕鬆地實現深度學習演算法,存在許多將 TensorFlow 函式庫進階抽象化 Abstraction 的多樣化高階 High-Level 函式庫。利用這些函式庫,可以比直接使用 TensorFlow 以更簡潔的程式碼實現深度學習演算法。 Keras 這是由 François Chollet 建立的深度學習抽象化函式庫。除了 TensorFlow 之外,還支援 CNTK、Theano、MXNet 等其他深度學習函式庫。 Keras 是深度學習抽象化函式庫中擁有最多使用者群體的。憑藉這種人氣,Google 將 Keras 的創始人 François Chollet 招募進公司,並將 Keras 合併到 TensorFlow 的主程式碼庫中。因此,可以混合使用 TensorFlow 函式庫與 Keras 函式庫來編寫程式碼。 Tensorflow1.x conda create -n tf1 python=3.7 -y conda activate tf1 pip install --upgrade pip pip install tensorflow==1.15.5 pip install "protobuf<3.20" python -m pip install notebook ipykernel python -m ipykernel install --user --name tf1 --display-name "Python (tf1)" jupyter notebook --notebook-dir="E:\PyProjects\TF1_Project" pip install tensorflow-gpu==1.15 如果想要安裝 GPU 版本,早期教學影片、文件會跟你說必須先安裝 CUDA 和 cuDNN*,然後可以使用以下指令安裝 TensorFlow GPU 版本: pip install ...

從影像辨識進展到影像理解_PART2.使用卷積運算的特徵提取

圖片
  從使用微分的邊緣特徵量(edge-based feature)提取開始。 邊緣特徵量是表示影像中亮度變化較大部分的特徵量,常用於物體的輪廓提取。 座標(x, y)的亮度變化量可以透過對(x, y)的像素值進行微分來表示。 由於影像座標系統是2維的會有兩個x,y變數,這邊底下會改用偏微分的符號 $\partial$ 就代表 partial,來取代單變數微分的萊布尼茲符號 $\frac{d}{dx}$。 若對 x 軸方向進行微分,可得到水平方向的邊緣特徵量 若對 y 軸方向進行微分,則可得到垂直方向的邊緣特徵量。 座標 $(x, y)$ 的垂直方向邊緣特徵量 $E_x(x, y)$ 與水平方向邊緣特徵量 $E_y(x, y)$ 分別取微分的絕對值。 其公式如 [1.1] 與 [1.2] 所示: $$E_x(x, y) = \left| \frac{\partial}{\partial x} I(x, y) \right| \simeq | I(x+1, y) - I(x, y) | \quad [1.1]$$ $$E_y(x, y) = \left| \frac{\partial}{\partial y} I(x, y) \right| \simeq | I(x, y+1) - I(x, y) | \quad [1.2]$$ 其中 $I(\cdot, \cdot)$ 代表指定座標處的像素值。 由於像素值在相鄰像素之間是離散變化的,因此無法精確計算微分,因為連續函數才能做微分,因此只能用差分來做取代,我們使用離散近似。透過這個方法我們可以為每個像素產生一階導數。邊緣位於一階導數取極值的位置。 連續世界的導數公式定義如下 $$ \frac{\partial I}{\partial x}(x, y) = \lim_{h \to 0} \frac{I(x+h, y) - I(x, y)}{h} $$ ​ https://medium.com/@sarcas0705/computer-vision-derivative-over-image-e1020354ddb5 但像素一格一個走,沒有  h → 0。 所以用最常見的 前向差分(在函數的某點,使用該點及下一點的函數值來計算變化率)。 以x為變數對整個I影像函數來做偏維,視y為常數。 $$ \frac{\p...

從影像辨識進展到影像理解_PART1.概況筆記

圖片
  https://www.ibm.com/think/topics/computer-vision 近年來,影像辨識技術正以各種形式支援著人類的生活。 例如:智慧型手機透過臉部辨識進行解鎖;在視訊會議中,為了模糊背景,會使用影像辨識技術將人物與背景分離。 「影像辨識」 是指「利用電腦對影像中的 物體或人物動作、文字等進行分類與識別 」。 近年來影像辨識已進化到能對輸入影像進行物體或行為分類後,進而 生成描述該影像的文字 。這種高階技術有時會與影像辨識區分開來,稱為 「影像理解」 (Image Understanding) 。 雖然影像辨識技術多樣,但並不代表每種技術都完全不同。隨著近年深度學習 (Deep Learning) 的發展,機器學習模型的通用化程度提高,不同的問題往往能用幾乎相同的技術解決。 人類透過感覺器官感知的資訊會轉換為電氣訊號進行處理,並應用於識別。 然而,視覺資訊並非一開始就是以電氣訊號的形式從現實世界傳來,而是光信號。因此,人類要處理視覺資訊,首先需要一個能將光信號轉換為電氣訊號的「感測器」。 http://ftp.healthhonk.com/doctor/lee04.htm 在人體中負責感測器角色的是眼睛。從現實世界進入眼睛的光信號會透過「水晶體」進行對焦,並投影到「視網膜」上。視網膜將投影的光信號轉換為電氣訊號,並輸出至視神經。 https://benevo.pixnet.net/blog/posts/5067409784 電腦內部的訊息交換也是透過電氣訊號進行。因此,電腦要活用視覺資訊,同樣需要感測器,而扮演這個角色的就是相機。 https://www.geeksforgeeks.org/computer-vision/computer-vision/ 在相機中,來自現實的光信號會透過「鏡頭」進行對焦,投影到「感光元件」上。感光元件將投影的光信號轉換為電氣訊號,寫入相機記憶體中或傳輸至外部裝置。 而現今智慧型手機標榜的「1200 萬畫素」這類數值,代表的就是建構成感光元件的受光元件數量。投影到感光元件的光信號會由各個受光元件轉換為電氣訊號,因此元件數量越多,越能將影像轉換為細膩的電氣訊號。 影像辨識的處理流程( 在深度學習出現之前 ) 輸入影像 => 特徵提取(Feature Extraction) =>...

研究所網文經驗參考

研究所生活全攻略:16個 碩士班常見問題 、深度分析與建議 https://geo1995.com/tips-%EF%BD%8Daster-degree/ 研究生README|怎麼讀Paper https://vocus.cc/article/65f44c89fd89780001663cb3 做研究之十八般武藝 https://www.csie.ntu.edu.tw/~b90057/use/research_how_to.pdf 要不要考研究所-找與報paper篇 https://hackmd.io/@today-is-researchday/rfdb#%E6%80%8E%E9%BA%BC%E7%9C%8B%E8%AB%96%E6%96%87%E8%B7%9F%E5%A0%B1%E8%AB%96%E6%96%87 [轉貼] 做一次好的論文報告 https://www.ptt.cc/bbs/NTHU_NVLab/M.1242219101.A.90E.html 研究生應有的觀念與態度—談我碩博士的求學生涯 https://nurse.cgust.edu.tw/var/file/31/1031/img/323/280941560.pdf 研究生在幹嘛? #第一次報Paper!講到我口好渴呀 https://www.youtube.com/watch?v=JMuGunjNfXM 如何在閱讀研究文獻中保持批判性 https://vocus.cc/article/659eab09fd8978000131b9ad 解析期刊論文:十七個具備批判性思考的提問技巧及範例 https://www.editing.tw/blog/structure/%E8%A7%A3%E6%9E%90%E6%9C%9F%E5%88%8A%E8%AB%96%E6%96%87-%E5%8D%81%E4%B8%83%E5%80%8B%E5%85%B7%E5%82%99%E6%89%B9%E5%88%A4%E6%80%A7%E6%80%9D%E8%80%83%E7%9A%84%E6%8F%90%E5%95%8F%E6%8A%80%E5%B7%A7%E5%8F%8A%E7%AF%84%E4%BE%8B.html https://awec.ntu.edu.tw/wp-content/uploads/2023/11/%...

[自然語言]術語筆記_語言模型N-gram(看前N-1個token,來預測下一個詞)、Corpus(語料庫)

圖片
https://books.google.com/ngrams/graph?content=*&year_start=1800&year_end=2022&corpus=zh&smoothing=3 上圖為Google Books的語料庫可發現 的這個字頻率出現最高 Language Model (語言模型) 如果說我們有一個由m個詞組成的序列(也就是一個句子),我們希望計算句子的概率。 根據鍊式規則,可得: p(w₁, w₂, …, wₘ) = p(w₁) * p(w₂ | w₁) * p(w₃ | w₁, w₂) … * p(wₘ | w₁, …, wₘ₋₁) 根據馬可夫鏈假設可得 p(w₁, w₂, …, wₘ) = p(wᵢ | wᵢ₋ₙ₊₁, …, wᵢ₋₁) Corpus/Corpora ( 語料庫 ) 語料庫是一個由真實文字或音訊組成並整理成資料集的結構化文本數據集。是自然語言處理(NLP)系統的基礎。 它可以包含從報紙、小說、食譜、廣播節目到電視節目、電影以及推文等各類內容。 https://botpenguin.com/glossary/corpus N-gram模型(看前N-1個token,來預測下一個詞) 是一種LM(Language Model),語言模型是一個根據機率判別的模型,其輸入是一句話(單詞的有順序性序列),輸出也就是這一句話的機率,也就是這些單詞的聯合機率(joint probability)。 常應用在「錯字修正」、「選字推薦」等。 以n-1個字來做input,預測之後應該output捨麼字。比方4-gram model就會用前3個字來預測第4個字output為何? 比方以Google Books語料庫N-gram推測 滷肉 下一個字機率最大是出現 "飯" N-gram模型定義(等號左側就為句子出現的合理性機率) 當 n=1 時,一個一元模型(Unigram)為,每個單詞出現機率連乘的機率,只看自己: 當 n=2 時,一個二元模型(Bigram)為,前一個單詞條件下再去計算第二個單詞的機率: 當 n=3 時,一個三元模型(Trigram)為,看前2個單詞去預測下一個單詞的機率: N-gram的N愈大愈好嗎? 當N值較大:對字詞的約束性更高,具有更高的辨識力,複雜度較高。 當N值...

[自然語言]術語筆記_詞袋模型BOW(Bag of Words)&詞集模型(Set of Words)

圖片
https://sep.com/blog/a-bag-of-words-levels-of-language/ 詞袋模型BOW(Bag of Words)-One-hot表示法 最早用於提取文本特徵提取手法 將文本直接簡化為一系列集合,不考慮語法和詞序關係,每個詞互相獨立。 該方式也被稱作詞袋模型(Bag of Words,BOW),只是把詞直接裝進袋子中,詞和文本關係就相當於文本是一個袋子。 早期較簡易的模型,對文本中資訊較多丟失。 最早被提出是為了解決文檔分類問題,目前也有應用魚NLP、CV等領域。 具體作法 對料語進行清理,並完成分詞,比方有一句話如下: 大魚吃小魚也吃蝦米,小魚吃蝦米。 對每個詞進行編號,形成字典(順序無關的流水號) {"大魚":1,"吃":2,"小魚":3,"也":4,"蝦米":5} 用0,1代表該詞是否在文本中出現,從而將文本紀錄為一個特徵向量。 大魚吃小魚也吃蝦米 =>[大魚,吃,小魚,也,蝦米] => [1,2,1,1,1]   吃出現兩次 小魚吃蝦米 => [0,1,1,0,1] 詞集模型(Set of Words) 若不考慮詞頻,減少模型複雜度則就稱為Set of Words。 常用在短文本分析。 大魚吃小魚也吃蝦米 =>[大魚,吃,小魚,也,蝦米] => [1,1,1,1,1]   One-hot表示法

[論文筆記]BLEU: a Method for Automatic Evaluation of Machine Translation

圖片
年份:2002年 論文連結:https://aclanthology.org/P02-1040/ 研究問題 本篇論文探討學者們為了解決機器翻譯評估效率,提出了一個快速又低廉並且與語言無關,替代人工評估但又保留人為評估特性、每次運行邊際成本極低的方法與BLEU基準。 BLEU(Bilingual Evaluation Understudy)為一種用於自動評估機器翻譯品質的指標。由IBM研究員2002年所提出。主要根據N-gram匹配,核心思想是透過比較機器生成的翻譯與參考翻譯之間的n-gram(連續n個詞)匹配情況來度量翻譯品質。 BLEU的取值範圍坐落於0~1之間,越靠近1代表機器翻譯品質越好。 研究背景 為了讓機器翻譯技術能進步,更有效率低廉成本的評估方法於早期就屬於一個大問題。 根據更早期學者文獻(Hovy,1999; White and O’Connell, 1994)探討到,對於機器翻譯成效評估面向主要聚焦於翻譯的充分性(adequacy)、忠實度(fidelity)和流暢度(fluency)。 早期人類對於機器翻譯評估,絕大部分都採用人工評估方式。此類方式需要耗費數週甚至數月才能完成,時間成本極高也無法將人力重複疊代。 不利於研發「每天改模型就要回歸測」的需求。 如何衡量翻譯表現?學者們認為只要翻譯越接近專業的人類翻譯,就越好。為了評估機器翻譯品質,人們通常根據數值化度量標準,衡量其與一或多位人類參考翻譯接近程度。 因此學者們的機器翻譯評估系統主要涵蓋兩個要素 1.一個數值化的翻譯接近度度量指標 2.一個高品質的人類參考翻譯語料庫 通常給定一個原文句子,一定會有不只一句翻譯。這些翻譯在用詞或詞序上仍可能有所不同,就算用同樣詞彙。 比方以下翻譯範例,共有兩種候選翻譯句子。雖然看似表達語意差不多,但品質卻大相逕庭。 Candidate 1: It is a guide to action which ensures that the military always obeys the commands of the party.(這是一份行動指南,確保軍隊始終服從黨的指令。) Candidate 2: It is to insure the troops forever hearing the activity guidebook that party...

PL-SQL筆記5_ORA-06550_PLS-00428: 在此SELECT敘述句中預期會出現一個INTO子句

 在PLSQL Develoepr 想進行腳本測試時 DECLARE   v_groupName VARCHAR2(300); BEGIN   v_groupName := 'some group name';   SELECT R.*     FROM ROLE_TABLE R,          USER_ROLE_RELATION UR,          USER_CONTACT UC    WHERE R.ROLE_NAME = v_groupName      AND R.ROLE_ID   = UR.ROLE_ID      AND UR.USER_ID  = UC.USER_ID; END; 報以下錯誤 ORA-06550: 第四行,第 3 個欄位: PLS-00428: 在此SELECT敘述句中預期會出現一個INTO子句 原因: 要在 PL/SQL 區塊裡查詢 → 必須用 INTO 或 Cursor。 在 PL/SQL 區塊裡,不可能直接寫裸的 SELECT。 若不想用 INTO,就不要包在 PL/SQL 區塊裡,直接寫 SQL 查詢。

Seminar期末報告參考

  Engineering Blog https://www.coupang.jobs/en/life-at-coupang/engineering-blog/#posts Accelerating Coupang’s AI Journey with LLMs https://www.coupang.jobs/en/life-at-coupang/engineering-blog/accelerating-coupang-s-ai-journey-with-llms Meet Coupang’s Machine Learning Platform https://www.coupang.jobs/en/life-at-coupang/engineering-blog/meet-coupang-s-machine-learning-platform/?utm_source=chatgpt.com#1_ 你不知道的酷澎數據軍火庫 https://www.ithome.com.tw/voice/159892 【貫徹數據至上原則的關鍵基礎建設】酷澎PB級數據平臺大解析 https://www.ithome.com.tw/news/159882 酷澎如何擁抱生成式AI,開發到應用技術細節一次看 https://www.ithome.com.tw/news/166732

CV看圖說故事_Phase1.COCO資料集載入與劃分

圖片
COCO 是一個大規模的物件偵測、分割與影像描述資料集。COCO 有幾項特色: Object segmentation Recognition in context Superpixel stuff segmentation 330K images (>200K labeled) 1.5 million object instances 80 object categories 91 stuff categories 5 captions per image 250,000 people with keypoints COCO數據集 資料LINK http://images.cocodataset.org/zips/train2014.zip http://images.cocodataset.org/zips/val2014.zip  http://images.cocodataset.org/annotations/annotations_trainval2014.zip 下載解壓後存放至Jupyter Notebook專案之下,檔案大小依序分別如下(過程要等一段時間) val2014.zip 大小6.18GB train2014.zip 大小12.5GB annotations_trainval2014.zip 大小241MB 記得解壓縮存放到./data相對目錄下 訓練與驗證影像的描述文字可在 annotations 子資料夾內中的  captions_train2014.json 或 captions_val2014.json JSON 檔中找到,而所有影像都放在 train2014 或 val2014 資料夾中。 關於JSON檔案格式基本上 可以使用如下程式碼,先觀察到有以下四個主要KEY值 info、image、license 和 annotation import json valcaptions = json.load( open ( './data/annotations/captions_val2014.json' , 'r' )) trcaptions = json.load( open ( './data/annotations/captions_train2014.jso...

Vision Transformers_相關專業術語與原理_一些最具影響力的純視覺 Transformer

圖片
  Vision Transformers(視覺變換器) 事實上在ViT被發展出來之前,已有帶視覺注意力的 RNN 與混合 CNN-Transformer 模型。 ViT 的前身 RNNs with Visual Attention(具視覺注意力的循環神經網路) Show, Attend and Tell: Neural Image Caption Generation with Visual Attention https://arxiv.org/abs/1502.03044 https://arxiv.org/pdf/1502.03044 最早主要提出了自動根據一張影像來生成一段文字描述 注意力機制在自然語言處理之外的最早應用之一,是使用視覺注意力來生成影像描述。 在這裡,卷積神經網路會先處理影像並輸出一些特徵圖。 接著配備注意力機制的解碼器,RNN 會一次產生一個詞元來生成描述。 解碼器在每個解碼步驟使用注意力層,專注於影像中恰當的部分。 模型生成了描述「A woman is throwing a Frisbee in a park」,可觀察到當解碼器即將輸出單字「Frisbee」時,它將注意力集中在哪個輸入影像的區域:很明顯,大部分注意力都集中在飛盤上。其他還有像是聚焦在一個小女孩或一隻狗等,都是聚焦在英文句子主詞的注意力。 注意力機制的另一個額外好處是,它們讓人更容易理解促使模型產生輸出的原因。 模型會具有可解釋性,當模型犯錯時,這尤其有用。 在2016年論文中就有探討到如下案例。 "Why Should I Trust You?": Explaining the Predictions of Any Classifier https://arxiv.org/abs/1602.04938 https://arxiv.org/pdf/1602.04938 例如,如果一張在雪地裡散步的狗的影像被標註為「在雪地裡散步的狼」,那麼你可以回頭檢查模型在輸出「狼」這個詞時注意了什麼。你可能會發現它不只注意到狗,也注意到雪,這暗示了一個可能的解釋:也許模型學會透過檢查周遭是否有大量雪來區分狗與狼。 該論文提出了另一種可解釋性的方法:在分類器某次預測的局部鄰域內,學習一個可解釋的模型來解釋該預測。 以下一些最具影響力的純視覺 Transformer,只...