Resize obj trong bước tiền xử lý trước khi đưa dữ liệu vào huấn luyện?

Hello
Ở bước feature engineering. Người ta có resize bức ảnh về 1 cỡ cố định.
Cỡ này có thể là khảo sát thông qua tập dữ liệu gốc, lấy trung bình hoặc tự chọn bằng cách quan sát 1 vài ảnh
Ví dụ như các đối tượng chữ số, chữ cái, khuôn mặt có tỉ lệ chiều cao, rộng ổn định. Nên resize về 1 cỡ thì không vấn đề gì

Tuy nhiên với các đối tượng sau khi crop obj mà tỉ lệ các hình chiều cao và rộng không đồng đều nhau thì resize thế nào nhỉ :grin:
Ví dụ

Thank you

Help :grin:
Character

Mấy cái này em nên tự làm, vì bản chất của nghiên cứu là thử và sai! Vì từng bước đều gắn liền với 1 dự án cụ thể, nên nếu em đưa lên hỏi chung chung như thế này thì cũng ko có ai trả lời được, vì họ ko biết dc toàn bộ dự án em như nào, yêu cầu ra sao!

3 Likes

Có nhiều cách, mức độ phổ biến giảm dần

  • Thêm border padding, nếu em học CNN chắc biết cách padding
  • Chỉ giữ ảnh có bounding box nằm trong image, nếu tràn thì bỏ image đó khỏi training data.
  • Xoá background, chọn 1 màu duy nhất, màu đen chẳng hạn

Cách đầu xử lý dễ nhưng khó train.
Cách cuối xử lý khó, vì chủ yếu bằng tay, nhưng train có kết quả ngay.

4 Likes

Anh cho em hỏi thêm chút. Với ảnh các loại chó như bên dưới. Hiện tại e đang train với dữ liệu ảnh xám, crop obj trên ảnh màu, rồi chuyền về ảnh xám, scale về [0;1], rồi resize dựa vào chiều cao và rộng trung bình của cả tập. Em đang tìm cách trích rút đặc trưng mà chưa biết ảnh như thế này nên trích chọn đặc trưng gì
Đây là ảnh sau khi tiền xử lý

Vấn đề nữa là dữ liệu khá nhiều 119 class, khoảng 20k ảnh mà train thấy lâu quá xá. Em đang hỏi thầy có được bớt class đi không mà chưa thấy thầy trả lời :grimacing: Em thấy ram và cpu tăng khá cao. Thấy có 1 số bài hướng dẫn sử dụng dịch vụ gpu của goolge để train, nhưng thấy toàn dùng python. Còn project em dùng c/c++. Có cách nào train bằng gpu ở máy và train kiểu này thì có khét cpu hay gpu không nhỉ :grimacing:

Em thử dùng PCA để giảm số chiều data xuống xem! Còn tăng tốc train thì em học CUDA C nhé, OpenCV cũng có support GPU
https://docs.opencv.org/2.4/modules/gpu/doc/introduction.html

Còn nếu em xài card AMD thì học OpenCL, OpenCV cũng hỗ trợ luôn!

2 Likes

Còn nếu thích chịu chơi thì học Cython, bind code của em lên Python mang lên Google server train :grin:

2 Likes

Tks anh :grimacing:
:grimacing:
:grimacing:
:grimacing:

1 Like

Chia tập training data thành nhiều data. Mỗi lượt train chỉ train tập nhỏ thôi.
Vẽ thêm cái biểu đồ L(t). L là cost function, t là số lượt training. Coi L có giảm không. Thấy xu hướng L mà tăng thì xem lại training data.

Với lại không ai train 1 phát từ tất cả data lấy được cả. Thử với data nhỏ, sau đó mới tăng số lượng data để train lên.

4 Likes

Em thử với 2 class rồi mới tăng lên 119 class mà. Thử 2 class mỗi class có khoảng 150 sample. Độ chính xác chỉ được hơn 60%. Em đang sử dụng các tham số mặc định, chứ chưa biết cách tìm tham số phù hợp :joy:

Chuyện thường thôi em, quan trọng là là phần vẽ biểu đồ ấy. L(t) tăng giảm như thế nào.
Thường vẽ 2 L(t). Một L trên training data, và một L trên cross-validation. Có 2 hình đoán mới biết cách tunning các hyperparameters.

Anh cũng đã nói ML quan trọng nhất là cách tổ chức ML project.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?