跳到主要內容

CV Day 1 系列導覽:五個任務的學習地圖

CV Day 1 系列導覽:五個任務的學習地圖

執行需求:CPU 可跑。今天是「PyTorch 電腦視覺進階:從影像分類到生成模型」系列的開篇章,我們不寫模型,先把接下來四十四篇會走過的地圖畫清楚。讀完之後,你會知道這個系列為什麼選擇分類、偵測、分割、姿態、生成這五個任務,它們彼此有什麼差別,又怎麼在最後五篇的工業瑕疵檢測專案裡合在一起。

引言

電腦視覺(Computer Vision,CV)在 2024 年底已經是一個非常成熟的領域,但它對初學者並不友善。打開 Papers with Code,你會看到幾千種模型架構與資料集;打開 GitHub,你會看到更多套件與教學。最大的問題不是「東西太少」,而是「東西太多,不知道怎麼排順序」。這個系列的目的就是替讀者畫一張清楚的學習地圖,讓你跟著走完四十五篇之後,能從「看得懂別人的程式碼」變成「自己能把一個完整的電腦視覺專案從頭做到尾」。

延續前一個「Python 從入門到 PyTorch 深度學習」系列的累積,我們假設你已經會寫 Python、會用 PyTorch 做基本訓練、也理解卷積神經網路(Convolutional Neural Network,CNN)與反向傳播的觀念。接下來要補上的,是「拿到一個真實世界的影像任務時,應該選什麼模型、什麼資料格式、什麼評估方式」。我們不追求把所有模型都教過一遍,而是把每個任務的代表性方法選一到兩個,讓你熟悉那個家族的核心邏輯,之後自己再延伸到更新的論文。

整個系列以一個貫穿專案「工業瑕疵檢測」為主軸:分類章節教你判斷瑕疵類型,偵測章節教你定位瑕疵位置,分割章節教你描出瑕疵輪廓,姿態章節與生成章節教你補足資料與評估模型,最後五篇把整套流程整合成一個能上線的服務。這樣的安排,是希望讀者每學一個章節,就多一塊能放進專案裡的拼圖。

為什麼是這五個任務?

電腦視覺的任務很多,為什麼只挑這五個?原因是它們涵蓋了「影像能回答什麼樣的問題」這個問題的主要面向。一張影像可以回答「這是什麼」(分類)、「在哪裡」(偵測)、「每一個像素屬於什麼」(分割)、「人怎麼擺姿勢」(姿態),以及「如果長得不像訓練資料,模型能不能生出新的」(生成)。把這五個任務串起來,幾乎能處理大多數實際應用場景。

從資料格式的角度看,這五個任務也剛好對應五種主流的標註方式:分類用整數標籤,偵測用邊界框與類別,分割用像素遮罩,姿態用關鍵點座標,生成則通常不需要標註但需要理解雜訊與條件。這些格式之間的轉換(Day 12、Day 23 會講),是實務上很常遇到但很少被系統性教過的內容。熟悉這五種格式之後,未來碰到新資料集時,你就有一套清楚的思考框架。

從學習曲線看,五個任務的難度循序漸進。分類最直覺,幾行程式就能跑起來;偵測開始需要處理邊界框與非極大抑制;分割要對像素層級理解;姿態要處理空間結構;生成則進到機率模型的世界。這樣的順序,讓你每個章節都站在前一個章節的基礎上往前推,而不是一次跳進最深的領域。

五個任務的學習地圖

以下是這個系列四十五篇的整體安排。為了讓你有心理準備,這裡先把每一章的「核心概念」與「你會學到的工具」先列出來,後續每個章節的開頭都會回顧這張地圖,告訴你現在站在哪裡、要往哪裡走。

章節 天數 核心概念 代表工具
導論與環境 Day 1–2 系列地圖、Colab、套件版本 torchvision、timm、Ultralytics
分類 Day 3–9 CNN 基礎、增強、遷移學習、評估 torchvision、timm、Albumentations
偵測 Day 10–17 邊界框、mAP、YOLO、DETR torchvision、Ultralytics、transformers
分割 Day 18–25 語意/實例/全景、U-Net、SAM torchvision、segmentation_models_pytorch
姿態 Day 26–32 關鍵點、OKS、動作辨識 Ultralytics、MediaPipe
生成 Day 33–40 GAN、Diffusion、ControlNet diffusers、transformers
專案整合 Day 41–45 工業瑕疵檢測、部署 ONNX、FastAPI、Streamlit

這張表的重點不是「哪一天要做什麼」,而是「為什麼這個順序」。我們刻意把生成模型放在後段,因為它需要比較成熟的 PyTorch 與資料處理經驗;同樣地,把姿態放在生成前面,是因為姿態章節用到的 Ultralytics 與前幾章的工具一致,能幫你累積使用同一套生態系的熟悉度。當你走到 Day 40 之後,會發現自己已經對 torchvision、timm、Ultralytics 這幾個核心套件很熟悉,這對實戰非常重要。

另外,章節內部的順序也有邏輯。分類章節從 CNN 基礎(Day 3)→ 增強(Day 4)→ 現代架構(Day 5)→ 遷移學習(Day 6)→ 訓練技巧(Day 7)→ 評估(Day 8)→ 完整實戰(Day 9),這正好對應「資料 → 模型 → 訓練 → 評估」的標準流程。偵測、分割、姿態章節也都按照這個順序:基礎概念 → 主流架構 → 資料與標註 → 評估 → 實戰。先建立觀念,再碰程式碼;先會用工具,再談調參;先求能跑,再求能跑好。

每篇的閱讀節奏建議

這個系列每篇大概 3,500 到 5,000 個中文字,閱讀時間落在 20 到 30 分鐘之間。如果你是第一次接觸電腦視覺,建議每天讀一篇、搭配實際執行文中範例,大概一週可以熟悉一個章節的核心 API。如果你是已經會分類、想往偵測或分割走的進階讀者,可以挑著讀,跳過已經熟悉的章節,直接看你缺的部分。

貫穿專案:工業瑕疵檢測

這個系列選擇「工業瑕疵檢測」作為貫穿專案,主要有三個理由。第一,它是一個真實的產業問題,從金屬加工到紡織品到電子零件都有需求,學完之後能直接應用到工作場景。第二,它把五個任務自然串起來:分類判斷瑕疵類型、偵測定位瑕疵位置、分割描出瑕疵輪廓、姿態在某些場景(例如紡織品紋理對齊)會用到、生成可以合成罕見瑕疵樣本來補足長尾資料。第三,公開資料集 MVTec AD 提供 15 類工業影像,且採用 CC BY-NC-SA 4.0 授權,適合示範與教學。

需要特別強調的是,這個系列示範的所有結果都是「教學與示範用途」,不代表真實產線的成效。實際部署到工廠時,需要考慮光線、鏡頭、解析度、產線速度、誤判成本等更多因素,這些會在 Day 41 到 Day 44 的專案章節討論。我們用 MVTec AD 與程式化合成的瑕疵資料,是為了讓你能在沒有客戶資料的情況下,仍能練習完整的流程。

完整實作:用一張小圖走過五個任務的介面

在深入各個章節之前,我們先用一個最小可執行範例,示範五個任務的典型介面長什麼樣。這裡不要求你真的訓練出有用的模型,而是讓你對「分類長這樣、偵測長這樣、分割長這樣」有第一手的感覺。後續章節會逐一展開細節,今天的目標是「看過」。

以下範例建立一張 64×64 的合成影像與對應標籤,分別用五個任務最簡單的 API 跑一次推論。你可以把這段貼進任何 Python 環境執行;今天不依賴 GPU,CPU 就能跑完。

import numpy as np
import torch
from PIL import Image

# 1. 建立一張 64x64 的合成影像當作「示意影像」
rng = np.random.default_rng(0)
img_np = rng.integers(0, 256, size=(64, 64, 3), dtype=np.uint8)
img = Image.fromarray(img_np, mode="RGB")
img.save("sample.jpg")
print("已建立示意影像:sample.jpg")  # 輸出:已建立示意影像:sample.jpg

第一個區塊只是把 numpy 陣列轉成影像並存檔。在真實專案裡,你會從硬碟讀圖或從攝影機抓 frame;在今天只要理解「影像的本質是一個三維陣列(高度、寬度、通道)」就夠了。所有電腦視覺模型的輸入,最後都會被轉成這種形式。

接下來我們用 torchvision 內建的分類模型跑一次推論。torchvision 在 2024 年底的版本(0.20)提供了很多預訓練權重,能直接拿來做遷移學習或單純的特徵抽取。今天我們只看介面。

import torchvision
from torchvision.models import resnet18, ResNet18_Weights

# 2. 分類:用 ResNet18 看這張影像「像不像某個類別」
weights = ResNet18_Weights.DEFAULT
model_cls = resnet18(weights=weights)
model_cls.eval()

from torchvision import transforms
preprocess = weights.transforms()
batch = preprocess(img).unsqueeze(0)  # 增加 batch 維度
with torch.no_grad():
    logits = model_cls(batch)
probs = logits.softmax(dim=1)[0]
top_id = probs.argmax().item()
top_label = weights.meta["categories"][top_id]
print(f"分類 top-1:{top_label},信心 {probs[top_id].item():.3f}")
# 輸出(實際數字會略有不同):分類 top-1:tile roof,信心 0.014

這個範例展示分類任務的標準流程:讀圖 → 前處理(Resize、CenterCrop、ToTensor、Normalize)→ 模型推論 → softmax 拿到機率。注意 torchvision 0.20 之後推薦用 weights = ResNet18_Weights.DEFAULT 這種寫法,比舊版的 pretrained=True 更明確,能同時取得類別名稱與前處理參數。實際應用時,你會把 top_label 換成自己的類別,並把信心分數拿來決定要不要拒絕預測。

接著示範偵測與分割的介面。我們用 torchvision 提供的 Faster R-CNN 與 DeepLabV3,這兩個模型在 0.20 版都已經內建 COCO 預訓練權重。

from torchvision.models.detection import fasterrcnn_resnet50_fpn, FasterRCNN_ResNet50_FPN_Weights
from torchvision.models.segmentation import deeplabv3_resnet50, DeepLabV3_ResNet50_Weights

# 3. 偵測:用 Faster R-CNN 找邊界框
det = fasterrcnn_resnet50_fpn(weights=FasterRCNN_ResNet50_FPN_Weights.DEFAULT)
det.eval()
with torch.no_grad():
    detections = det([preprocess(img)])
print(f"偵測到 {len(detections[0]['boxes'])} 個物件")
# 輸出(實際數字會略有不同):偵測到 1 個物件

# 4. 分割:用 DeepLabV3 拿語意分割
seg = deeplabv3_resnet50(weights=DeepLabV3_ResNet50_Weights.DEFAULT)
seg.eval()
with torch.no_grad():
    out = seg(batch)["out"]
mask = out.argmax(dim=1)[0].numpy()
print(f"分割遮罩形狀:{mask.shape},唯一類別數:{len(np.unique(mask))}")
# 輸出(實際數字會略有不同):分割遮罩形狀:(64, 64),唯一類別數:21

偵測回傳的是一個串列,每個元素對應一張影像,裡面有 boxes、labels、scores 三個欄位;分割則回傳一張與輸入同尺寸的遮罩,每個像素有一個類別編號。你可以看到 API 設計的風格:給影像進去、給結構化結果出來,呼叫端不用管模型的內部運作。這也是為什麼 torchvision 是初學者最好的起點——介面統一,說明齊全,切換模型只要改兩行。

最後示範生成模型的介面。我們用 diffusers 載入一個小型的 Stable Diffusion 模型,並產生一張圖。這個範例在 Colab T4 環境會比較順,CPU 上會跑很久;今天只要看介面。

from diffusers import StableDiffusionPipeline

# 5. 生成:用 Stable Diffusion 生一張圖
# 需先 pip install diffusers==0.31 transformers==4.46 accelerate
pipe = StableDiffusionPipeline.from_pretrained(
    "runwayml/stable-diffusion-v1-5",
    torch_dtype=torch.float32,  # CPU 用 float32;GPU 可改 torch.float16
)
pipe = pipe.to("cpu")
prompt = "a tiny metal gear with a scratch, industrial inspection photo"
image = pipe(prompt, num_inference_steps=10, height=64, width=64).images[0]
image.save("generated.jpg")
print("已生成示意影像:generated.jpg")  # 輸出:已生成示意影像:generated.jpg

這個範例展示了生成模型的呼叫鏈:載入 pipeline、設定裝置、給一段 prompt、得到一張影像。完整的參數(負面提示詞、種子、引導強度等)會在 Day 36 展開。今天你只要記得一件事:生成模型的 API 是「給一段文字,拿到一張圖」,跟分類/偵測/分割的「給一張圖,拿到一個標註」剛好相反,這種對偶性是學習擴散模型時一個有用的切入點。

為了讓你更直觀地感受「同一張影像在五個任務裡會被怎麼解讀」,我們最後再做一個小實驗:用一張「含有一個紅色方塊」的合成影像,分別跑五個任務,比較它們的輸出差異。這種「同一輸入、不同任務」的對照,是學習電腦視覺時很有用的思考練習。

import numpy as np
from PIL import Image

# 建立一張含紅色方塊的合成影像
H = W = 96
img_np = np.full((H, W, 3), 255, dtype=np.uint8)  # 白底
img_np[24:72, 24:72] = [220, 30, 30]             # 中央紅色方塊
img = Image.fromarray(img_np, mode="RGB")

# 把這個「任務地圖小卡」存起來,等等五個任務都會用到
img.save("task_overview.jpg")
print("任務地圖示意影像:", img.size, img.mode)  # 輸出:任務地圖示意影像: (96, 96) RGB

這張圖刻意簡單到「一眼就看得出答案」,但對模型來說,這正是檢驗它有沒有學到目標偵測與分割該學的東西的最佳測試。如果模型在這張圖上表現很差,那它在真實世界的複雜影像上更不可能好。我們用 numpy 直接畫圖,避免依賴額外套件;這種「自己合成最小測試集」的技巧,在除錯模型時非常實用。

接下來示範一個非常實用的工具:torch.cuda.is_available()。雖然今天的範例都在 CPU 上跑,但你之後會想知道自己有沒有 GPU 可以用。這個一行指令是判斷環境的標準寫法:

import torch

# 檢查目前環境有沒有 GPU
has_cuda = torch.cuda.is_available()
print(f"CUDA 可用:{has_cuda}")
print(f"PyTorch 版本:{torch.__version__}")
if has_cuda:
    print(f"GPU 名稱:{torch.cuda.get_device_name(0)}")
# 輸出:CUDA 可用:False
# 輸出:PyTorch 版本:2.5.0

在你之後做實驗時,這個檢查會幫你決定要不要把模型搬到 GPU(model.to("cuda"))或保持 CPU。更重要的是,當你看到「訓練跑得很慢」的時候,先跑一次這個檢查,確認你有沒有真的在用 GPU——這是新手最常踩的坑之一,明明已經 model.to("cuda"),但忘了把輸入資料也搬到 GPU,於是 PyTorch 會自動把模型搬回 CPU 跑,速度差上十倍以上。

常見錯誤與踩雷

剛開始接觸電腦視覺時,最常見的錯誤不是演算法寫錯,而是對「輸入資料格式」理解不清。例如把 (高度, 寬度, 通道) 的 numpy 陣列直接丟給 PyTorch 模型,沒注意到 PyTorch 期待的是 (通道, 高度, 寬度),這會出現 RuntimeError: Expected 4-dimensional input 或 size mismatch 之類的錯誤。對應的排查方向:先 print 形狀、確認通道在哪個軸、必要時用 tensor.permute(2, 0, 1) 或 np.transpose 調整。

第二個常見的踩雷是「用 ImageNet 的預訓練權重做醫療影像分類,效果很差」。原因是預訓練權重學到的是 ImageNet 的特徵(貓、狗、車),跟你自己的資料分布差很遠。Day 6 會教遷移學習,但這裡先記得:看到 pretrained=True 不等於「自動變強」,預訓練來源跟你的資料越接近,效果越好。

第三個是版本相容問題。這個系列固定 PyTorch 2.5、torchvision 0.20、timm 1.0.x、Ultralytics 8.3.x、albumentations 1.4.x,這些版本彼此經過測試是相容的。如果你自己升級到更新的版本,可能會遇到 API 被移除或預設行為改變(例如 transforms v2 的插值與型別轉換預設值調整),看到 UserWarning 或錯誤訊息。Day 2 會一步步帶你建立正確的環境。

效能與實務提醒

今天的所有範例都用 CPU 跑得動,但實務上深度學習訓練一定要 GPU。免費的 Colab 提供 T4 GPU(約 16GB VRAM),單次 session 上限約 12 小時,但免費版的 GPU 供給不保證,熱門時段可能排不到;需要更穩定的訓練時間再考慮 Colab Pro 或自架 GPU。這個系列的所有章節都會標示執行需求(CPU 可跑 / Colab T4 可跑 / 需本地 GPU),方便你安排學習節奏。

資料量是另一個常被低估的瓶頸。電腦視覺模型對資料量非常敏感,ImageNet 級別的訓練需要千萬張影像,但遷移學習之後,你可能只需要幾百到幾千張自己的影像就能得到不錯的結果。Day 9 的 Oxford Flower-102 花卉分類實戰會示範這個過程,請記得:與其追求「大模型」,不如先追求「資料乾淨」。標註錯誤的資料對模型的傷害,遠大於模型不夠深。

最後提醒一件事:這個系列每篇的執行範例都是「可獨立跑」的最小版本,但真實專案需要的不只是模型,還包括資料版本管理、實驗追蹤、模型註冊、部署監控等工程議題。這些在 Day 41 到 Day 44 才會深入,今天只要把五個任務的輪廓建立起來就好。

小結

今天是系列的第一篇,我們把四十五篇的學習地圖畫出來了:你會從分類開始,走到偵測、分割、姿態、生成,最後在 Day 41–45 用工業瑕疵檢測把五個任務串成一個完整專案。整個系列固定在 PyTorch 2.5、torchvision 0.20、timm 1.0.x、Ultralytics 8.3.x 這幾個 2024 年底的主流版本,並以公開的 MVTec AD 資料集(CC BY-NC-SA 4.0)作為示範。今天的完整實作雖然簡略,但已經展示分類、偵測、分割、生成的標準呼叫介面,後續章節會逐一展開。

結語

今天我們站在系列的最起點,畫完地圖卻還沒出發。明天,我們會實際動手建立開發環境:從 Colab 的設定開始,到本地端 Python 與 PyTorch 的安裝,再到 torchvision、timm、Ultralytics 這幾個核心套件的版本對齊。環境沒弄好,後面的範例都跑不動,所以 Day 2 是整個系列最重要的「地基」篇章之一。

延伸資源

  • PyTorch 官方文件(2024):https://pytorch.org/docs/stable/
  • torchvision 模型動物園(2024):https://pytorch.org/vision/stable/models.html
  • MVTec AD 資料集(CC BY-NC-SA 4.0):https://www.mvtec.com/company/research/datasets/mvtec-ad
  • Ultralytics YOLO11 官方說明(2024):https://docs.ultralytics.com/
  • Hugging Face Diffusers 官方說明(0.31,2024):https://huggingface.co/docs/diffusers/v0.31.0/

留言

這個網誌中的熱門文章

Day 2 變數與資料型別

Day 2 變數與資料型別 引言 寫程式的過程中,變數與資料型別是處理資料的基礎。變數是存放資料的容器,資料型別則決定這筆資料有哪些特性、可以進行哪些操作。學會定義變數、認識各種資料型別,是學好 Python 的關鍵一步。 這篇文章會帶你了解 Python 中變數的觀念、如何定義變數,以及常見的資料型別,包括整數、浮點數、字串、布林值,還有串列、元組、字典與集合等容器型別。我們也會介紹變數的命名規則與撰寫風格建議,以及如何用 type() 檢查資料型別。 什麼是變數?如何在 Python 中定義變數 變數是在程式執行時用來存放資料的名稱。透過定義變數,我們可以給一筆資料一個名字,並在程式的其他地方用這個名字取用該筆資料。在 Python 中,變數不需要事先宣告型別,因為 Python 是動態型別語言,變數的型別由指定給它的值決定。 定義變數的基本語法 在 Python 中定義變數非常簡單,只要用賦值符號 = 把值指定給變數即可。例如: x = 5 # 定義變數 x,並把整數 5 賦值給它 name = "Alice" # 定義變數 name,並把字串 "Alice" 賦值給它 在這裡,x 是一個變數,被賦予整數 5;name 是另一個變數,被賦予字串 "Alice"。 變數的更新與覆寫 變數的值可以修改,也就是說,我們可以在程式的不同地方給同一個變數新的值。例如: x = 10 # x 最初被賦予 10 x = 15 # x 的值現在被更新為 15 這樣就能依照需求,在程式執行過程中靈活調整變數的值。 Python 的動態型別系統 Python 和某些靜態型別語言不同,定義變數時不需要宣告型別。賦值時,Python 會根據值自動判斷變數的型別。例如: x = 5 # x 是整數 x = 3.14 # x 變成浮點數 x = "Hi" # x 變成字串 同一個變數在程式執行過程中可以存放不同型別的值,這是 Python 的彈性之一。 常見資料型別 在 Python 中,資料型別決定我們可以對變數進行哪些操作...

Day 1 Python 簡介與環境設定

Day 1 Python 簡介與環境設定 引言 在現在的科技環境裡,程式設計已經是一項重要技能。無論你是對資料科學有興趣、想成為開發者,或是想踏入人工智慧(AI)領域,學會寫程式都能明顯提升你的競爭力。在眾多程式語言中,Python 因為語法簡單、功能強大、應用範圍廣泛,成為許多人進入程式世界的第一選擇。這篇文章會帶你認識 Python 的背景與優勢,並一步步教你在不同系統上安裝與設定 Python 開發環境,最後寫出第一支 Python 程式。 為什麼選擇 Python? Python 是一種高階程式語言,由 Guido van Rossum 在 1991 年發布。Python 的設計哲學強調程式碼的可讀性,並用縮排來定義程式區塊,這點和許多使用大括號的語言不同。簡潔的語法讓它成為初學者的理想選擇;就算是經驗豐富的開發者,也能用它完成複雜的專案。 Python 的優勢如下: 簡單易學 :Python 的語法清楚、結構簡潔,初學者很快就能上手。和其他語言相比,學習曲線相對平緩,不需要先弄懂一堆複雜觀念,就能開始寫程式。 應用範圍廣泛 :從資料科學、網頁開發、人工智慧、機器學習、自動化測試到網路爬蟲,Python 都有大量開源函式庫與工具支援,而且在這些領域都扮演關鍵角色。 豐富的函式庫與框架 :Python 的函式庫生態系非常龐大。做資料分析有 NumPy、Pandas;開發網站有 Django、Flask;做深度學習有 TensorFlow、PyTorch。各種需求幾乎都能找到對應的套件,讓開發更有效率。 跨平台支援 :Python 支援 Windows、macOS、Linux 等作業系統,程式通常不需要太多修改就能跨平台執行,讓開發與部署更有彈性。 活躍的社群 :Python 擁有龐大的開發者社群。學習或開發上遇到問題,幾乎都能在社群與論壇(例如 Stack Overflow)找到答案,對初學者來說是很強的後盾,也能減少卡關時的挫折感。 Python 的應用領域 Python 的流行與強大功能,讓許多領域都開始大量使用它。以下是幾個常見的應用方向: 資料科學 :隨著大數據與人工智慧興起,資料科學大量使用 Python。NumPy、Pandas 與 Matplotlib 等工具能處理和分析龐...

Python 從入門到 PyTorch 深度學習:開啟 AI 世界的大門

Python 從入門到 PyTorch 深度學習:開啟 AI 世界的大門 隨著人工智慧(AI)與深度學習(Deep Learning)快速發展,越來越多人對這些技術產生興趣。不論你是想踏入 AI 領域的初學者,還是已經有程式基礎的開發者,學好 Python 與深度學習框架(例如 PyTorch),都能為你打開更多可能。 為什麼選擇 Python? Python 已經是資料科學與人工智慧領域的首選語言。它的語法簡潔、容易上手,而且擁有龐大的生態系與大量開源函式庫。無論是資料處理、資料視覺化,還是建立機器學習與深度學習模型,Python 都能勝任。對想進入 AI 或資料科學領域的人來說,它幾乎是必備工具。 PyTorch 是什麼? PyTorch 是由 Meta(原 Facebook)AI 研究團隊開發的開源深度學習框架,以易用、靈活和動態計算圖著稱,是許多 AI 研究人員與開發者的首選。相較於其他框架,PyTorch 的寫法更貼近原生 Python,對初學者相對友善。無論是簡單的實驗,還是複雜的深度學習模型,PyTorch 都能提供強大的支援。 這個系列能帶給你什麼? 這個系列會從 Python 的基礎開始,帶你一步一步學習,最後能自己用 PyTorch 建立深度學習模型。即使你完全沒有寫過程式,也能跟著文章的節奏累積技能,理解 AI 與深度學習的核心觀念。 本系列涵蓋的主題 Python 基礎:從變數、條件判斷到函式與模組。 資料處理工具:用 NumPy 與 Pandas 有效率地操作資料。 資料視覺化:用 Matplotlib 與 Seaborn 把資料畫成圖表。 深度學習的數學基礎:線性代數、微積分與機率。 PyTorch 入門:理解張量、模型建構與 GPU 加速。 基礎深度學習模型:CNN 與 RNN 的實作應用。 深度學習專案實戰:從資料前處理到模型部署的端到端流程。 誰適合這個系列? 程式初學者 :如果你對 AI 充滿好奇,卻還沒寫過程式,系列的第一部分會帶你快速上手 Python,並幫助你理解深度學習的基本觀念。 資料科學愛好者 :如果你已經熟悉一些資料處理方法,進階部分會教你如何用 PyTorch 建構深度學習模型。 開發者與研究人員 :想更深入了...