thảo luận Thảo luận về Computer Vision

buiduchanh1995

Senior Member
Chào các bác, mấy hnay rảnh rảnh ngồi lượn lờ quanh mấy box AI ở f91 thì thấy khá nhiều thím có mong muốn tìm hiểu thêm về mảng computer vision.
Sơ qua background thì mình cũng làm ở ngành này được khoảng hơn 4 năm. Công việc chính của mình do đặc thù hay làm các sản phầm về production thì ở phần engine bao gồm xây dựng mô hình, tối ưu về tốc độ và độ chính xác.
Mục đích lập box này:

- Tạo nơi cho những a/e thảo luận, chia sẻ về cả kiến thức, kinh nghiệm để có thể học tập thêm từ các đàn anh trong ngành cũng như là hướng dẫn thêm cho những ng mới muốn làm việc trong ngành computer vision

Mình chưa phải là người có quá nhiều kinh nghiệm nên trong quá trình vận hành sẽ không tránh được những sai sót nên mong mọi người sẽ góp ý chỉ bảo thêm.
Mình cảm ơn
 
Những cái kiểu này cứ dùng thư viện có sẵn hay mình phải tự tạo model tuỳ theo ứng dụng bạn nhỉ?
Thông thường thư viện và mô hình đều là kế thừa hết bạn nhé. Bản chất mình sẽ k sáng tạo được ra mô hình mà chỉ là dựa vào kiến thức để thêm thắt vào mô hình đó với mục đích đạt kết quả tốt hơn cho tập dataset của bạn
Mình lấy một ví dụ với một bài toán object detection chẳng hạn. Giả sử mô hình gốc sử dụng convolution 5x5, 7x7 để trích xuất thông tin features tuy nhiên vì thấy size convolution như vậy là quá to trong khi các object bạn cần detect lại khá nhỏ thì bạn có thể giảm convolution xuống thành 3x3. Tiếp đến với convolution 3x3 thì số parameter cho 1 convolution là 9 như vậy khiến mô hình bị nặng thì bạn có thể sử dụng 2 convolution kết hợp là 3x1 và 1x3 có kết quả tương đương trong khi số parameter giảm xuống chỉ còn 6.
Thường chỉ thêm thắt một ít để mô hình hiệu quả hơn chứ k đến mức sáng tạo hẳn ra một mô hình mới :v Đây là việc của các researcher rồi.
 
Trên Scaled yolov4 làm nào detect được small objects các thím ? giả sử ảnh của e sau khi resize về 640x640, object có kích thước khoảng 16x16 pixels
 
Last edited:
Trên Scaled yolov4 làm nào detect được small objects các thím ? giả sử objects của e sau khi resize về 640x640 có kích thước khoảng 16x16 pixels
Titling : cắt hình ra nhỏ hơn mà vẫn bao trọn object => tăng diện tích của object trong hình
Augmentation : tăng số lượng hình => tránh overfitting
Chỉnh anchor box size
 
Trên Scaled yolov4 làm nào detect được small objects các thím ? giả sử objects của e sau khi resize về 640x640 có kích thước khoảng 16x16 pixels
Nâng cấp độ chính xác của mô hình thì thường chia làm 2 cách chính là xử lý mô hình + xử lý dữ liệu. Với câu hỏi của thím thì sẽ như sau nhé :

Với mô hình : Cách dễ nhất là nâng resolution của network lên rồi đánh giá, về anchor box có thím nhắc bên trên nhưng phải cẩn thận vì về cơ bản yolo sẽ có 3 layer detect tương ứng với 3 cặp anchor ( tương ứng huge, medium, small object ), nếu muốn detect small object nên chỉnh 1/3 cặp thôi nhé :v
Với data : split ảnh gốc thành nhiều ảnh nhỏ với stride, ví dụ ảnh HD 1080x1920 thì cái object của thím sẽ rơi vào khoảng 30x40 pixel, thì bác crop ảnh gốc khoảng 128x128 với stride 40-50%. Sau đó thì filter đi một số data trống k có box để cân bằng dữ liệu, thêm agument vào rồi train thôi. Bản chất của phương pháp này là khi ảnh to bị resize về kích cỡ của network thì khiến object bị nhỏ đi khó detect, thay vào đó thì thím cắt ảnh to thành các ảnh bé và resize thì object sẽ đỡ bị nhỏ hơn

Lưu ý là processing train data ntn thì processing test data như thế là được. Về việc crop theo stride thì bác có thể tham khảo git này, cái này là mình fork của ông anh
https://github.com/buiduchanh/zalo_traffic_detection
 
Nâng cấp độ chính xác của mô hình thì thường chia làm 2 cách chính là xử lý mô hình + xử lý dữ liệu. Với câu hỏi của thím thì sẽ như sau nhé :

Với mô hình : Cách dễ nhất là nâng resolution của network lên rồi đánh giá, về anchor box có thím nhắc bên trên nhưng phải cẩn thận vì về cơ bản yolo sẽ có 3 layer detect tương ứng với 3 cặp anchor ( tương ứng huge, medium, small object ), nếu muốn detect small object nên chỉnh 1/3 cặp thôi nhé :v
Với data : split ảnh gốc thành nhiều ảnh nhỏ với stride, ví dụ ảnh HD 1080x1920 thì cái object của thím sẽ rơi vào khoảng 30x40 pixel, thì bác crop ảnh gốc khoảng 128x128 với stride 40-50%. Sau đó thì filter đi một số data trống k có box để cân bằng dữ liệu, thêm agument vào rồi train thôi. Bản chất của phương pháp này là khi ảnh to bị resize về kích cỡ của network thì khiến object bị nhỏ đi khó detect, thay vào đó thì thím cắt ảnh to thành các ảnh bé và resize thì object sẽ đỡ bị nhỏ hơn

Lưu ý là processing train data ntn thì processing test data như thế là được. Về việc crop theo stride thì bác có thể tham khảo git này, cái này là mình fork của ông anh
https://github.com/buiduchanh/zalo_traffic_detection
e hiểu cách của thím @hihi_vitcon_saolaibanem và thím rồi, về anchor box e có chạy lại anchor theo Genetic Algorithm được đề xuất ở trong YOLOv5, thấy anchor đang khá nhỏ và có vẻ khá fit vs data hiện tại của e.
Sau khi train đánh giá thấy accuracy của model khá ổn.
Có thể tương lai e sẽ áp dụng cách số 2 Với data của thím Hanh đề xuất :D
 
Trên Scaled yolov4 làm nào detect được small objects các thím ? giả sử ảnh của e sau khi resize về 640x640, object có kích thước khoảng 16x16 pixels
Yolo thì hơi hạn chế về detect small object vì số anchor box có 2 hay 3 j đó. Nếu ko yêu cần quá khắt khe về tốc độ detect thì Faster RCNN hoạt động khá đc vs small object.


Sent from Andy's iPhone via nextVOZ
 
Yolo thì hơi hạn chế về detect small object vì số anchor box có 2 hay 3 j đó. Nếu ko yêu cần quá khắt khe về tốc độ detect thì Faster RCNN hoạt động khá đc vs small object.


Sent from Andy's iPhone via nextVOZ

Thực ra faster bh cũng là quá khứ 😅 Yolo hiện tại cũng đc update rất nhiều kẻ từ yolov4 đang là sota trên Coco ở cả performance lẫn accuracy mà thím (Ap25,50,75) đều ổn 🤣


via theNEXTvoz for iPhone
 
Thông thường thư viện và mô hình đều là kế thừa hết bạn nhé. Bản chất mình sẽ k sáng tạo được ra mô hình mà chỉ là dựa vào kiến thức để thêm thắt vào mô hình đó với mục đích đạt kết quả tốt hơn cho tập dataset của bạn
Mình lấy một ví dụ với một bài toán object detection chẳng hạn. Giả sử mô hình gốc sử dụng convolution 5x5, 7x7 để trích xuất thông tin features tuy nhiên vì thấy size convolution như vậy là quá to trong khi các object bạn cần detect lại khá nhỏ thì bạn có thể giảm convolution xuống thành 3x3. Tiếp đến với convolution 3x3 thì số parameter cho 1 convolution là 9 như vậy khiến mô hình bị nặng thì bạn có thể sử dụng 2 convolution kết hợp là 3x1 và 1x3 có kết quả tương đương trong khi số parameter giảm xuống chỉ còn 6.
Thường chỉ thêm thắt một ít để mô hình hiệu quả hơn chứ k đến mức sáng tạo hẳn ra một mô hình mới :v Đây là việc của các researcher rồi.

Size của object ý bạn là pixel size ấy hả?
 
Về cách viết abstract sao cho thu hút người đọc + đầy đủ ý ấy, em thấy phần này viết khó với cực quá
viết theo công thức : BPMC, ví dụ topic là đọc ảnh X-quang chẩn đoán K phổi
  • Burden: dẫn từ những vấn đề có liên quan của xã hội, ví dụ : ung thư phổi là 1 căn bệnh chết người gây ra cái chết cho X người mỗi năm
  • Proposal: đề ra giải pháp : Chấn đoán sớm qua X-ray là 1 trong những yếu tố quan trọng để tăng chất lượng điều trị cho bệnh nhân, trong bài viết này chúng tôi đề xuất 1 phương pháp dựa vào AI để chấn đoán khối u ở phổi trên ảnh X-ray tự động.
  • Metrics & results: Nêu ra những sự nổi bật của kq, tốt khoe xấu che : Model của nhóm nghiên cứu đạt độ chính xác khá cao, lên tới 99%, comparable to existing studies and methods.
  • Conclusion: ...

Tricks : abstract là phần đầu tiên, thường reviewer sẽ đọc qua abstract trước khi đọc chi tiết toàn bài => Viết cho tốt, ko cần dùng từ ngữ quá cao siêu, take Simon writing style, viết clean và simple dễ hiểu, nhưng đúng ngữ pháp.
 
Vậy ý bạn là tổng hợp cardinality size của nó (pixels areas + color range)? :D
Ví dụ với ảnh RGB chẳng hạn thì việc. 1 cái kernel chạy trên đó có thể miêu tả bằng hình dưới đây
Screen Shot 2021-07-14 at 23.12.50.png

:LOL:) thực ra bác đang làm em hơi mộng mị :LOL: ý bác muốn nói là ntn nhỉ ? bác nói rõ hơn được không vì em đang k hiểu câu nói của bác là gì ?
 
Back
Top