Tổng hợp Transfer Learning

transfer-learning

#1

Transfer Learning: A Comprehensive Review

Tiếp tục loạt bài về Deep Learning, phần này mình sẽ giới thiêu cơ bản và chi tiết về kỹ thuật transfer learning (TL). Bài viết này nhằm cung cấp kiến thức cơ bản về TF (định nghĩa, ứng dụng, cái nhìn tổng quan - big picture), sử dụng TF khi nào và như thế nào để hiệu quả, các vấn đề/thách thức của TF, các kỹ thuật TF tiên tiến.

Trong bài viết này các bạn sẽ thấy Transfer Learning nó không chỉ đơn giản là tái sử dụng lại các giá trị weights đã được học từ tập dữ liệu lớn như ImageNet, rồi chuyển sang tập dữ liệu nhỏ cho vấn đề của bạn bằng việc train lại một vài layer đầu/cuối. Mà transfer learning rộng hơn, đa dạng hơn, với rất nhiều cách, phương thức kỹ thuật transfer learning khác.

I. Giới thiệu

1.1. Định nghĩa Transfer Learning

Transfer learning là việc ứng dụng kỹ năng/tri thức mình học được từ vấn đề này (source domain - D_S ), với ứng dụng này (source task - T_S) sang vấn đề khác (target domain - D_T) với ứng dụng khác (target task - T_T) có liên quan. Transfer learning nhằm cải thiện việc học hàm f_T(\cdot) cho ứng dụng T_T trên miền D_T .

Transfer Learning

Ví dụ kỹ năng đi xe máy của bạn sẽ hữu ích cho việc học đi ô tô (đều là điều khiển phương tiện tuân thủ luật giao thông), kiến thức toán học, thống kê, lập trình sẽ hữu ích cho ngành học máy. Thông qua transfer learning, mình không phải học lại từ con số không nữa, mà dựa trên những tri thức mình đã biết mà học lên tiếp. Từ đó giảm thời gian và công sức học nhiệm vụ mới.

Trong machine learning và deep learning, thì transfer learning là kỹ thuật cho phép tận dụng những gì mình học được từ tập dữ liệu/ ứng dụng/ kiến trúc này sang tập dữ liệu/ứng dụng/kiến trúc khác. Khác với học máy thông thường, từng nhiệm vụ sẽ có một hệ thống học riêng như ở hình ví dụ trên.

Lưu ý: Kỹ thuật Transfer Learning của chung cho ML chứ không phải của riêng của DL.

1.2. Phân loại transfer learning [1, 3]

A. Phân loại theo chủ đề nghiên cứu

  1. Transfer cái gì: phần nào của tri thức đã học có thể transfer? Vì một số tri thức có tính đặc thù riêng của nhiệm vụ, và có các tri thức chung giữa các nhiệm vụ khác nhau. Về cơ bản, tri thức chung là có thể transfer được.
  2. Transfer khi nào: trường hợp nào (không) nên transfer. Transfer learning có thể sẽ không đem lại lợi ích nếu hai nhiệm vụ không có mối sự liên hệ, tương quan (còn được biết đến là negative transfer)
  3. Transfer như thế nào: Cách thức thực hiện transfer như thế nào cho hiệu quả.

B. Phân loại theo domains

img

  1. Inductive transfer learning: khác biệt về nhiệm vụ (task)
    1. Cùng domain. Transfer learning để có được chất lượng tốt cho ứng dụng khác. Ví dụ transfer learning từ việc nhận dạng giới tính sang nhận dạng tuổi. Khác với multi-task learning, là thiết kế thuật toán tốt cho cả nhận dạng giới tính và tuổi, transfer learning ở đây chỉ muốn nhận dạng tuổi tốt hơn thôi.
    2. Khác domain. Dữ liệu từ source domain không có nhãn.
  2. Transductive transfer learning: giống nhau về nhiệm vụ nhưng khác biệt về domain
    • Bài toán segmentation cho ảnh y tế và ảnh thông thường (natural image)
  3. Unsupervised transfer learning. Giống inductive transfer learning nhưng target task ở dạng un-supervised learning điển hình như clustering (nhóm), giảm chiều dữ liệu (dimension reduction), .v.v.

C. Phân loại theo hướng tiếp cận

  1. Instance transfer. Dùng lại tri thức từ source domain từ một số trường hợp/ví dụ chính.
  2. Feature representation transfer. Giảm thiểu sự khác biệt giữa 2 domains.
  3. Parameter transfer. Dựa trên giả thiết các task liên hệ với nhau có cùng phân bố về bộ thông số hyper parameters.
  4. Relational - Knowledge transfer. Hướng tới giải quyết vấn đề khi dữ liệu không độc lập và phân bố ngẫu nhiên, thường thấy ở ứng dụng liên quan tới mạng xã hội.

Liên hệ giữa phân loại theo hướng tiếp cận và domain được thể hiện như sau

II. Transfer learning trong Deep Learning

Few, cuối cùng cũng rồ ga tới phần mọi người quan tâm. :smiley:

2.1. Tại sao nên dùng transfer learning trong deep learning

Transfer Learning like a Pro

  • Không đủ dữ liệu: DL cần rất nhiều dữ liệu, và ngốn rất nhiều tài nguyên để học trên tập dữ liệu và ứng dụng đó và việc huấn luyện DL trên tập dữ liệu ít phần nhiều là không hiệu quả. Vậy ngoài kỹ thuật data augmentation trước đó, transfer learning cũng là một giải pháp cho vấn đề này.
  • Không đủ tài nguyên: Việc học trên tập dữ liệu lớn rất ngốn nhiều tài nguyên. Transfer learning sẽ góp phần giảm phần nào thời lượng training.
  • Cải thiện chất lượng. Rất nhiều trường hợp transfer learning cải thiện chất lượng dự đoán của Target Task so với việc train lại từ đầu. Lý do có thể do Source Network được train với dữ liệu lớn và học được tính khái quát hóa tốt hơn, hay việc train với Target Task trong khi mạng vẫn có thông tin của Source Task cho tách động của multi-task learning.

Như trong bài talk của Andrew Ng tại NIPS 2016[5], transfer learing sẽ là cầu nối về chất lượng của machine learning giữa un-supervised learning và supervised learning. Transfer learning giúp giải quyết các vấn đề mà không có dữ liệu, các vấn đề mới chưa được học trước đó.

2.2. Phương thức transfer learning [6]

  1. Transfer learning as a starting point

    Dùng kết quả của mạng pre-trained như VGG19, InceptionNet, ResNet101 làm kết quả dự đoán ban đầu. Thiết kế thuật toán fusion kết quả của nhiều mạng pre-trained.

  2. Transfer learning for representation.

    Lấy đầu ra của layer gần cuối và coi như là feature vector. Trong bài toán nhận dạng vật thể, mạng neural network có thể coi như một thuật toán tự học cách biểu diễn dữ liệu cho bài toán nhận dạng (learned representation) với phần nhận dạng đơn giản (thường dùng Softmax và one-hot coding). Vector biểu diễn đó có thể đưa vô các thuật toán phân loại phức tạp hơn như SVM.

  3. Warm restart via fine tuning.

    Sử dụng mạng đã train từ tập dữ liệu lớn như ImageNet, rồi train lại với dữ liệu khác ở learning rate nhỏ hơn.

    Thông thường sẽ không học các giá trị weight ở các layer đầu (do mấy layer đầu thường là biểu diễn dữ liệu ở dạng low-level vision - thị giác máy cấp thấp, chứa thông tin cơ bản của ảnh như cạnh, texture) còn layer cuối thường chứa thông tin ở cấp cao, liên quan tới ứng dụng, task cụ thể. Tuy nhiên tùy mối tương quan của hai task (source và target task) và thiết lập learning rate tương ứng.

“Finetuning most likely to help.”

Như hình biểu diễn chất lượng transfer so với khởi tạo ngẫu nhiên với nhiều tập dữ liệu khác nhau [14]

image

  1. Pre-trained model

    Việc sử dụng các pre-train model không chỉ dừng lại ở việc freezinng và fine-tuning các layer như trên. Mà có thể ghép nối nhiều network lại với nhau và freeze, fine-tune tương ứng. Việc sử dụng pre-trained model góp phần làm giảm đáng kể thời gian training và tăng chất lượng dự đoán.

    Ví dụ bạn muốn thực hiện xóa nhiễu (image denoising) và tăng độ phân giải (image super-resolution), thì có thể tận dụng hai network DenoiseNet và SRNet. Ví dụ input của SRNet là output của DenoiseNet và tiến hành train tuần tự hoặc train cùng lúc cả hai mạng. Giống như kiểu Network trong network, hay train mạng tạo sinh GAN ấy.

    Hoặc bạn có thể phối hợp giữa warm re-start và pre-trained model như, Net1 dùng VGG19 fine-tune 2 layer cuối cùng. Net2 dùng VGG19 làm warm start, và train cả 2 thằng cùng lúc. Với việc fusion (sớm hoặc muộn) features của 2 network và chọn làm features cho việc dựa đoán.

    Nếu bạn làm về GAN, khôi phục ảnh, super-resolution sẽ biết tới việc Pre-trained VGG net được sử dụng làm perceptual loss - một hàm loss rất nổi tiếng. Thay vì tính hàm loss theo mean square error (MSE - hay L2 norm), structure similarity (SSIM) của dữ liệu gốc x và dữ liệu dự đoán \hat{x} thì perceptual loss này so sánh sự khác biệt về MSE giứa các intermediate feature của mạng VGG(x) và VGG(\hat{x}) [13]

  2. Transfer on Metadata (hyper parameters)

    Như một số bài báo gần đây về các kỹ thuật AutoML, Auto Augmentation, không chỉ các weights mà cả các policy như adaptive learning rate, adaptive augmentation hoàn toàn có thể transfer được. Điển hình là policy cho việc adaptive augmentation được học từ dữ liệu nhỏ CIFAR10 và ứng dụng cho CIFAR100 ở AutoAugment [9]

  3. Transfer learnign via Multi-task learning

    Để train một mạng NetA có khả năng transfer tốt hơn, thay vì ta train NetA với một task, thì sẽ train nó với nhiều task. Điều này dẫn tới phần lớn các layer trừ một vài layer cuối sẽ có đặc tính khái quát hóa tốt hơn từ đó dẫn đến transfer learning tốt hơn cho các ứng dụng, dữ liệu khác.

  4. Transfer learning via generalization

    Học cách khái quát hóa dữ liệu tốt hơn thông qua giai đoạn pre-train. Điển hình là phương pháp Selfie mà mình review [7].

    Học cách biểu diễn data ở dạng unsupervised, từ đó cũng đạt tính khái quát hóa tốt hơn như ở [8]

III. Ứng dụng transfer learning

3.1. Domain Adaptation

Như đã đề cập ở trên, supervised deep learning cần rất nhiều dữ liệu có nhãn để làm việc hiệu quả. Và cần nhiều dữ liệu ở đây không chỉ là ở số lượng mà còn là chất lượng nhãn như độ tin cậy (dữ liệu có thể bị dán nhầm nhãn), tính đa dạng (đủ các nhãn, số lượng mẫu trên một nhãn), .v.v. Các ứng dụng phổ biến như “nhận diện”, “phân loại”, thường có các tập dữ liệu lớn, phổ biến, được thu thập, dán nhãn bởi các tổ chức, cuộc thi nào đó điển hình như IMAGENET, COCO, PASCAL VOC, CELEBA, .v.v.

Data bias. Sử dụng các dataset sẵn có - OK, không có vấn đề gì cả, nhưng thường các dữ liệu đó không được thu thập theo hướng giải quyết vấn đề riêng của bạn. Điều này dẫn tới vấn đề bias về dữ liệu. Ví dụ như, ứng dụng nhận diện khuôn mặt ở VN thì tập dữ liệu khác về phân bố, số lượng class, và số mẫu từng class. Trong khi dữ liệu CelebA có thể bị bias cho người da trắng, dữ liệu của bạn lại bias cho đối tượng người Việt Nam.

Domain Shift - Đời không như là mơ. [15] Dù cho dữ liệu bạn lấy chi tiết như thế nào, da dạng tới cỡ nào thì luôn luôn có sự khác biệt giữa giữ liệu bạn có và dữ liệu thực sự dùng khi triển khai. Ví dụ bạn lấy dữ liệu train từ CelebA, tập này ảnh có thể bị tiền xử lý, lọc màu các thứ, nhưng thực tế bạn cần triển khai với đầu vào từ Camera aninh với chất lượng khác một trời một vực. Chưa kể ảnh nền có thể thay đổi, điều kiện sáng, vân vân và mây mây.

Làm thế nào để mô hình của bạn có thể giải quyết các vấn đề này tốt hơn? Welcome to Domain Adaptation

Domain adaptation là một mảng trong transfer learning khi phân bố (probability distribution) của dữ liệu gốc (source domain) khác (nhưng có liên hệ) với miền dữ liệu cần transfer (target domain) [14]. Ví dụ điển hình của domain adaptation là ứng dụng bộ lọc spam (Spam filtering problem). Mô hình lọc spam được học từ user này (source distribution) sang một user khác có sự khác biệt đáng kể về email nhận. Domain adaptation cũng được dùng để học các nguồn dữ liệu không có mối liên hệ trực tiếp. Ngoài ra, domain adaptivation với nghiên nguồn dữ liệu khác nhau còn gọi là multiple-source domain adaptation.

Phương thức Adaptation [14]

  1. Reweighting. Dùng các trọng số để các mẫu nguồn có phân bố giống như mẫu đích. Ví dụ dữ liệu của bạn cho người Châu Á, thì đưa trọng số cho các class người Châu Á trong bộ dataset CelebA cao hơn.
  2. Auto-labeling. Dùng network có sẵn để gán nhãn tự động cho mẫu của mình. Giả sử ta có mạng Net1, train cho dữ liệu nhận dạng A với số lượng class khác dữ liệu B (-dữ liệu chúng ta cần làm). Dùng output layer gần cuối của Net1 trên dữ liệu B --> cho ta các feature vectors. Dùng thuật toán clustering (phân loại cụm) để nhóm thành các nhóm - nhãn mà chúng ta quan tâm.
  3. Common representation space. Tìm miền biểu diễn chung giữa hai domain sao cho source domain vẫn có kết quả tốt. Adversarial ML là một ứng viên sáng giá.
  4. Hierarchical Bayesian Model. Cái này mình không rõ lắm, các bạn quan tâm tự tìm hiểu thêm nhé :3

3.2 Domain Confusion [1, 16]

Vì intermediate feature ở mỗi layer mang các thông tin khác nhau (output của layer đầu thường mang thông tin cạnh, texture, trong khi output của layer cuối mang thông tin tổng quát hóa về bài toán .v.v.) dẫn đến ta hoàn toàn có thể tận dụng features ở các layer khác nhau (Không nhất thiết phải là ở layer gần cuối). Ví dụ điển hình là hàm suy hao Perceptual loss mình nhắc ở phần 2.2.

Việc tận dụng các intermediate feature này có thể giúp học các features có thể dùng cho nhiều domain khác nhau (domain-invariant). Ý tưởng cơ bản là thêm các hàm los để mô hình gốc học các đặc tính chung giữa các domain khác nhau nhiều hơn [16]. Điển hình là tác giả [16] thêm một adaptation layer và hàm suy hao domain confusion loss.

Common representation space ở 3.1 và mulit-task learning cũng cho kết quả tương tự.

3.3 ‘X’-Short Learning

Mặc dù nhiều lần được PR là công nghệ tiên tiến trong trí tuệ nhân tạo, DL thực ra không có “thông minh” cho lắm. Bởi lẽ khi đứa bé lớp 1 nhìn một vài lần là biết “quả táo” là “quả táo” chứ không phải quả “nho” thì deep learning cần cả mớ dữ liệu để nhận dạng được nó. Nếu bắt trước được như em bé, thì DL sẽ dùng được nhiều hơn ở các ứng dụng thực tế.

Và đây là động lực cho các nghiên cứu về “X” Shot learning với các hạng mục [18]

3.3.1. One/Few-shot learning [18]

Ví dụ như một số class không thể có dữ liệu label, hoặc khi ta có một mẫu label mới, việc training lại từ đầu là rất lãng phí. Và đây cũng chính là động lực cho sự phát triển của các thuật toán “One”-Shot Learning, một nhánh của transfer learning. Chỉ cần một vài mẫu dữ liệu nhỏ, One-Short learning có thể học được tác vụ đó ở chất lượng tương đối tốt.

Ý tưởng chụ đạo của One shot learning đó là thay vì học cách phân loại cụ thể các lớp (100, hay 1000 lớp), mạng sẽ học cách phân biệt hai class khác nhau giống như là học một hàm khoảng cách (a distance function). Network sẽ học cách khái quát hóa việc ảnh thuộc cùng 1 class hay khác class trên tập dữ liệu huấn luyện, và từ đó ứng dụng cho tập dữ liệu chưa nhìn thấy trước đó.

Khác với việc huấn luyện Network thông thường, huấn luyện mạng One-shot learning gồm hai bước cơ bản

  1. Verification task. Nhận 2 dữ liệu đầu vào, phân loại nhị phân xem chúng thuộc cùng 1 class hay không
  2. Ứng dụng mạng verification để phân loại ảnh mới xem có thuộc cùng class hay không.

img

One shot learning có thể thược hiện thông qua một mạng Siamese với 2 cấu trúc CNN giống nhau [18, 19]. Thay vì chỉ dùng one-hot coding ở layer cuối, thì thêm layer làm features để học hàm (distance matrix).

3.3.2. Zero-shot learning [17]

Doing something new. Đây là một trường hợp rất đặc biệt của transfer learning khi mà tác vụ cần thực hiện không có nhãn mẫu [1, 17]. Ví dụ như nhận dạng bạn A, khi thuật toán chưa hề huấn luyện với dữ liệu của A bao giờ cả.

Recognize never-seen object. Vậy làm thế nào thể nhận dạng những đối tượng mà ta chưa nhìn thấy bao giờ? Câu trả lời thông qua hai kỹ thuật “Image embedding” và “Class embedding”.

Image embedding là việc sử dụng feature vector từ ảnh qua mạng pre-train CNN. Ví dụ như lấy đầu ra ở layer gần cuối của VGG16. Tuy nhiên, vì chưa hề biết dữ liệu của nhãn zero-shot kia, nên ta cần lấy hết tất cả các embedded features của cả lớp đã có trong training và lớp zero-shot (không có trong training).

Class embedding là vector biểu diễn các lớp (class label) ngoài image embedding. Thường ta dùng one-hot coding cho quá trình training - và điều này giới hạn ở số lượng class. Ở đây, class embedding sử dụng các kỹ thuật khác để sử dụng nhiều class chưa có sẵn hơn, ví dụ như Word2Vecs.

So sánh về các lớp và embedding như ở bảng dưới đây. Training class sẽ có cả image và class embedding, trong khi zero-shot class chỉ có class embedding.

img

Giờ quá trình học sẽ theo các bước

  1. Network học cách mapping từ input - image embeding ra output - class embeding dựa trên training data
  2. Quy luật mapping của Netwokr sẽ dùng để map image embedding của zero-shot class sang class embedding tương ứng.

Visualized việc mapping image embedding và word embedding [21]

To be continues…

IV. Application Transfer Learning

Natural Language Processing

Audio Speech

Computer Vision

V. Advanced Transfer Learning

Distillation learning

VI. Nếu bạn muốn biết thêm

  • Ứng dụng Transfer learning cho class imbalance, dữ liệu không chuẩn [10, 11, 12]
  • Kỹ thuật transfer learning sử dụng làm pe

Tài liệu tham khảo

  1. D. J. Sarkar, A comprehensive hands on guide to transfer learning with real world applications in deep learning, Access June 2019.
  2. Transfer Learning, CS231n Convolution Neural Networks for Visual Recognition, Online, Access June 2019.
  3. S. J. Pan and Q. Yang, A Survey on Transfer Learning, IEEE Transaction on Knowledge and Data Engineering, 2010.
  4. S. Ruder, Transfer Learning, Online, Access June 2019.
  5. Andrew Ng, NISP 2016 tutorial.
  6. Brian Cury, Online, Access June 2019.
  7. T. H. Trinh, M. T. Luong, Q. V. Le, Selfie: Self supervised pretraining for image embedding, ICML 2019. SOTA
  8. S. Xie et al., Learnging semantic representations for unsupervised domain adaptation, ICML 2018.
  9. E. D. Cubuk et al, AutoAugment: Learning Augmentatation policies from Data, ICMP 2019.
  10. S. Stoushi et al, Transfer learnign for classs imbalance problems with inadequate data, 2016.
  11. K. R. Weiss et al., “Investigating transfer learners for robustness to domain class imbalance”, IEEE ICMLA 2016.
  12. J. Wang et al, Balanced distribution adaptation for transfer learning, arxiv 2018.
  13. J. Johnson et al, Perceptual lossess for real-times style transfer and super-resolution, arxiv 2016.
  14. Domain adaptation, Wikipedia, Access July, 2019.
  15. State of the art in domain adaptation CVPR in review iv. Access July 2019.
  16. E. Tzeng et al., Deep Domain Confusion: Maximizing for Domain Invariance, arxiv, 2014.
  17. S. Cetin, Zero-shot learning, Access July 2019.
  18. C. Shorten, One-Shot Learning, Access July 2019.
  19. D. Karnakaran, One shot learning explaned using FaceNet, Access July 2019.
  20. Y. Huang et al, Metric-promoted siamese network for gender classificaiton, IEEE International Conference on Automatic Face & Gesture Recognition (FG 2017), 2017.
  21. Socher, Richard, Milind Ganjoo, Christopher D Manning, and Andrew Ng. 2013. “Zero-Shot Learning Through Cross-Modal Transfer.” In Advances in Neural Information Processing Systems, 935–43.

Thuật Ngữ Viết Tắt

  • AI: Artificial Intelligence
  • DL: Deep learning
  • CNN: Convolutional Neural Network
  • SOTA: State-Of-The-Art
  • TF: Transfer Learning
  • CV: Computer Vision
  • GAN: Generative Adversarial Network

Transfer learning với keras
#2

Mình cũng đang tìm hiểu và sử dụng tranfer learning nhưng chỉ dừng lại ở mức freezinng và fine-tuning. Về phần dùng transfer learning để gép nhiều mạng lại với nhau mình có nghe qua nhưng chưa tìm hiểu, bạn có thể cho mình một vài gợi ý, link có nói tới cái này không? có ví dụ càng tốt. Mình là dân tay ngang nên khả năng hạn chế.

Cảm ơn bạn nhiều.


#3

Nếu bạn nêu tên về ứng dụng thì có thể mình nêu ví dụ tương ứng.

Còn bản thân mình đã dùng việc ghép nối các mạng pre-train của 2 vấn đề khác nhau dùng cho khôi phục ảnh (Image restoration).

Vấn đề nó hơi cụ thể một chút do mình làm việc với kỹ thuật lấy mẫu nén (compressive sensing). Mình dùng 3 subnetwork

  • Net1 - sampling & initial reconstruction (lấy mẫu và khôi phục khởi tạo)
  • Net2 - enhancement với convolution (cải thiện chất lượng)
  • Net3 - enhancement với U-net structure và wavelet convolution

Net1, Net2 - mình lấy từ bài báo giải quyết vấn đề của lấy mẫu nén (Mình có cải thiện phần này). Mạng đơn dản, dạng feed forward convolution [2] Net3 - mình lấy từ bài báo về super-resolution (tăng độ phân giải), deblocking filter (bỏ nhiễu block của ảnh nén). [3]

Về training thì thực hiện theo thứ tự

  • Phase 1. Train Net1
  • Phase 2. Finetune Net2 với input là Net1, mình không freeze Net1 mà vẫn để learning rate nhỏ.
  • Phase 3. Finetune Net 3 với input là output của Net2, mình không freeze network trước mà vẫn để learning rate nhỏ.

Lý do là để đam bảo các phần network trước cũng thay đổi 1 chút dựa theo kến trúc mạng mới.

ảnh ví dụ từ bài báo của mình [1]

Tham khảo.

  1. Thuong Nguyen Canh and Byeungwoo Jeon, “Difference of Convolution for Deep Compressive Sensing,” to be published in IEEE International Conference on Image Processing (ICIP) 2019,
  2. S. Wuzhen et al, “Deep network for compressed image sensing.” ICME 2017.
  3. P. Liu et al., “Multi-level wavelet convolution for image restoration,” CVPRW, 2018

#4

Rất cảm ơn bạn.

Hiện tại bài toán mình đang làm là xác định và nhận dạng đối tượng trong hình, ví dụ xác định trong hình có bao nhiêu (Sản phẩm X của hãng A, sản phẩm Y của hãng B…) Mình đang dùng Transfer Learning (Faster R-CNN - Pretrain model Resnet 101 ) với 1 model duy nhất, kết quả ở mức tạm chấp nhận :slight_smile: nên đang tìm hiểu các phương pháp tiếp cận khác xem thế nào.

Nếu được bạn có thể tư vấn cho mình cách tiếp cận bài toán này một cách phù hợp hơn :slight_smile:

Note: Về sample để train mình có khá nhiều, vài trăm ngàn hình, số lượng objects trên một hình tầm 15-20 và kích thước objects khá nhỏ. Mình cũng có thử qua Yolo3 nhưng kết quả cũng chưa tốt

Cảm ơn bạn nhiều.


#5

Update Phần 2. Domain adaptation/domain fusion, Zero shot/few shot learning


#6

Thank a. Bài viết rất chi tiết và hữu ích.


#7

Bạn quan tâm tới chất dượng dự đoán, không phải giảm thời gian dự đoán? Muốn cải thiện chất lượng dựa trên kết quả hiện tại thì bạn nên làm bước phân tích kết quả.

Nếu kết quả chưa tốt thì

  1. Chưa tốt ở mức nào?
  2. Class nào bị lỗi nhiều
  3. Khi nào bị lỗi, nguyên nhân bị lỗi.
  4. Thuật toán bạn có resize lại ảnh không? kích thước object nhỏ vậy có thể tăng size lên không?
  5. Có sự khác biệt giữa dữ liệu train và dữ liệu test thực không? Nếu có bạn chọn network có chất lượng tốt nhất kiểu gì

.v.v.