Replies: 4 comments 17 replies
-
안녕하세요, 진행상황 공유 및 질문을 위해 글 남깁니다. 현재 face mesh tensor decoder를 개발중입니다. decoder는 아래와 같은 파이프라인을 통해 테스트 해보며 개발하고 있습니다. gst-launch-1.0 v4l2src ! videoconvert ! video/x-raw,format=RGB,width=1280,height=720,framerate=30/1 \
! videocrop left=280 right=280 ! videoscale ! video/x-raw,format=RGB,width=720,height=720,framerate=30/1 \
! tee name=t \
t. ! queue leaky=2 max-size-buffers=2 ! videoscale ! video/x-raw,format=RGB,width=192,height=192 \
! tensor_converter \
! tensor_transform mode=arithmetic option=typecast:float32,add:-127.5,div:127.5 \
! tensor_filter framework=tensorflow-lite model=models/face_landmark.tflite \
! tensor_decoder mode=face_mesh option1=mediapipe-face-mesh option2=720:720 option3=192:192 \
! compositor name=mix sink_0::zorder=2 sink_1::zorder=1 ! videoconvert ! autovideosink \
t. ! queue leaky=2 max-size-buffers=10 ! mix. 이 decoder에서 지원할 계획인 모델은 mediapipe에서 제공하는 모델 2개였습니다. (https://google.github.io/mediapipe/solutions/models.html#face-mesh) 현재 첫번째 모델은 잘 실행되어서 문제없이 개발할 수 있을것으로 보입니다.
#3778 이 이슈와 관련이 있을 것 같은데 혹시 현재 해결방법이 있을까요? 그리고 이건 별개의 질문인데, 현재 테스트하고 있는 파이프라인에서는 인풋 비디오를 전체를 downscale 해서 모델에 넘겨주고 있는데, 이렇게 할 경우 얼굴이 화면 중앙에서 멀어지거나 뒤로 멀어져서 화면에서 차지하는 크기가 작아질 경우 정확도가 많이 떨어집니다. mediapipe에서는 face detection을 통해서 얼굴 위치를 특정한 다음 얼굴 부분을 crop 하여 face mesh 모델에 넘기는것으로 보이는데, nnstreamer (gstreamer) 에서 그런식으로 만드는 것이 가능할까요? |
Beta Was this translation helpful? Give feedback.
-
안녕하세요, 현재까지 구현된 사항은 크게 변하지 않아서 MediaPipe의 Face Landmark의 점들을 눈, 코, 입의 구분선을 그리지 않고 그대로 찍고 있습니다.
이들 가운데 1번과 2번을 우선적으로 구현해보려 합니다. 4번 항목에 대해서 어떤 모델을 지원할 지 조사해보면서 다음 링크들을 찾았습니다.
조사를 통해 알게된 것이 모델들이 어느정도 output양식이 데이터셋을 따라가서 비슷한 것을 발견할 수 있었습니다. (이미지는 첫번째 링크인 cunjian/pytorch_face_landmark 에서 가져온 것이고 MediaPipe는 여기에 나오지 않은 468개의 Landmark를 사용하고 있었습니다) Face Mesh Tensor Decoder에서 Dataset을 argument로 받는 것과 Model을 argument로 받는 것 중에 어느 방식이 더 나을까요? Model의 Output양식이 Dataset을 따라가는 경향이 있어보여서 Dataset을 기준으로 구현하는 것이 나아보이지만 만약 model의 후처리가 Tensor Decoder에서 필요하다면 Dataset을 기준으로 하는 방식은 문제가 있을 듯 합니다. 요약하자면,
|
Beta Was this translation helpful? Give feedback.
-
안녕하세요. gst-launch-1.0 tensor_crop name=crop ! tensor_sink \
v4l2src ! videoconvert ! tee name=t \
t. ! queue ! videoconvert ! autovideosink \
t. ! queue ! tensor_converter ! crop.raw \
appsrc ! crop.info 이런 형태의 어플리케이션을 작성했을 때 (c로 구현했을때와 똑같이) pipeline이 playing이 되지 않고 멈추는 상태가 되는 문제에 막혀 있는 상태입니다. 원래는 face detection 모델을 통과시킨 결과 tensor를 tensor_sink로 내보내서 crop info를 만들고 appsrc로 push 하는 앱을 만들고 있었는데 위 문제에 부딪혀서 문제범위를 좁히고 있었습니다. |
Beta Was this translation helpful? Give feedback.
-
예제 앱 구현에 성공했습니다. https://github.com/Jhuni0123/facemesh_example
카메라로 테스트를 해서 지금 영상을 못 보여드리는게 아쉽네요 아래는 전체 파이프라인입니다. 주황색 부분이 현재 nnstreamer에 없는 부분입니다. |
Beta Was this translation helpful? Give feedback.
-
서울대 창의적통합설계 과제 진행을 위한 토론 및 정보 공유 페이지 입니다.
NNStreamer에 대한 기술적인 질문이나 제안은 Github Issue에 바로 올려주시면 되며,
과제 내용 논의는 본 페이지에서 해주시면 됩니다.
SLACK: nnstreamer.slack.com (nnstreamer 개발자들은 잘 쓰지 않으나, 과제원들끼리 channel 만들어 사용하셔도 됩니다.)
CC: @anyj0527 @jijoongmoon
Beta Was this translation helpful? Give feedback.
All reactions