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 OV80i để tự động phát hiện, đo lường và phân tích các đặc điểm hoặc khuyết tật cụ thể trên các bộ phận của bạn. Sử dụng segmentation khi bạn cần nhận diện các hình dạng không đều, đ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.

Hướng Dẫn Video

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

Khi Nào Sử Dụng Segmentation: Khuyết tật bề mặt, tràn chất lỏng, hình dạng không đều, đ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 ở cấp độ pixel.

Trước Khi Bắt Đầu​

Những Gì Bạn Sẽ Cần​

  • Hệ thống camera OV80i đã đượ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ấm 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 hình ảnh mẫu để huấn luyện

Bước 1: Tạo Một Recipe Segmentation​

1.1 Bắt Đầu Recipe Mới​

  1. Điều hướng đến trang All Recipes
  2. Nhấp vào + 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 đang "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 Hóa Focus Cho Segmentation​

Focus là yếu tố quan trọng cho việc phát hiện cạnh chính xác:

  1. Đặt bộ phận thử nghiệm trong khung nhìn camera
  2. Xoay vòng focus của ống kính cho đến khi các cạnh sắc nét và rõ ràng
  3. Thử nghiệm 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 của bạn
tip
  • Focus vào bề mặt nơi khuyết tật/đặc điểm sẽ xuất hiện
  • Đảm bảo toàn bộ khu vực quan tâm đều ở trong tiêu cự sắc nét
  • Hơi quá sắc nét vẫn tốt hơn là mờ nhòe đối với segmentation

2.3 Thiết Lập 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ó ánh sáng cân bằng
  2. Tránh các vùng bị overexposed (vùng trắng thuần túy)
  3. Đảm bảo các đặc điểm có thể nhìn thấy 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 bóng đổ có thể bị nhầm lẫn với khuyết tật
  • Thử nghiệm với các điều kiện bộ phận khác nhau (sạch, bẩn, mòn)

2.4 Cấu Hình Kiể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 Được Khuyến NghịLý Do
Khuyết tật bề mặtBright fieldChiếu sáng đồng đều làm hiện rõ những bất thường trên bề mặt
Vết trầy/vết nứtSide lightingTạo bóng đổ làm nổi bật các khuyết tật dạng đường thẳng
Đặc điểm nổiDark fieldLàm cho các khu vực nổi bật lên khỏi nền
Tràn chất lỏngSide lightingCho thấy 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 Trưng​

  1. Tăng Gamma để tăng độ tương phản giữa các đặc trưng và nền
  2. Thử nghiệm các giá trị khác nhau trong khi xem các đặc trưng mục tiêu
  3. Tìm cài đặt giúp các đặc trưng 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 vào Save Imaging Settings

Save Settings

✅ Điểm Kiểm Tra: Các đặc trưng phải 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 vào "Template Image and Alignment" trong menu breadcrumb

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

Template and alignment

Trong ví dụ này, chúng ta sẽ bỏ qua alignment:

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

Template image

Khi Nào Sử Dụng Aligner: Kích hoạt khi các bộ phận đế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 vào "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 khung nhìn camera
  2. Kéo các góc ROI để bao 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ác đặc trưng có thể xuất hiện
    • Loại trừ các vùng nền không cần thiết
    • Chừa một khoảng đệm nhỏ xung quanh các vị trí đặc trưng 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
Chừa khoảng đệm xung quanh các cạnhĐặt ROI quá nhỏ so với sự thay đổi của đặc trưng
Xem xét sự thay đổi vị trí của bộ phậnChồng lấn với đồ gá hoặc dụng cụ
Kiểm tra với các đặc trưng lớn nhất dự kiếnBao gồm các khu vực có dấu vết 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 vào Save

Bước 5: Gán Nhãn Dữ Liệu Huấn Luyện​

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

Nhấp vào "Label And Train" trong menu breadcrumb

5.2 Cấu Hình Inspection Class​

  1. Nhấp vào Edit dưới Inspection Types
  2. Đổi tên class để khớp với đặc trưng 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 các thay đổi

5.3 Chụp và Gán Nhãn Hình Ảnh Huấn Luyện​

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

Quy Trình Chụp Hình Ảnh​

  1. Đặt bộ phận thử nghiệm đầu tiên trong vùng kiểm tra
  2. Chụp hình bằng giao diện camera
  3. Sử dụng công cụ Brush để tô lên các đặc trưng mục tiêu
  4. Tô chính xác:
    • Bao phủ toàn bộ khu vực đặc trưng
    • Ở trong ranh giới của đặc trưng
    • 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 vào Save Annotations
  6. Lặp lại với bộ phận tiếp theo

Label and Train

Thực Hành Tốt Nhất Khi Gán Nhãn​

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 có)
  • 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ả 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ỏ bất kỳ ví dụ nào bị gán nhãn sai
  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 gán nhãn
  2. Nhấp Train Segmentation Model

Start Training

6.2 Cấu Hình Các Thông Số Huấn Luyện​

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

6.3 Theo Dõi Tiến Độ Huấn Luyện​

Tiến độ huấn luyện hiển thị:

  • Số iteration 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 lại nếu có vấn đề phát sinh
  • Finish Training Early: Dừng lại khi độ chính xác đã đủ

Training 2

tip
  • Độ chính xác 85% thường phù hợp cho sản xuất
  • Quá trình 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 iterations

Bước 7: Kiểm Tra Hiệu Suất Segmentation​

7.1 Truy Cập Live Preview​

  1. Nhấp Live Preview sau khi huấn luyện hoàn tất
  2. Kiểm tra với nhiều loại bộ phận khác nhau:
    • Bộ phận tốt đã biết (không nên/tối thiểu segmentation)
    • Bộ phận lỗi đã biết (nên làm nổi bật 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 Suất TốtCần Cải Thiện
Độ Chính XácTìm thấy đặc trưng thực nhất quánBỏ sót các đặc trưng rõ ràng
Độ Chuẩn XácÍt false positivesNhiều vùng nền bị làm nổi bật
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 kiểm tra lặp lạiKết quả biến động cao

7.3 Khắc Phục Kết Quả Kém​

Vấn ĐềNguyên Nhân Có ThểGiải Pháp
Thiếu đặc trưngDữ liệu huấn luyện không đủThêm nhiều ví dụ được gán nhãn hơn
False positivesÁnh sáng/độ tương phản kémCải thiện cài đặt hình ảnh
Cạnh thôChất lượng hình ảnh kémCải thiện lấy nét/ánh sáng
Kết quả không nhất quánĐ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 model 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 (để kiểm thử)
    • Final Pass/Fail node
  2. Kết nối các node bằng dây nối

NodeRed

8.4 Cấu Hình Logic Theo Nhu Cầu Của Bạn​

Tùy Chọn A: Pass Nếu Không Phát Hiện Lỗi​

Trường Hợp Sử Dụng: Kiểm tra chất lượng khi 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ó Lỗi Nhỏ​

Trường Hợp Sử Dụng: Chấp nhận các lỗi 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 Lỗi Nhỏ​

Trường Hợp Sử Dụng: Chấp nhận các bộ phận có tổng diện tích lỗi hạn chế

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 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 bộ phận 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 Nhận 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
Bộ phận sạchPass (không có segmentation)Điều chỉnh ngưỡng hoặc huấn luyện lại
Lỗi nhỏPass/Fail theo tiêu chí của bạnTinh chỉnh các tham số logic
Lỗi lớnFail (segmentation rõ ràng)Kiểm tra độ chính xác của model
Trường hợp biênHành vi nhất quánThêm dữ liệu huấn luyện

9.2 Xác Nhận 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 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 dữ liệu huấn luyện cho các trường hợp biên
  2. Điều chỉnh 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 model với các lần lặp bổ sung

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

Bạn hiệ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 lỗi cụ thể
  • Đo 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