2011-11-03 37 views
10

Tôi đang cố gắng và không thực hiện opencv_traincascade sử dụng nhiều chuỗi. Tài liệu duy nhất tôi có thể tìm thấy nói "xây dựng OpenCV với TBB". Tôi không chắc liệu tôi có thành công trong việc xây dựng OpenCV với TBB hay không, hoặc liệu có một số lá cờ tôi cần phải đặt cho opencv_traincascade hay không.Tôi làm cách nào để xây dựng OpenCV với TBB?

Tôi đã tải xuống phiên bản OpenCV 2.3.1 windows superpack và tbb40_20111003oss_win.zip, mà tôi đã trích xuất thành C:\tbb40_20111003oss. sau đó tôi tạo VC8 .sln.proj file sử dụng CMake, thiết

WITH_TBB: ON

TBB_INCLUDE_DIR:PATH=C:\tbb40_20111003oss\include

TBB_LIB_DIR:PATH=C:/tbb40_20111003oss/lib/intel64/vc8

OpenCV sau đó được xây dựng mà không có lỗi, nhưng khi tôi chạy opencv_traincascade nó singlethreaded. Có ai biết tôi đang làm gì sai không?

Trả lời

1

Thử đặtNumThreads(), với số lõi bộ xử lý của bạn làm thông số. Có một hàm trợ giúp để tìm số luồng tối ưu (bằng số lõi), nhưng tôi không thể nhớ nó.

Và chắc chắn rằng bạn cũng xây dựng lại các exe train_cascade

+0

ở đâu để tôi thiết này?Tôi có cần chạy cái gì đó để cài đặt TBB không? Tất cả những gì tôi đã làm là giải nén tập tin .zip. – theotherphil

+0

gọi hàm trong mã của bạn ... nếu bạn có dự án của riêng bạn. Nhưng .. hmm, bạn đã thêm TBB vào hệ thống PATH chưa? nếu không, hãy làm điều đó, đăng xuất và đăng nhập lại và thử nó. – Sam

+0

Các tệp .vcproj được tạo bởi CMake liệt kê các thư mục TBB dưới dạng các thư mục bổ sung. Tôi đã thêm TBB vào đường dẫn hệ thống và xây dựng lại, nhưng không có may mắn. Tài liệu hướng dẫn ở đây http://opencv.itseez.com/trunk/doc/user_guide/ug_traincascade.html nói rằng "Ứng dụng opencv_traincascade Lưu ý là TBB-parallelized. Để sử dụng nó trong chế độ đa lõi OpenCV phải được xây dựng với TBB." Nó không đề cập đến một lá cờ đa lõi như đầu vào, do đó, nó xuất hiện để cho thấy rằng opencv_traincascade sẽ tự động chạy đa luồng. Nhưng nó không. – theotherphil

2

Tôi biết đây là một chủ đề cũ nhưng tôi nghĩ rằng vấn đề là bạn đang sử dụng Traincascade với HAART tính năng insdead của việc sử dụng với các tính năng LBP sử dụng số nguyên thay vì dấu phẩy động và làm việc nhanh gấp 3 lần.

Xem nhận xét trong this question để biết thêm thông tin từ tác giả về điều này. Tóm tắt nhanh: Đào tạo Haart rất khó để cân bằng nhưng LBP dễ dàng hơn nhiều và tận dụng nhiều bộ vi xử lý.

Hy vọng điều đó sẽ hữu ích!

5

Nếu bạn đang ở trên máy Mac, bạn có thể làm điều này với homebrew:

brew tap homebrew/science 
brew install opencv --with-tbb 

Hoặc nếu bạn đã cài đặt với homebrew:

brew uninstall opencv 
brew install opencv --with-tbb 

Ngoài ra, lệnh info nói với bạn về cờ khác mà bạn có thể quan tâm, ví dụ --with-java

brew info opencv 
+0

Op hiển nhiên trên Windows. – Goddard

+1

@Goddard - Câu trả lời không chỉ dành cho OP. Bạn thực sự có thể truy cập trang này bằng cách googling 'xây dựng Open CV Mac' như tôi đã làm. – Robert

0

Sau khi xây dựng những chương trình TBB, hãy chắc chắn con đường của bạn đang chỉ đạo một cách chính xác thực thi của bạn tới các file dll TBB. Có thể bạn đang tải các tập tin không phải tbb (điều này đã xảy ra với tôi) và chúng sẽ không cung cấp đa luồng.

1

Đối với Linux, làm:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON BUILD_TBB=ON .. 
0

Ngoài ra, một điểm tiếp xúc là quá trình cài đặt của Intel TBB trên hệ thống:

$ sudo apt-get install libtbb-dev 
Các vấn đề liên quan