안녕하세요.
rtpm으로 모델을 injection mode 실행시키려 하고 있습니다.
모델은 ufldv2_quantized를 보드에 올려서 tcnnapp로 실행하였으나 아래와 같이 segmentation fault 에러가 발생했습니다.
아래는 제가 사용한 컴파일된 ufldv2_quantized 폴더와 makefile 공유 드립니다.
https://drive.google.com/drive/folders/1GPCQ3WBeg7z9CbVWLwDgR0CeeCn1xJm4?usp=sharing
감사합니다.
혹시 원인 중 하나일까 싶어서 말씀드립니다.
저는 ENLIGHT_NPU_V20_SW_Toolkit_v0.9.7에서 빌드하였습니다.
감사합니다.
안녕하세요.
실행 명령어 및 로그 공유 부탁 드립니다.
사용하신 rtpm의 버전이 0.9.0이 맞는지도 확인 부탁드립니다.
rtpm 버젼 : rtpm-master-v0.9.0.zip 사용
실행 명령어 : tcnnapp -i rtpm -o rtpm -n ufldv2_quantized/ -w 1920 -h 1080 -W 1920 -H 720
로그파일은 혹시 어디 위치에 생성되는지 알 수 있을까요?
NnDebug.c 파일 63번째줄 void MakeFile()을 보면 /home/root/ 위치에 생성되는 것으로 보이는데, 아무것도 생성되지 않았습니다.
자꾸 재촉드려서 정말 죄송합니다.
항상 질문에 성실히 답변주시고 빠르게 피드백 주셔서 감사드립니다.
ENLIGHT_NPU_V20_SW_Toolkit_v0.9.9도 같은 오류가 발생합니다.
dma_alloc_coherent 관련 에러는 CMA의 Size가 부족하여 발생하는 에러로 예상됩니다.
CMA Size와 NPU에서 사용할 수 있는 working buffer를 확장 후 테스트 부탁 드립니다.
- kernel config에서 CONFIG_CMA_SIZE_MBYTES의 값을 1024로 변경
- {work_path}/build/tcc7500-main/tmp/work/tcc7500_main-telechips-linux/linux-telechips/5.10.177-r0/git/arch/arm64/boot/dts/telechips/tcc750x/tcc750x-npu.dtsi에서 "work-buffer-size"를 "400000000"으로 변경
- 빌드 및 이미지 생성 및 fwdn
전달드리는 패치파일을 참고하여 진행 부탁드립니다.
감사합니다.
답변 감사합니다.
수정해서 이미지 빌드하고 똑같이 실행해보았으나, 같은 에러가 발생하여 모델 사이즈가 너무 커서 메모리에 못올라간다고 판단해 모델 사이즈를 대폭 줄여서 다시 시도해보았으나 아래와 같은 에러가 발생하였습니다.
dma_alloc_coherent 관련 에러는 발생하진 않았으나 network를 로딩하는데 실패하였다고 뜹니다,
제가 모델을 잘못 컴파일 한걸까요, 아래 사이즈를 줄인 모델 공유 드립니다.
https://drive.google.com/drive/folders/1GPCQ3WBeg7z9CbVWLwDgR0CeeCn1xJm4?usp=sharing
혹시몰라 scp할때 나온 로그(용량)도 같이 첨부드립니다.
감사합니다.
안녕하세요.
{build_path}/poky/meta-telechips/meta-nn/recipes-kernel/linux/linux-telechips/에 패치파일을 위치 시키고
{build_path}/poky/meta-telechips/meta-nn/recipes-kernel/linux/linux-telechips_5.10.bbappend 파일의 8번째 줄 밑에 file://0001-increase-CMA-size.patch \를 추가합니다.
이후 빌드 및 이미지 생성, fwdn을 진행하시면 됩니다.
또한 scp로 넘긴 파일 중, net.so가 빠져있습니다. build_network파일에서 net.so 파일을 생성하신 후 폴더로 넣고 폴더를 보드로 전송해야 합니다.
감사합니다.
안녕하세요. 현재 제가 어떤 순서로 rtpm을 실행하고 있는지 먼저 공유드립니다.
-
TOPST Documentation > TOPST AI > Software > SDK > 2. Build guide
$ bitbake telechips-nn-image -f -c make_fai 완료
-
{work_path}/build/tcc7500-main/tmp/work/tcc7500_main-telechips-linux/linux-telechips/5.10.177-r0/git/arch/arm64/boot/dts/telechips/tcc750x/tcc750x-npu.dtsi에서 "work-buffer-size"를 "400000000"으로 변경
(netIdx 0에서 ufldv2를 사용할 예정이라 npu0에만 400000000으로 변경
-
{work_path}/build/tcc7500-main/tmp/work/tcc7500_main-telechips-linux/linux-telechips/5.10.177-r0/git/arch/arm64/configs/tcc750x_defconfig에서 CONFIG_CMA_SIZE_MBYTES의 값을 1024로 변경
-
{build_path}/poky/meta-telechips/meta-nn/recipes-kernel/linux/linux-telechips/에 공유해주신 패치파일을 위치시키고 {build_path}/poky/meta-telechips/meta-nn/recipes-kernel/linux/linux-telechips_5.10.bbappend 파일의 8번째 줄 밑에 file://0001-increase-CMA-size.patch \를 추가
-
SDK 재빌드
$ source poky/meta-telechips/meta-nn/nn-build.sh
$ bitbake telechips-nn-image
$ bitbake telechips-nn-image -f -c make_fai
-
TOPST Documentation > TOPST AI > Software > SDK > 3. Firmware Download
fwdn.bat으로 fwdn
-
ufldv2_quantized 폴더 전송
(make할 때make TARGET=ufldv2로 해서 net.so대신 ufldv2.so 파일 생성후 cp했습니다)
-
host PC에서 rtpm main/py 실행 후 폴더 모드 설정 후 Start
-
보드에서 tcnnapp -i rtpm -o rtpm -n ./ufldv2_quantized -w 1920 -h 1080 -W 1920 -H 720
계속 같은 에러 발생
제가 한 과정 중에 잘못된 부분이 있다면 수정 부탁드리겠습니다.
감사합니다.
보드 환경에서 zcat /proc/config.gz | grep CMA 명령어로
CONFIG_CMA_SIZE_MBYTES=1024
가 적용되었는지 확인 부탁드립니다.
또한 make에서 ufldv2.so로 변경하지말고, net.so로 진행 부탁 드립니다.
감사합니다.
보드 환경에서 zcat /proc/config.gz | grep CMA 확인해본 결과
1024로 변경되지 않은 것이 확인 되었습니다.
그래서 다시 처음부터 위의 과정을 진행하였으나 바뀌지 않았습니다.
혹시 어떤 과정을 잘못했기에 반영되지 않는지 확인 부탁드립니다.
항상 감사드립니다.
감사합니다.
fai 이미지를 만들고, 원래 fwdn하던 이미지를 새로 만든 이미지로 대체해서 fwdn하셨을까요?
모델을 convert할 때 config 에서 -type을 unknown으로 하고 post processing을 기본 형태로 둔다면, NnAppMain.h에서 모델의 출력물을 어디서 가져와야 하는지 궁금합니다.
custom_postproc.c에서 모델의 출력을 아래의 enlight_act_tensor_t 형태로 가져오는데, nnapp에서 직접 가져올 수는 없을까요? -type을 none으로 바꿔서 컴파일하고, npu_info에 제가 임의로 enlight_act_tensor_t resultLane 이런식으로 추가해도 될까요?
제가 임의로 추가했을 경우, NnAppMain.c 271번째 줄
sizeRet = ProtocolmanagerPopReceiveBuffer(&context->baseBufferPtr, &context->baseBuffer, &syncStamp);
에서 멈춥니다.
%%%%%%%
추가적으로, 위에서 segmentation fault 에러가 났던건 make 파일을 수정하여 빌드하니 해결되었으나, 제가 빌드한 nnapp 말고 tcnnapp로 빌드하였을 시에 network만 로드되고 아무일도 일어나지 않습니다. tcnnapp 코드대로면, 아무리 차선 인식 모델이라 한들 추론값이 표시가 안될 뿐 아래와 같은 상태에서 멈추진 않을 것으로 판단되는데, 확인 부탁드립니다.
아래 드라이브 링크에 제가 사용한 모델 공유 드립니다.
(ufldv2_quantized_0.9.7.tar.gz)
https://drive.google.com/drive/folders/1M9pMHWwWcCI3N0YXGz1wh3EewGHBMnHw?usp=drive_link
감사합니다.
안녕하세요.
모델의 추론 결과에 대한 출력물은 outputBuf에서 가져와야합니다.
추가적으로 문의해주신 부분에 먼저 답변 드리겠습니다.
전달 주신 ufldv2_quantized_0.9.7.tar.gz파일을 압축해제 및 AI 보드에 전송하여 RTPM을 실행한 결과 영상이 재생되는 것을 확인했습니다.
제가 사용한 명령어는 아래와 같습니다.
tcnnapp -i rtpm -o rtpm -n ufldv2_quantized
그럼에도 실행되지 않는 경우
- rtpm 재실행 및 이미지 파일 선택, Start 버튼 → 2. AI 보드에서 위 명령어 실행
추가적으로 RTPM에서는 Lane Detection을 지원하지 않습니다. 따라서 Lane Detection 부분은 직접 그려 구현하셔야합니다.
제가 위에서 확인한 부분은 공유해주신 모델을 npu0에 올려 input영상이 rtpm에서 재생되는 것만 확인하였습니다.(lane detection은 지원하지 않으므로 안보임)
감사합니다.