6

Tôi đang cố gắng tạo một chương trình có thể tìm thấy số liệu con người trong video về cách chơi trò chơi gọi nhiệm vụ. Tôi đã biên soạn một danh sách ~ 2200 hình ảnh riêng biệt từ video này có chứa hình người hoặc không. Sau đó tôi đã cố gắng đào tạo một mạng thần kinh để nói sự khác biệt giữa hai bộ hình ảnh.Làm thế nào để tìm kiếm một mô hình trình phát trong COD với OpenCV

Sau đó, tôi chia từng khung hình video thành một vài trăm hình chữ nhật có lưới và tôi kiểm tra từng chữ cái bằng ANN của mình. Các hình chữ nhật được chồng lên nhau để cố gắng nắm bắt các con số nằm giữa các đường lưới, nhưng điều này dường như không hoạt động tốt. Vì vậy, tôi có một vài câu hỏi:

  1. Mạng neural có phải là đường đi không? Tôi đã đọc rằng chúng rất nhanh so với các thuật toán học máy khác, và cuối cùng tôi dự định sử dụng nó với video và tốc độ thời gian thực là rất quan trọng.

  2. Cách tốt nhất để tìm kiếm các số liệu trong khung hình để kiểm tra trên ANN là gì? Tôi cảm thấy như cách tôi làm nó không phải là rất tốt. Nó chắc chắn không phải là rất nhanh hay chính xác. Mất khoảng một giây cho mỗi khung hình của một hình ảnh 960 x 540 và có độ chính xác kém.

  3. Một vấn đề khác mà tôi đã có là cách tốt nhất để tạo vectơ tính năng để sử dụng làm đầu vào cho ANN. Hiện tại, tôi chỉ chia tỷ lệ tất cả hình ảnh đầu vào xuống còn 25 x 50 pixel và tạo ra một vectơ đặc trưng chứa cường độ của mỗi pixel. Đây là một vectơ rất lớn (1250 phao). Cách tốt hơn để xây dựng một vectơ đặc trưng là gì?

Đối với một lời giải thích chi tiết hơn về những gì tôi làm ở đây: CodAI: Computer Vision

EDIT: Tôi muốn một ít chi tiết hơn. Cách tốt nhất để tính toán các tính năng là gì. Tôi cần để có thể nhận ra một nhân vật ở nhiều vị trí khác nhau. Tôi có cần phải tạo các trình phân loại riêng biệt để nhận ra sự khác biệt giữa thẳng đứng, cúi xuống và dễ bị không?

+0

Tôi thấy câu hỏi này quá cụ thể cho diễn đàn này. – karlphillip

+0

Câu hỏi có thể quá cụ thể như thế nào? Tôi muốn có một số ý tưởng về cách đi theo dõi con người? –

+0

Tôi có một ấn tượng mờ nhạt rằng những người Kinectic tại công ty của bạn thực hiện loại công cụ này để kiếm sống. Xin vui lòng, cho chúng tôi biết làm thế nào tất cả đã đi. – karlphillip

Trả lời

6
  • Sử dụng các cường độ thô như vector đặc trưng sẽ không hoạt động . Có quá nhiều biến thể do ánh sáng gây ra, v.v.
  • Tính năng tốt để xem là bước đầu tiên sẽ là HOG. opencv 2.2 có phiên bản GPU (cuda) của thiết bị dò tìm nhanh.
  • Mạng thần kinh có thể không phải là cách tốt nhất để đi. Thông thường, bạn sẽ sử dụng SVM hoặc tăng cấp làm phân loại . Không phải mạng lưới thần kinh không đủ mạnh, thật khó để có được sự đào tạo/thông số đúng. Thông thường bạn gặp khó khăn trong minima địa phương, vv ..
  • Đối với các số liệu dễ bị/cúi/đứng, bạn chắc chắn muốn các trình phân loại khác nhau và sử dụng chúng trong một mô hình hỗn hợp.
  • Bạn yêu cầu một "cách tốt nhất" - phát hiện con người, cho đến nay, không phải là một vấn đề được giải quyết, vì vậy không ai biết cách tốt nhất. Những điều được đề cập ở trên được biết là làm việc khá tốt.
  • Nếu bạn muốn có kết quả tốt, bạn chắc chắn muốn khai thác rằng mục tiêu của bạn là cụ thể - vì vậy, khai thác mà bạn đang cố gắng phát hiện con người trong nhiệm vụ. Phạm vi vị trí mà bạn cần kiểm tra không phải là toàn bộ hình ảnh, các số liệu sẽ nằm gần mặt đất. Điều này cho phép bạn tăng tốc độ tìm kiếm và giảm phát hiện sai. Nếu bạn có thể, giảm chi tiết về kết xuất - ít chi tiết hơn có nghĩa là ít biến đổi hơn, có nghĩa là một vấn đề học tập dễ dàng hơn.

Chú thích:
Đối với nitpickers: Nếu không có một phân loại rất phức tạp.
Bạn cũng có thể sử dụng một chuỗi các trình phân loại được tăng cường để đạt được tốc độ mà không cho quá nhiều tỷ lệ phát hiện.

+0

Tôi sử dụng/huấn luyện HOG như thế nào? Tôi không thể tìm thấy bất kỳ tài liệu nào trên trang web doc của OpenCV. –

7

Sự cố này quá khó đối với ANN bình thường.

ANN không thực sự phù hợp với hình ảnh với nhiều phép biến đổi không gian (tức là con người ở các vị trí khác nhau). Họ có hiệu quả cần phải tìm hiểu từng vị trí có thể một cách độc lập, vì họ không thể khái quát tốt hơn các bản dịch, xoay và chia tỷ lệ, v.v. Ngay cả khi bạn quản lý để làm việc, bạn có thể cần hàng tỷ hình ảnh đào tạo và thời gian đào tạo.

Tốt nhất có lẽ là để đi với một trong hai:

+0

Tôi làm cách nào để xây dựng và đào tạo Haar với OpenCV? –

+0

@gamernb Có một công cụ đi kèm với OpenCV được gọi là opencv_haartraining, bạn có thể sử dụng nó. Nhưng hãy lưu ý rằng việc đào tạo có thể mất nhiều thời gian - và tôi có nghĩa là ngày, không phải hàng giờ. – carnieri

+0

Công cụ có tạo ra kết quả tốt không? Có xứng đáng với thời gian không? –

1

Các tính năng tốt hơn giành được các thuật toán học tập tốt hơn. Nguyên tắc cơ bản trong lựa chọn tính năng là các tính năng tốt nhất tối đa hóa phương sai lớp học và giảm thiểu phương sai intraclass. Trong trường hợp của bạn, các tính năng nên nhấn mạnh sự khác biệt giữa các hình ảnh có chứa hình người và hình ảnh không có, và coi thường sự khác biệt giữa các hình ảnh của cùng một lớp. Ví dụ:

Ví dụ, bạn có thể thử và tìm đường bao hình người, và tính các tính năng dựa trên đường bao.OpenCV đã có một số chức năng để tính toán các đường nét: Moments, GetCentralMoment, NormalizedCentralMoment vv Câu hỏi sau đó sẽ là: cách phân đoạn các hình người từ nền sau để có thể tìm thấy đường bao của chúng? Có một số cách để tiếp cận vấn đề này, chẳng hạn như bằng cách sử dụng phân đoạn kết cấu.

Khi bạn có thể giải quyết vấn đề phân khúc và tính toán các tính năng hợp lý, lựa chọn thuật toán học tập không thực sự quan trọng. Nhưng tại sao không thử một số và xem những gì hoạt động tốt nhất? Hãy xem phần Machine Learning trong tài liệu OpenCV.

0

Nó không rõ ràng với tôi những gì bạn đang cố gắng hoàn thành, nhưng có vẻ như bạn đang cố gắng làm theo dõi trình phát theo thời gian thực (hoặc điều gì đó tương tự) bằng cách sử dụng phương pháp sai. Theo dõi con người là thứ mà người ta mong đợi sẽ được thực hiện thông qua xử lý hình ảnh/video kỹ thuật số hình ảnh con người thực sự.

Tùy thuộc vào mục đích của bạn, theo dõi trình phát là điều không nên thực hiện thông qua xử lý hình ảnh vì có thể rất khó trên CPU. Theo dõi các mô hình trình phát bên trong trò chơi là một thực tế thường được sử dụng cho các ứng dụng gian lận và yêu cầu một mã tiêm vào quá trình trò chơi hoặc là người đàn ông trung gian giữa công cụ trò chơi và trình điều khiển đồ họa. Vì ứng dụng trò chơi luôn biết vị trí của những người chơi khác (ngay cả khi bạn không thể nhìn thấy chúng), người ta có thể tìm kiếm bộ nhớ quá trình cho các tọa độ X, Y, Z của người chơi hoặc chặn các cuộc gọi vẽ đồ họa tìm kiếm vị trí nơi người chơi mô hình sẽ được hiển thị trên màn hình (có thể hơi phức tạp một chút, vì nó đòi hỏi sự hiểu biết cơ bản về các kỹ năng OpenGL/DirectX và gỡ lỗi).

Tôi không chắc liệu tính năng OK của mình có thể chi tiết kỹ thuật trên StackOverflow hay không, nhưng tôi sẽ nói rằng chủ đề này đã được thảo luận chủ yếu trên một số kỹ sư đảo ngược /gian lận như GameDeception.

+0

Toàn bộ lý do mà tôi đang sử dụng xử lý hình ảnh là do đó nó sẽ không được coi là gian lận. Mục tiêu của tôi là tạo ra một AI có thể chơi trò chơi chính xác như một con người. Xem màn hình và điều khiển bộ điều khiển. –

+0

@gamernb Ngay cả khi bạn xây dựng một robot ngồi trên ghế của bạn và chơi cho bạn, nó vẫn sẽ được coi là gian lận. Bất cứ điều gì bạn làm để tự động hóa các nhiệm vụ mà người chơi phải làm theo cách thủ công, đó là gian lận! AI đưa ra quyết định dựa trên xử lý ảnh chụp màn hình sẽ không hiệu quả lắm trên trò chơi FPS động, ngay cả khi bạn sử dụng GPU để xử lý ảnh cho bạn (giả sử bạn thực hiện thành công thuật toán-all-mighty-algorithm-everyone-on) -earth-muốn-to-know). – karlphillip

+0

@gamernb Tôi đã triển khai một vài ứng dụng * có thể tự động hóa các tác vụ trò chơi dựa trên quá trình xử lý ảnh chụp màn hình trong quá khứ. Một số hệ thống chống gian lận làm những gì họ có thể để ngăn bạn chụp ảnh màn hình của trò chơi tự động bằng cách chặn một số cuộc gọi API Win32 nhất định. Dù sao, cuốn sách này thảo luận về một số vấn đề tôi đã chỉ ra, bao gồm một cuộc thảo luận tuyệt vời về những gì được coi là gian lận trò chơi: http://www.amazon.com/Exploiting-Online-Games-Massively-Distributed/dp/0132271915 – karlphillip