01/10/2018, 15:37

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ỉ
Ví dụ

Thank you

HelloWorld viết 17:46 ngày 01/10/2018

Help
Character

Nguyễn Phạm Anh Quân viết 17:42 ngày 01/10/2018

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!

Hung viết 17:51 ngày 01/10/2018

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.

HelloWorld viết 17:51 ngày 01/10/2018

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 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ỉ

Nguyễn Phạm Anh Quân viết 17:41 ngày 01/10/2018

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!

Nguyễn Phạm Anh Quân viết 17:53 ngày 01/10/2018

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

HelloWorld viết 17:39 ngày 01/10/2018

Tks anh


Hung viết 17:39 ngày 01/10/2018

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.

HelloWorld viết 17:53 ngày 01/10/2018

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

Hung viết 17:53 ngày 01/10/2018

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.

Bài liên quan
0