Skip to main content

AI-POWERED DOCS

What do you want to know?

Huấn Luyện Segmenter

Hướng dẫn này chỉ cho bạn cách thiết lập và cấu hình tính năng segmentation của OV20i để tự động phát hiện, đo lường và phân tích các đặc điểm hoặc lỗi cụ thể trên các bộ phận của bạn. Sử dụng segmentation khi bạn cần xác định các hình dạng bất thường, đo diện tích hoặc phát hiện các mẫu cụ thể mà không thể xử lý bằng classification đơn giản.

Video Hướng Dẫn

Xem chủ đề này trong thực tế: Cách tạo một recipe segmentation trong vài phút

note

OV10i không có khả năng segmentation.

Khi Nào Sử Dụng Segmentation: Lỗi bề mặt, chất lỏng tràn, hình dạng bất thường, đo diện tích, phát hiện mẫu, hoặc bất kỳ đặc điểm nào yêu cầu độ chính xác ở mức pixel.

Trước Khi Bắt Đầu

Những Gì Bạn Cần

  • Hệ thống camera OV20i đã được thiết lập và kết nối
  • Các bộ phận thử nghiệm với các đặc điểm bạn muốn segment (ví dụ: tờ giấy có vết bút chì)
  • Điều kiện ánh sáng tốt cho ứng dụng cụ thể của bạn
  • 15-20 ảnh mẫu để huấn luyện

Bước 1: Tạo Recipe Segmentation

1.1 Bắt Đầu Recipe Mới

  1. Điều hướng đến trang All Recipes
  2. Nhấp + New Recipe (góc trên bên phải)

Nút New Recipe

  1. Nhập Tên Recipe: Sử dụng tên mô tả như "Pencil_Mark_Detection" hoặc "Surface_Defect_Segmentation"
  2. Chọn Loại Recipe: Chọn "Segmentation" từ menu thả xuống
  3. Nhấp OK để tạo

1.2 Kích Hoạt Recipe

  1. Tìm recipe của bạn trong danh sách (hiển thị là "Inactive")
  2. Nhấp Activate
  3. Nhấp Activate and go to editor để xác nhận và khởi chạy trình chỉnh sửa recipe

Nút kích hoạt recipe

Kết quả: Recipe hiện ở trạng thái "Active" với Recipe Editor được hiển thị.

Bước 2: Cấu Hình Cài Đặt Camera

2.1 Mở Cấu Hình Imaging

  1. Nhấp Configure Imaging (phía dưới bên trái)

Configure Image

2.2 Tối Ưu Focus Cho Segmentation

Focus rất quan trọng để phát hiện chính xác các cạnh:

  1. Đặt bộ phận thử nghiệm trong khung nhìn camera
  2. Điều chỉnh Focus cho đến khi các cạnh sắc nét và rõ ràng
  3. Kiểm tra với các bộ phận khác nhau để đảm bảo focus nhất quán trên toàn bộ phạm vi
tip
  • Focus vào bề mặt nơi các lỗi/đặc điểm sẽ xuất hiện
  • Đảm bảo toàn bộ khu vực quan tâm đều được focus sắc nét
  • Hơi quá sắc nét còn tốt hơn focus mờ đối với segmentation

2.3 Đặt Exposure Tối Ưu

Exposure phù hợp đảm bảo phát hiện đặc điểm nhất quán:

  1. Điều chỉnh Exposure để cân bằng ánh sáng
  2. Tránh các khu vực bị overexposed (vùng trắng hoàn toàn)
  3. Đảm bảo các đặc điểm hiển thị rõ với độ tương phản tốt

Hướng Dẫn Exposure Cho Segmentation:

  • Các đặc điểm phải có độ tương phản rõ ràng với nền
  • Tránh các bóng đổ có thể bị nhầm với lỗi
  • Kiểm tra với nhiều trạng thái bộ phận khác nhau (sạch, bẩn, mòn)

2.4 Cấu Hình Mẫu Chiếu Sáng LED

Chọn ánh sáng dựa trên đối tượng bạn đang segment:

Loại Đặc ĐiểmÁnh Sáng Khuyến NghịLý Do
Lỗi bề mặtBright fieldChiếu sáng đồng đều cho thấy sự bất thường của bề mặt
Vết xước/nứtSide lightingTạo bóng làm nổi bật các lỗi dạng đường
Đặc điểm nổiDark fieldLàm các khu vực nổi nổi bật so với nền
Chất lỏng trànSide lightingHiển thị sự khác biệt về kết cấu bề mặt

2.5 Điều Chỉnh Gamma Để Tăng Cường Đặc Điểm

  1. Tăng Gamma để tăng độ tương phản giữa các đặc điểm và nền
  2. Thử nghiệm các giá trị khác nhau trong khi xem các đặc điểm mục tiêu
  3. Tìm cài đặt làm cho các đặc điểm dễ phân biệt nhất

2.6 Lưu Cấu Hình

  1. Xem lại cài đặt trong bản xem trước trực tiếp
  2. Nhấp Save Imaging Settings

Save Settings

Điểm kiểm tra: Các đặc điểm phải được hiển thị rõ ràng với độ tương phản tốt.

Bước 3: Thiết Lập Template và Alignment

3.1 Điều Hướng Đến Phần Template

Nhấp "Template Image and Alignment" trong menu breadcrumb

3.2 Cấu Hình Alignment (Tùy Chọn)

Template and alignment

Đối với ví dụ này, chúng ta sẽ bỏ qua alignment:

  1. Chọn Skip Aligner nếu các bộ phận được định vị nhất quán
  2. Nhấp Save

Template image

Khi Nào Sử Dụng Aligner: Kích hoạt khi các bộ phận xuất hiện ở các vị trí hoặc hướng khác nhau có thể ảnh hưởng đến độ chính xác của segmentation.

Bước 4: Xác Định Vùng Kiểm Tra

4.1 Điều Hướng Đến Inspection Setup

Nhấp "Inspection Setup" trong menu breadcrumb

4.2 Thiết Lập Region of Interest (ROI)

ROI xác định nơi segmentation sẽ diễn ra:

  1. Đặt một bộ phận thử nghiệm trong tầm nhìn của camera
  2. Kéo các góc ROI để đóng khung vùng kiểm tra
  3. Điều chỉnh kích thước ROI phù hợp:
    • Bao gồm tất cả các khu vực nơi đặc điểm có thể xuất hiện
    • Loại trừ các vùng nền không cần thiết
    • Để lại khoảng đệm nhỏ xung quanh vị trí đặc điểm dự kiến

ROI Setup

4.3 Thực Hành Tốt Nhất Về ROI Cho Segmentation

NênKhông Nên
Bao phủ toàn bộ bề mặt kiểm traBao gồm các đối tượng nền không liên quan
Để khoảng đệm xung quanh các cạnhĐặt ROI quá nhỏ so với sự biến thiên của đặc điểm
Cân nhắc sự biến thiên về vị trí bộ phậnChồng lấn với đồ gá hoặc dụng cụ
Thử nghiệm với các đặc điểm lớn nhất dự kiếnBao gồm các khu vực có dấu cố định

4.4 Lưu Cài Đặt ROI

  1. Xác minh ROI bao phủ tất cả các khu vực mục tiêu
  2. Nhấp Save

Bước 5: Gắn Nhãn Dữ Liệu Training

5.1 Điều Hướng Đến Label And Train

Nhấp "Label And Train" trong menu breadcrumb

5.2 Cấu Hình Inspection Class

  1. Nhấp Edit dưới Inspection Types
  2. Đổi tên class để phù hợp với đặc điểm của bạn (ví dụ: "Pencil Mark", "Surface Defect", "Spill Area")
  3. Chọn màu class để nhận diện trực quan
  4. Lưu thay đổi

5.3 Chụp và Gắn Nhãn Hình Ảnh Training

Bạn cần tối thiểu 10 hình ảnh đã gắn nhãn, nhưng khuyến nghị 15-20:

Quy Trình Chụp Ảnh

Label and Train

  1. Đặt bộ phận thử nghiệm đầu tiên vào khu vực kiểm tra
  2. Chụp ảnh bằng giao diện camera
  3. Sử dụng công cụ Brush để tô lên các đặc điểm mục tiêu
  4. Tô chính xác:
    • Bao phủ toàn bộ khu vực đặc điểm
    • Giữ trong ranh giới đặc điểm
    • Không tô các khu vực nền
    • Sử dụng phương pháp gắn nhãn nhất quán
  5. Nhấp Save Annotations
  6. Lặp lại với bộ phận tiếp theo

Các Phương Pháp Gán Nhãn Tốt Nhất

Gán Nhãn TốtGán Nhãn Kém
Ranh giới đặc trưng chính xácVẽ cạnh cẩu thả
Định nghĩa đặc trưng nhất quánTiêu chí không nhất quán
Bao phủ đầy đủ đặc trưngThiếu vùng đặc trưng
Nền sạch (không vẽ)Vô tình vẽ lên nền

5.4 Sự Đa Dạng Của Dữ Liệu Huấn Luyện

Đảm bảo tập huấn luyện của bạn bao gồm:

  • Các kích thước đặc trưng khác nhau
  • Các cường độ đặc trưng khác nhau
  • Nhiều vị trí khác nhau trong ROI
  • Các điều kiện ánh sáng khác nhau (nếu áp dụng)
  • Các trường hợp biên và ví dụ ranh giới

5.5 Kiểm Tra Chất Lượng Dữ Liệu Huấn Luyện

  1. Xem lại tất cả các hình ảnh đã gán nhãn
  2. Xác minh phương pháp gán nhãn nhất quán
  3. Loại bỏ các ví dụ được gán nhãn không chính xác
  4. Thêm nhiều ví dụ hơn nếu cần

Bước 6: Huấn Luyện Segmentation Model

6.1 Bắt Đầu Quá Trình Huấn Luyện

  1. Nhấp Return to Live khi hoàn tất việc gán nhãn
  2. Nhấp Train Segmentation Model

Start Training

6.2 Cấu Hình Tham Số Huấn Luyện

  1. Đặt Số Lần Lặp (Iterations):
    • Huấn luyện nhanh: 50-100 lần lặp (5-10 phút)
    • Chất lượng sản xuất: 200-500 lần lặp (15-30 phút)
    • Độ chính xác cao: 500+ lần lặp (30+ phút)
  2. Nhấp Start Training

6.3 Theo Dõi Tiến Trình Huấn Luyện

Tiến trình huấn luyện hiển thị:

  • Số lần lặp hiện tại
  • Phần trăm độ chính xác huấn luyện
  • Thời gian hoàn thành ước tính

Training

Điều Khiển Huấn Luyện:

  • Abort Training: Dừng nếu có vấn đề phát sinh
  • Finish Training Early: Dừng khi độ chính xác đã đủ

Training 2

tip
  • Độ chính xác 85% thường tốt cho sản xuất
  • Huấn luyện tự động dừng khi đạt độ chính xác mục tiêu
  • Nhiều dữ liệu huấn luyện thường tốt hơn nhiều lần lặp

Bước 7: Kiểm Tra Hiệu Năng Segmentation

7.1 Truy Cập Live Preview

  1. Nhấp Live Preview sau khi hoàn thành huấn luyện
  2. Kiểm tra với nhiều loại linh kiện khác nhau:
    • Linh kiện đạt chuẩn đã biết (không nên có/có rất ít segmentation)
    • Linh kiện lỗi đã biết (nên làm nổi bật các lỗi)
    • Các trường hợp biên và ví dụ ranh giới

Live preview

7.2 Đánh Giá Kết Quả

Kiểm tra chất lượng segmentation:

Chỉ SốHiệu Năng TốtCần Cải Thiện
Độ Chính Xác (Accuracy)Tìm thấy đặc trưng thực tế một cách nhất quánBỏ sót các đặc trưng rõ ràng
Độ Chuẩn Xác (Precision)Ít false positiveNhiều vùng nền bị đánh dấu
Chất Lượng CạnhRanh giới sạch, chính xácCạnh thô hoặc không chính xác
Tính Nhất QuánKết quả tương tự khi lặp lại kiểm traKết quả biến động cao

7.3 Xử Lý Sự Cố Khi Kết Quả Kém

Vấn ĐềNguyên Nhân Có ThểGiải Pháp
Bỏ sót đặc trưngDữ liệu huấn luyện không đủThêm nhiều ví dụ đã gán nhãn hơn
False positiveÁnh sáng/độ tương phản kémCải thiện cài đặt chụp ảnh
Cạnh thôChất lượng hình ảnh kémCải thiện tiêu cự/ánh sáng
Kết quả không nhất quánSự đa dạng huấn luyện không đủThêm nhiều ví dụ đa dạng hơn

Bước 8: Cấu Hình Logic Pass/Fail

8.1 Truy Cập IO Block

  1. Đảm bảo mô hình AI hiển thị màu xanh lá (trạng thái đã huấn luyện)
  2. Điều hướng đến IO Block qua menu breadcrumb

8.2 Xóa Logic Mặc Định

  1. Xóa node Classification Block Logic
  2. Chuẩn bị xây dựng logic segmentation tùy chỉnh

8.3 Xây Dựng Luồng Segmentation

Tạo luồng Node-RED với các thành phần sau:

  1. Kéo các node từ bảng bên trái:
    • Function node (cho logic)
    • Debug node (cho kiểm thử)
    • Node Pass/Fail cuối cùng
  2. Kết nối các node bằng dây nối

NodeRed

8.4 Cấu Hình Logic Dựa Trên Nhu Cầu

Tùy Chọn A: Pass Nếu Không Phát Hiện Khuyết Tật

Trường Hợp Sử Dụng: Kiểm tra chất lượng mà bất kỳ đặc điểm nào được phát hiện đều là fail

Mã Function Node:

const allBlobs = msg.payload.segmentation.blobs;
const results = allBlobs.length <1; // Pass if no features found
msg.payload = results;
return msg;

Tùy Chọn B: Pass Nếu Chỉ Có Khuyết Tật Nhỏ

Trường Hợp Sử Dụng: Chấp nhận các khuyết tật nhỏ dưới ngưỡng kích thước

Mã Function Node:

const threshold = 500; // Adjust pixel count threshold
const allBlobs = msg.payload.segmentation.blobs;
const allUnderThreshold = allBlobs.every(blob => blob.pixel_count < threshold);
msg.payload = allUnderThreshold;
return msg;

Tùy Chọn C: Pass Nếu Tổng Diện Tích Khuyết Tật Nhỏ

Trường Hợp Sử Dụng: Chấp nhận các chi tiết có tổng diện tích khuyết tật giới hạn

Mã Function Node:

const threshold = 5000; // Adjust total pixel threshold
const allBlobs = msg.payload.segmentation.blobs;
const totalArea = allBlobs.reduce((sum, blob) => sum + blob.pixel_count, 0);
msg.payload = totalArea < threshold;
return msg;

8.5 Cấu Hình Function Node

  1. Nhấp đúp vào Function node
  2. Sao chép mã phù hợp từ các ví dụ trên
  3. Dán vào tab "On Message"
  4. Điều chỉnh các giá trị ngưỡng cho ứng dụng của bạn
  5. Nhấp Done

8.6 Triển Khai và Kiểm Thử Logic

  1. Nhấp Deploy để kích hoạt logic
  2. Điều hướng đến HMI để kiểm thử
  3. Kiểm thử với các chi tiết tốt và xấu đã biết
  4. Xác minh kết quả pass/fail khớp với kỳ vọng

Bước 9: Xác Thực Sản Xuất

9.1 Kiểm Thử Toàn Diện

Kiểm thử hệ thống segmentation với:

Trường Hợp Kiểm ThửKết Quả Mong ĐợiHành Động Nếu Thất Bại
Chi tiết sạchPass (không có segmentation)Điều chỉnh ngưỡng hoặc huấn luyện lại
Khuyết tật nhỏPass/Fail theo tiêu chí của bạnTinh chỉnh các tham số logic
Khuyết tật lớnFail (segmentation rõ ràng)Kiểm tra độ chính xác của mô hình
Trường hợp biênHành vi nhất quánThêm dữ liệu huấn luyện

9.2 Xác Thực Hiệu Suất

Theo dõi các chỉ số sau:

  • Thời gian xử lý mỗi lần kiểm tra
  • Tính nhất quán qua nhiều lần kiểm thử
  • Độ chính xác với ánh sáng trong sản xuất
  • Độ tin cậy khi vận hành kéo dài

9.3 Điều Chỉnh Cuối Cùng

Nếu hiệu suất chưa đạt yêu cầu:

  1. Thêm nhiều dữ liệu huấn luyện cho các trường hợp biên
  2. Điều chỉnh các giá trị ngưỡng trong logic
  3. Cải thiện điều kiện chụp ảnh
  4. Huấn luyện lại mô hình với nhiều vòng lặp bổ sung

Thành Công! Hệ Thống Segmentation Của Bạn Đã Sẵn Sàng

Bây giờ bạn đã có một hệ thống segmentation hoạt động có thể:

  • Tự động phát hiện các đặc điểm hoặc khuyết tật cụ thể
  • Đo lường diện tích với độ chính xác cấp pixel
  • Áp dụng logic pass/fail tùy chỉnh dựa trên yêu cầu của bạn
  • Tích hợp với hệ thống sản xuất qua các điều khiển I/O

Tùy Chọn Cấu Hình Nâng Cao

Logic Ngưỡng Tùy Chỉnh

Đối với các tiêu chí chấp nhận phức tạp, kết hợp nhiều điều kiện:

const smallThreshold = 200;
const largeThreshold = 1000;
const maxTotalArea = 3000;

const allBlobs = msg.payload.segmentation.blobs;
const smallBlobs = allBlobs.filter(blob => blob.pixel_count < smallThreshold);
const largeBlobs = allBlobs.filter(blob => blob.pixel_count > largeThreshold);
const totalArea = allBlobs.reduce((sum, blob) => sum + blob.pixel_c