Phát hiện đối tượng với Haar Cascade OpenCV

Hôm nay, bạn có thể nhìn thấy khuôn mặt của bạn nhận được công nhận bằng điện thoại android hoặc bất cứ nơi nào. Đó là rất mát mẻ! Nhưng công nhận các khuôn mặt trong hình ảnh hoặc video cũng nói chuyện mỗi ngày. Vì vậy, hãy để chúng tôi bây giờ nói về việc phát hiện và công nhận somethings của sự lựa chọn của chúng tôi bằng cách sử dụng haar cascade opencv.

Giới thiệu

Từ đầu tiên, tôi nghĩ rằng bạn cần cho thời gian để xem các hướng dẫn sau khi đọc bài đăng này cho dễ dàng hơn để hiểu. Bởi vì nhiệm vụ này mất rất nhiều thời gian cho tôi để tìm hiểu. Và đó là lý do tại sao tôi vội vàng để viết bài đăng này.
Và trang này là một thư viện nguồn mở máy tính tầm nhìn.

Bắt đầu với một nhà màu xanh lá cây:

257262

Chuẩn bị phần cứng và phần mềm
Đào tạo riêng của chúng tôi loại OpenCV Haar Cascade

Trước hết, chúng tôi thảo luận về một số lý thuyết.

MẪU

Để đào tạo các loại riêng của chúng tôi, chúng tôi cần nhiều mẫu. Một mẫu là đào tạo dữ liệu có chứa mẫu tích cực và tiêu cực mẫu. Đặc biệt, một đơn giản tích cực chứa nhiều hình ảnh hiển thị các đối tượng, chúng tôi muốn phát hiện. Và một tiêu cực có chứa ảnh mà không có đối tượng. Ngoài ra, những con số của mẫu phụ thuộc vào nhiều yếu tố, bao gồm cả chất lượng hình ảnh, đối tượng bạn muốn nhận ra, các phương pháp để tạo ra các mẫu, vv. Ví dụ, chúng tôi đã thành công với 2000 mẫu tạo ra bằng cách sử dụng 100 hình ảnh tích cực và 135 hình ảnh tiêu cực với công cụ createsamples của OpenCV.

TÍCH CỰC HÌNH ẢNH

Tích cực hình ảnh có chứa đối tượng để nhận ra đó được thực hiện bởi đối tượng cây trồng một phần của hình ảnh lớn. Do đó, chúng ta cần có góc độ khác nhau hình ảnh tích cực, bên, vv. Nhưng dự án của chúng tôi, chúng tôi chỉ nhận ra các đối tượng từ chế độ xem trước.
Một số mẫu tích cực:

257262

HÌNH ẢNH TIÊU CỰC

Hình ảnh tiêu cực không chứa các đối tượng để nhận ra. Hình ảnh tiêu cực có thể tạo ra bằng cách cắt một phần mà không chứa các đối tượng. Tuy nhiên, để dễ dàng hơn và nhanh hơn, chúng tôi có thể mất một hình ảnh mà không có bất kỳ đối tượng.
Một số mẫu tiêu cực:

3 13

Chuẩn bị dữ liệu bằng công cụ của OpenCV

Bạn có thể tự tạo dữ liệu đào tạo. Hoặc bằng cách sử dụng chương trình khác như "đối tượng định vị". Tuy nhiên, trong bài này, chúng tôi sẽ nói về cách sử dụng công cụ của OpenCV.
Cần chuẩn bị:

  • Thư mục hình ảnh tích cực: tích cực
  • Thư mục hình ảnh tiêu cực: tiêu cực
  • Sao chép mã tham khảo: https://github.com/Booppey/haarcascade.git

Sau đó, bạn có thể tạo tập tin "samples.txt" của bạn:

CD để workspace
Tìm tích cực - iname "*.png" > positives.txt
tìm thấy tiêu cực - iname "*.png" > negatives.txt
Perl code_ref/createsamples.pl positives.txt negatives.txt mẫu 2000 "opencv_createsamples - bgcolor 0 - bgthresh 0 - maxxangle 1.1 - maxyangle 1.1 maxzangle 0.5 - maxidev 40 -w 60 - h 60"

Tìm mẫu - tên ' * .vec ' > samples.txt

Sau đó tạo ra của bạn "samples.vec" được sử dụng để đào tạo các máy dò.

CP opencv-haar-classifier-training/src/mergevec.cpp ~/opencv-2.4.11/apps/haartraining
CD ~/opencv-2.4.11/apps/haartraining
g ++ 'pkg-config - libs--cflags opencv'-I. -o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp cvhaartraining.cpp cvsamplesoutput.cpp-lopencv_core-lopencv_imgproc-lopencv_highgui-lopencv_imgproc-lopencv_features2d-lopencv_flann-lopencv_nonfree-lopencv_calib3d-lopencv_objdetect
CD your_workspace_name
CP ~/opencv-2.4.11/apps/haartraining/mergevec.
. / mergevec samples.txt samples.vec
Đào tạo loại

Bây giờ đào tạo của chúng tôi phát hiện bằng cách sử dụng samples.vec bằng cách gõ vào terminal:

opencv_traincascade-dữ liệu loại - vec samples.vec -bg negatives.txt - numStages 20 - minHitRate 0,999 - maxFalseAlarmRate 0.5 - numPos 1500 - numNeg 135 -w 60 - h 60 - chế độ tất cả - precalcValBufSize 2048 - precalcIdxBufSize 2048
Sử dụng loại riêng của chúng tôi để phát hiện đối tượng

Sau khi đào tạo, các máy dò có thể hiểu những gì là đối tượng sẽ được phát hiện bởi các tập tin cascade.xml. Vì vậy bây giờ, bạn cần phải sử dụng tập tin này để phát hiện. Cuối cùng, kiểm tra của chúng tôi github cho xem mã nguồn cho nhiệm vụ này.

Kiểm tra chúng tôi github
git clone https://github.com/Booppey/haarcascade.git
Đóng cửa

Haar Cascade là một phương pháp đơn giản và hiệu quả cho phát hiện 1 loại đối tượng vào thời gian. Nhưng cách tiếp cận này có thể phát hiện chỉ có một đối tượng. Nếu bạn muốn phát hiện nhiều loại đối tượng, bạn cũng có thể sử dụng các phương pháp khác như túi xách của Word trực quan (BoVW) bằng cách sử dụng SIFT/SURF, KMEAN, SVM. Các loại phương pháp không chỉ phát hiện 1 đối tượng, nhưng nó cũng phát hiện nhiều đối tượng.

Share This:

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *