การประเมินโมเดลจดจำวัตถุ

Deep Learning สำหรับภาพด้วย PyTorch

Michal Oleszak

Machine Learning Engineer

การจำแนกประเภทและการระบุตำแหน่ง

object localization

  • Output 1: การจำแนกประเภท (เช่น แมว)
Deep Learning สำหรับภาพด้วย PyTorch

การจำแนกประเภทและการระบุตำแหน่ง

object localization

  • Output 1: การจำแนกประเภท (เช่น แมว)
  • Output 2: การถดถอย bounding box [x1, y1, x2, y2]
Deep Learning สำหรับภาพด้วย PyTorch

Intersection over Union (IoU)

  • วัตถุที่สนใจ: วัตถุในภาพที่ต้องการตรวจจับ (เช่น สุนัข)
  • Ground truth box: bounding box ที่แม่นยำรอบวัตถุที่สนใจ
  • Intersection over Union: ค่าเมตริกวัดความทับซ้อนระหว่าง box สองกล่อง

jaccard

  • IoU = พื้นที่ Intersection / พื้นที่ Union
    • IoU = 0 ไม่ทับซ้อนเลย, IoU = 1 ทับซ้อนสมบูรณ์
    • IoU >0.5 ถือว่าเป็นการทำนายที่ดี
Deep Learning สำหรับภาพด้วย PyTorch

IoU ใน PyTorch

bbox1 = [50, 50, 150, 150]
bbox2 = [100, 100, 200, 200]


bbox1 = torch.tensor(bbox1).unsqueeze(0) bbox2 = torch.tensor(bbox2).unsqueeze(0)
from torchvision.ops import box_iou

iou = box_iou(bbox1, bbox2)
print(iou)
tensor([[0.1429]])
  • box สองชุด (x1, y1, x2, y2)

set of 2 boxes

  • แปลง vector เป็น tensor 2 มิติ
  • คำนวณ IoU
Deep Learning สำหรับภาพด้วย PyTorch

การทำนาย bounding box

model.eval()
with torch.no_grad():

output = model(input_image)
print(output)
[{'boxes': tensor([[ 42.8553, 271.9481, 180.6003, 346.7082],
                  [191.6016,  80.4759, 247.8009, 387.5475], ....),
'scores': tensor([1.0000, 1.0000, 0.9998, ... ]),
'labels': tensor([18,  1, 20, 18, 18, 18 ...])
}]
boxes = output[0]["boxes"]

scores = output[0]["scores"]
Deep Learning สำหรับภาพด้วย PyTorch

Non-max suppression (NMS)

multiple boxes

Deep Learning สำหรับภาพด้วย PyTorch

Non-max suppression (NMS)

multiple boxes

Non-max suppression: เทคนิคทั่วไปสำหรับเลือก bounding box ที่เกี่ยวข้องที่สุด

  • Non-max: ตัด box ที่มีค่าความเชื่อมั่นต่ำในการตรวจพบวัตถุออก

  • Suppression: ตัด box ที่มีค่า IoU ต่ำออก

Deep Learning สำหรับภาพด้วย PyTorch

Non-max suppression ใน PyTorch

from torchvision.ops import nms


box_indices = nms( boxes=boxes, scores=scores, iou_threshold=0.5, ) print(box_indices)
tensor([ 0,   1,   2,   8])
filtered_boxes = boxes[box_indices]
  • Boxes: tensor ที่เก็บพิกัด bounding box รูปร่าง [N, 4]

  • Scores: tensor ที่เก็บค่าความเชื่อมั่นของแต่ละ box รูปร่าง [N]

  • iou_threshold: ค่า threshold ระหว่าง 0.0 ถึง 1.0

  • Output: ดัชนีของ bounding box ที่ผ่านการกรอง

Deep Learning สำหรับภาพด้วย PyTorch

มาฝึกกันเถอะ!

Deep Learning สำหรับภาพด้วย PyTorch

Preparing Video For Download...