OpenCV4.5에 참여한 심층 학습 기반 추적을 조사 중

OpenCV4.5 릴리스 노트에 따르면 심층 학습 기반 추적이 추가되었습니다.

Real-time Single Object Tracking using Deep Learning: #17647

에는 저 PR가 있다.

그 tracking의 이용한 추적 결과의 동영상은, PR가 말하는 바와 같이 아래와 같은 google drive에 있다.
h tps://d ゔぇ. 오, ぇ. 이 m/d리ゔぇ/후ぉl에서 rs/1k7Z_샤 BWK_4 굳 QPx jCGm3P7y2이 FCjY? 우 sp = 샤린 g

이 추적 동영상 중, 카메라의 시점이 고정되어 있고, 대상물 이외가 움직이지 않는 것도 추적이 성공하기 쉽다.
추적이 더욱 어려운 것은 카메라 자체도 움직이고 있는데, 대상물도 움직이고 있는 것이다. 게다가 대상물의 보이는 방법이 프레임과 함께 바뀌어가는 것은 어렵다. 그 밖에도 추적 중에 대상물이 다른 물체에 의해 부분적으로 숨어 버리는 것도 어려운 종류의 추적이다. 그런 어려운 종류의 추적을 할 수 있다.
opencv/samples/dnn$ python siamrpnpp.py  -h
usage: siamrpnpp.py [-h] [--input_video INPUT_VIDEO] [--target_net TARGET_NET]
                    [--search_net SEARCH_NET] [--rpn_head RPN_HEAD]
                    [--backend {0,1,2,3}] [--target {0,1,2,3}]

Use this script to run SiamRPN++ Visual Tracker

optional arguments:
  -h, --help            show this help message and exit
  --input_video INPUT_VIDEO
                        Path to input video file. Skip this argument to
                        capture frames from a camera. (default: None)
  --target_net TARGET_NET
                        Path to part of SiamRPN++ ran on target frame.
                        (default: target_net.onnx)
  --search_net SEARCH_NET
                        Path to part of SiamRPN++ ran on search frame.
                        (default: search_net.onnx)
  --rpn_head RPN_HEAD   Path to RPN Head ONNX model. (default: rpn_head.onnx)
  --backend {0,1,2,3}   Select a computation backend: 0: automatically (by
                        default) 1: Halide2: Intel's Deep Learning Inference
                        Engine (https://software.intel.com/openvino-toolkit)3:
                        OpenCV Implementation (default: 0)
  --target {0,1,2,3}    Select a target device: 0: CPU target (by default)1:
                        OpenCL2: OpenCL FP163: Myriad (default: 0)

pdf SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks

상기 논문으로부터 인용

위 그림의 가로축은 추적 처리의 fps, 세로축은 EAO(Expected Average Overlap)이며, 프레임간의 추적의 양호함을 나타내는 지표다. 좋은 추적 알고리즘은이 그림의 오른쪽 상단에 있습니다.



이 알고리즘에서는, target_net과 search_net의 2개의 네트워크의 모델을 지정한다.
(덧붙여서, Siamese neural network 라는 것은 쌍둥이의 네트워크 구조를 가리키고 있다고 한다.)

--target_net TARGET_NET
--search_net SEARCH_NET

이 안에서 인수로 지정하는 모델 파일은 opencv 의 리포지토리안에는 포함되어 있지 않다. 이 모델 파일의 출처는
siamrpnpp.py의 스크립트에 설명되어 있습니다.
Link to original paper : https://arxiv.org/abs/1812.11703
Link to original repo  : https://github.com/STVIR/pysot

You can download the pre-trained weights of the Tracker Model from https://drive.google.com/file/d/11bwgPFVkps9AH2NOD1zBDdpF_tQghAB-/view?usp=sharing
You can download the target net (target branch of SiamRPN++) from https://drive.google.com/file/d/1dw_Ne3UMcCnFsaD6xkZepwE4GEpqq7U_/view?usp=sharing
You can download the search net (search branch of SiamRPN++) from https://drive.google.com/file/d/1Lt4oE43ZSucJvze3Y-Z87CVDreO-Afwl/view?usp=sharing
You can download the head model (RPN Head) from https://drive.google.com/file/d/1zT1yu12mtj3JQEkkfKFJWiZ71fJ-dQTi/view?usp=sharing

용어집
RPN: Resion Proposal Network
VOT2018 : htps //w w.ゔぉt쨩. 네 t/ゔぉt2018/대박 t. HTML

시행착오 중



현재, 다음과 같은 에러를 만나고 있어 동작을 검증할 수 없다.
 python siamrpnpp.py --input_video 動画ファイル名 --target_net target_net.onnx --search_net search_net.onnx --rpn_head rpn_head.onnx
Traceback (most recent call last):
  File "siamrpnpp.py", line 397, in <module>
    main()
  File "siamrpnpp.py", line 370, in main
    rpn_head = cv.dnn.readNetFromONNX(args.rpn_head)
cv2.error: OpenCV(3.4.11) /tmp/pip-req-build-s_7n4j7p/opencv/modules/dnn/src/onnx/onnx_importer.cpp:261: error: (-204:Requested object was not found) Blob input_1 not found in const blobs in function 'getBlob'

부기



종래의 추적 알고리즘에서는, 특정의 대상물(예, 사람·얼굴, 자동차)에 한정한 추적 알고리즘이기도 하는 경우가 있었다. 또 다른 추적 알고리즘은 주어진 초기 프레임 지정에 대해 피쳐를 픽업하여 피쳐에 가까운 영역을 추적합니다.
특정 대상에 한정된 추적 알고리즘에서는, 그 대상에 고유한 물체다움을 바탕으로 다음 프레임에서의 위치를 ​​구하는 것이 많다. 과거에는 추적 알고리즘이라는 이름으로 검색 영역을 좁힌 것만의 검출 알고리즘이었던 경우가 많다.
초기의 프레임 지정에 대해서 특징이 픽업하는 타입의 추적 알고리즘에서는, 템플릿 매칭을 사용하고 있는 것이 많았다. 다만, 템플릿 매칭을 사용하고 있는 것은, 추적의 프레임을 거쳐 갈 때마다, 원래의 특징과는 닮아도 닮지 않은 것이 되어 버리기 쉽다고 하는 단점이 있었다.

다음 사이트에는 원래 구현이 있습니다.

그 밖에도 이 조직의 github 계정에는 흥미로운 것이 공개되어 있다.
꼭 한번 읽어보자.

좋은 웹페이지 즐겨찾기