본문으로 건너뛰기

사용자 인터페이스

Insight는 비전 애플리케이션을 검증하는 동안 수행하는 개발 작업, 즉 파일 검사, 미디어 준비, 소스 시작, 출력 확인, 런타임 상태 모니터링을 중심으로 구성되어 있습니다.

작업 공간​

작업 공간 보기에서는 Insight가 볼 수 있는 프로젝트 파일을 탐색할 수 있습니다. Neat 개발 환경에서는 일반적으로 /workspace이며, SDK 외부에서는 Insight가 현재 작업 디렉터리를 대신 사용합니다.

작업 공간을 사용하여 다음을 수행하십시오.

  • 소스 파일, 구성, 모델 아티팩트 및 생성된 출력을 검색하고 탐색합니다.
  • 텍스트, 코드, Markdown, 이미지 및 일부 바이너리 아티팩트를 미리 봅니다.
  • MPK 패키지 아카이브를 수동으로 압축 해제하지 않고 검사합니다.
  • MLA 통계, MPK 매니페스트, 파이프라인 시퀀스 파일과 같은 특수 개발 아티팩트를 봅니다.

작업 공간은 애플리케이션이 여러 빌드 출력과 로그를 생성할 때 특히 유용합니다. 같은 개발 세션에 머문 채로 브라우저에서 해당 아티팩트를 검사할 수 있습니다.

파이프라인 시퀀스 그래프와 작업 공간 아티팩트를 보여 주는 Insight 작업 공간 보기.

미디어 소스​

미디어 소스에서는 애플리케이션 테스트에 사용하는 미디어 파일을 추가하고 관리합니다. 미디어 가져오기를 선택하여 가져오기 대화 상자를 연 다음, 세 가지 소스 중 하나를 선택하십시오.

  • 로컬 파일: 컴퓨터에서 하나 이상의 파일을 선택하거나 끌어서 놓습니다. H.264 MP4 업로드는 원본 프레임 속도를 유지하면서 B 프레임을 비활성화하여 저지연 재생에 맞게 정규화됩니다.
  • 카탈로그: 알려진 자산으로 반복 가능한 테스트를 수행할 수 있도록 SiMa가 선별한 비디오 카탈로그에서 가져옵니다. 자산 유형이나 이름으로 찾아보고, 카탈로그를 검색하고, 해상도, 프레임 속도, 코덱으로 필터링하고, 비디오를 미리 본 다음, 변형 하나를 가져오거나 일치하는 여러 자산을 선택하여 가져올 수 있습니다.
  • YouTube: 일반 YouTube 동영상 URL을 붙여 넣고, 유효성을 확인하여 미리보기를 표시한 다음, 시작 시간, 클립 길이, 출력 프로필을 선택합니다. Insight는 1080p30, 720p30 또는 480p30의 1분, 3분 또는 5분 클립을 지원합니다. 가져온 클립은 B 프레임이 비활성화된 WebRTC 친화적인 H.264로 변환됩니다. 진행 중인 라이브 스트림은 지원되지 않으므로 일반 동영상이나 보관된 라이브 스트림을 사용하십시오.

카탈로그 및 YouTube 가져오기에는 네트워크 접근이 필요합니다. Insight는 미디어를 다운로드하고 준비하는 동안 진행 상황을 표시한 다음, 결과를 로컬 미디어 라이브러리에 저장합니다.

지원되는 비디오 형식에는 mp4, mov, avi, mkv, webm 같은 일반적인 컨테이너 형식이 포함됩니다. Insight는 코덱 인식 스트리밍을 위해 MJPEG 자산과 HEVC/H.265 미디어도 인식합니다. MJPEG 및 HEVC 미디어는 원래의 코덱 동작대로 스트리밍할 수 있도록 보존됩니다.

미디어를 가져온 후에는 파일 목록을 필터링하거나, 선택한 파일을 미리 보거나, 기본 메타데이터를 검사하거나, 더 이상 필요 없는 파일을 삭제할 수 있습니다. 스트리밍 소스를 구성하기 전에 미디어 소스를 사용하여 어떤 파일을 사용할 수 있는지, Insight가 어떤 코덱을 감지했는지, 파일을 읽을 수 있는지 확인하십시오.

비디오 파일 카드에는 라이브러리가 폴더 형태로 표시됩니다. 폴더 행을 선택하면 해당 폴더가 열리고 하위 폴더와 비디오가 나열됩니다. 각 폴더 행에는 하위 폴더를 포함하여 해당 폴더에 스트리밍 가능한 비디오가 몇 개 있는지 표시되며, 비디오 파일 제목 옆에는 현재 있는 폴더에 대해 같은 개수가 표시됩니다. 경로 표시줄(브레드크럼)은 현재 위치를 보여 줍니다. 비디오를 포함하여 경로 표시줄의 아무 부분이나 클릭하면 해당 단계로 돌아갈 수 있습니다. 필터는 현재 폴더와 그 하위의 모든 항목을 검색하며, 일치하는 항목을 현재 폴더 기준 상대 경로와 함께 표시합니다. Insight가 스트리밍할 수 없는 파일은 스트리밍 불가 태그와 함께 흐리게 표시되어 계속 미리 보거나 삭제할 수 있습니다. 스트리밍 소스의 할당 대화 상자에서는 이러한 파일이 숨겨지며, 스트리밍 가능한 비디오가 없는 폴더는 흐리게 표시됩니다. 폴더 이름은 사용자가 직접 정하는 일반적인 레이블일 뿐입니다(예: 30FPS/ 또는 120FPS-720p-h264/). Insight는 폴더 이름에서 비디오 설정을 읽지 않습니다. Neat SDK에서 라이브러리는 /workspace/.insight-media/에 위치하므로 SDK를 다시 시작해도 유지됩니다. 업로드한 파일은 항상 라이브러리 최상단에 저장됩니다.

선택한 비디오 미리보기와 미디어 메타데이터를 보여 주는 Insight 미디어 소스 보기.

미디어 소스는 가져오기, 파일 선택, 미리보기, 메타데이터 검사, 삭제 작업을 하나의 보기에 결합합니다. 가져온 카탈로그 자산은 catalog/ 아래에, YouTube 클립은 youtube/ 아래에 저장되므로 파일이 어떤 경로로 라이브러리에 들어왔는지 알 수 있습니다.

카메라 미리보기​

브라우저를 실행하는 컴퓨터에 연결된 웹캠이나 휴대폰 카메라는 스트리밍하기 전에 여기에서 미리 볼 수 있습니다. 카메라 아래에서 카메라 접근 활성화를 선택하고 브라우저가 요청하면 접근을 허용합니다. 카메라 목록은 버튼 아래에 표시됩니다. 카메라를 선택하면 선택한 파일 대신 그 카메라의 라이브 비디오가 카메라 이름 및 브라우저가 보고하는 스트림 정보와 함께 표시됩니다.

  • 활성 스트림: 카메라가 지금 보내고 있는 해상도와 프레임 속도, 그리고 그것이 카메라 자체 모드인지 브라우저가 자르거나 크기를 조정한 것인지를 보여 줍니다.
  • 카메라 기능: 카메라가 보고하는 최대 너비, 최대 높이, 최고 프레임 속도를 각각 따로 보여 줍니다. 카메라가 가진 모드가 아니라 한계값입니다. 너비와 높이 모두 1920을 보고하는 카메라라도 1920×1920으로 촬영한다는 뜻은 아닙니다.

브라우저가 보고하지 않는 값은 표시하지 않습니다. 브라우저는 픽셀 형식을 보고하지 않으므로 픽셀 형식은 표시되지 않습니다.

미리보기는 브라우저 안에서만 실행됩니다. 스트리밍 슬롯을 할당하거나 스트림을 시작 또는 중지하지 않습니다. 카메라를 스트리밍하려면 스트리밍에서 슬롯에 할당합니다(아래 웹캠을 소스로 사용 참조). 이 브라우저 탭이 이미 그 카메라를 게시하고 있으면 미리보기는 카메라를 다시 열지 않고 그 캡처를 보여 주므로 스트림 설정이 바뀌지 않습니다. 다른 카메라나 파일을 선택하거나, 미리보기 중지를 선택하거나, 미디어 소스를 벗어나거나, 탭을 닫으면 카메라가 해제됩니다.

카메라를 미리 볼 수 없으면 패널에 이유가 표시됩니다.

표시되는 내용조치 방법
카메라 권한이 거부됨브라우저 설정에서 Insight 사이트의 카메라 접근을 허용한 다음 다시 시도를 선택합니다.
카메라를 시작할 수 없음다른 애플리케이션이 카메라를 사용 중입니다. 해당 애플리케이션을 닫은 다음 다시 시도를 선택합니다.
해당 카메라를 더 이상 사용할 수 없음 또는 카메라가 비디오 전송을 멈춤카메라가 분리되었습니다. 다시 연결한 다음 카메라 새로 고침을 선택합니다.
이 페이지가 카메라 접근을 허용하지 않는 프레임에 포함되어 있음Insight가 편집기 탭 같은 다른 페이지 안에 표시되고 있으며, 그 페이지가 카메라 접근을 Insight에 넘겨주지 않습니다. Insight를 별도의 브라우저 탭에서 엽니다.

스트리밍 소스​

스트리밍 소스 보기는 업로드된 미디어 파일을 라이브 소스 슬롯으로 바꿉니다. 각 소스 슬롯은 RTSP URL을 제공할 수 있습니다.

rtsp://127.0.0.1:8554/src1
rtsp://127.0.0.1:8554/src2
rtsp://127.0.0.1:8554/src3

이 URL은 Insight와 같은 SDK 컨테이너에서 실행되는 애플리케이션에 맞는 주소입니다. 애플리케이션이 DevKit 또는 다른 외부 머신에서 실행되는 경우에는 SDK 호스트 IP 주소와 neat --json의 매핑된 rtsp.tcp 호스트 포트를 사용하십시오.

Insight는 할당된 미디어에 따라 코덱과 전송 옵션을 선택합니다.

  • H.264 미디어는 RTSP를 통해 H.264로 스트리밍됩니다.
  • HEVC/H.265 미디어는 RTSP를 통해 H.265로 스트리밍됩니다.
  • MJPEG 미디어는 RTSP를 통해 MJPEG으로, 또는 HTTP를 통해 멀티파트 MJPEG으로 스트리밍할 수 있습니다.

코덱은 선택한 미디어에 따라 결정되며 UI에서 수동으로 변경하지 않습니다. RTSP를 통한 MJPEG은 RTP 호환 MJPEG으로 인코딩되며, HTTP MJPEG은 카메라 방식의 HTTP 테스트를 위해 MJPEG 프레임을 그대로 보존할 수 있습니다.

소스 행의 파일 필드를 선택하면 srcN 소스 대화 상자가 열립니다. 비디오 파일 탭은 미디어 소스와 동일한 폴더 탐색기를 제공합니다. 비디오를 선택한 다음 할당을 클릭하거나, 할당을 해제하려면 지우기를 클릭하십시오. 카메라 탭에서는 대신 카메라 중 하나를 할당하고, 스트림 URL 탭에서는 네트워크 스트림을 끌어옵니다(아래 참조). 개별 소스를 시작 및 중지하고, 소스 슬롯 간에 고유한 파일을 자동으로 할당하고, 여러 소스를 한 번에 시작하고, 모든 스트림을 중지하고, 애플리케이션 또는 테스트 도구에서 사용할 수 있도록 스트림 URL을 복사할 수 있습니다.

이 보기는 객체 검출, 세그멘테이션, 추적, 분류 또는 GenAI 비전 애플리케이션을 위해 반복 가능한 입력 스트림이 필요할 때 유용합니다.

할당된 소스 슬롯과 소스 미리보기를 보여 주는 Insight 스트리밍 소스 보기.

스트리밍 소스 보기에서는 미디어 파일을 소스 슬롯에 할당하고, 스트림을 시작하거나 중지하고, 활성 스트림 URL을 복사하고, 애플리케이션에 연결하기 전에 선택한 소스를 미리 볼 수 있습니다.

웹캠을 소스로 사용​

브라우저를 실행하는 컴퓨터에 연결된 웹캠을 라이브 소스로 사용할 수 있으므로, 먼저 파일을 보드에 복사하지 않고도 실제 카메라로 애플리케이션을 테스트할 수 있습니다. 카메라를 먼저 확인하려면 미디어 소스에서 미리 봅니다(위의 카메라 미리보기 참조).

  1. 소스 슬롯의 파일 필드를 선택하고 srcN 소스 대화 상자를 카메라로 전환합니다.
  2. 해당 탭에서 또는 Media Sources의 카메라 아래에서 카메라 접근 활성화를 선택합니다. 브라우저가 카메라 권한을 요청하며, Insight는 대신 권한을 부여할 수 없습니다. 접근을 허용하면 탭에 카메라 목록이 표시됩니다.
  3. 카메라, 해상도, 비트레이트를 선택하고 할당한 다음 시작을 선택합니다. 행에 [CAM] 배지가 표시되고(비디오 파일은 [VID]), 브라우저가 카메라를 Insight에 게시하며 슬롯 상태가 Live로 표시됩니다.
  4. URL 복사로 RTSP URL을 얻고 파일 소스와 동일하게 애플리케이션에 지정합니다.

해상도는 기본적으로 카메라에 1920x1080, 30 fps를 요청합니다. 대신 3840x2160부터 640x480까지, 최대 60 fps의 다른 크기와 속도 또는 카메라 기본값을 선택할 수 있습니다. 목록에는 카메라가 보고하는 최대 크기와 프레임 속도 안의 모드만 표시됩니다. 선택한 모드가 없는 카메라는 가장 가까운 모드로 보냅니다. 컴퓨터나 네트워크가 바쁠 때 브라우저는 크기를 유지하고 프레임 속도를 낮춥니다. 비트레이트는 브라우저가 카메라를 보내는 최대 속도를 정합니다. 자동은 해상도에 맞춰 조정되며 1920x1080, 30 fps에서 8.1 Mbps이고, 2~32 Mbps 중에서 선택할 수도 있습니다. Insight는 스트림 URL용으로 카메라를 다시 인코딩하므로 스트림의 비트레이트는 다를 수 있습니다. 할당된 카메라의 해상도나 비트레이트를 바꾸려면 대화 상자를 다시 열고 다른 해상도나 비트레이트를 선택한 다음 할당, 시작을 차례로 선택합니다.

카메라가 연결되고 분리될 때마다 카메라 목록이 갱신됩니다. 웹캠 소스는 비디오만 H.264로 게시합니다.

소스 목록 옆의 미리보기는 캡처가 활성화된 동안 카메라 피드를 보여 줍니다. 이는 보드가 수신한 비디오가 아니며, 수신 애플리케이션이 겪는 지연도 보여 주지 않습니다. 게시에 실패하면 캡처가 중지되고 미리보기가 지워집니다.

중지를 선택하거나, 카메라를 분리하거나, 브라우저 탭을 닫으면 스트림이 종료되고 슬롯이 Idle로 돌아갑니다. 모두 중지, 초기화, 자동 할당도 해당 슬롯을 회수하므로 모든 웹캠을 해제합니다. 초기화와 자동 할당은 카메라 선택도 지우므로 이후에 카메라를 다시 선택하십시오. 웹캠이 게시하는 동안에는 브라우저 탭을 열어 두어야 합니다. 브라우저 탭이 Insight로 비디오를 보내는 구성 요소이기 때문입니다. 같은 이유로 Insight가 다시 시작된 후에는 웹캠 소스가 Live로 복원되지 않습니다. 카메라를 다시 선택하고 다시 시작하십시오.

웹캠 시작에 실패하면 메시지에 원인이 표시됩니다.

표시되는 내용조치 방법
카메라 권한이 거부됨브라우저 설정에서 Insight 사이트의 카메라 접근을 허용한 다음, 미디어 소스 → 카메라에서 카메라 접근을 다시 활성화합니다.
해당 카메라를 더 이상 사용할 수 없음카메라가 분리되었습니다. 카메라 새로 고침을 선택하고 카메라를 다시 선택합니다.
카메라를 시작할 수 없음다른 애플리케이션이 카메라를 사용 중입니다. 해당 애플리케이션을 닫고 다시 시도합니다.
웹캠 게시 엔드포인트에 연결할 수 없음브라우저가 게시 리스너에 연결할 수 없습니다. webrtcWhip 엔드포인트의 인증서를 신뢰하도록 설정하고(URL을 한 번 열어 인증서를 수락), 포트에 접근할 수 있는지 확인합니다(포트 및 네트워크 동작 참조).
웹캠 게시가 거부됨Insight가 스트림을 수락할 수 없습니다. webrtcWhip 포트에 접근할 수 있는지(포트 및 네트워크 동작 참조), 그리고 브라우저가 Insight 인증서를 신뢰하는지 확인합니다.

브라우저는 안전하다고 판단하는 페이지에서만 카메라 접근을 허용합니다. 카메라 접근 활성화를 선택해도 아무 반응이 없으면 먼저 HTTPS로 Insight를 열고 인증서를 신뢰하도록 설정하십시오. 설치 및 업그레이드를 참조하십시오.

외부 스트림​

RTSP, WebRTC(WHIP) 또는 SRT 도구라면 무엇이든 소스 슬롯에 직접 게시할 수 있습니다. 예를 들어 ffmpeg로 호스트의 카메라를 캡처해 다음과 같이 게시합니다.

ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset veryfast -tune zerolatency -g 30 -pix_fmt yuv420p \
-f rtsp -rtsp_transport tcp rtsp://<insight-host>:8554/src2

SDK 컨테이너는 RTSP 포트(8554)와 WHIP 포트(webrtcWhip, 8889)를 매핑합니다. SRT 게시자는 컨테이너 내부 또는 DevKit 네이티브 설치 환경에서 실행해야 합니다.

Insight는 약 2초 이내에 이러한 슬롯을 외부로 표시합니다. 행은 읽기 전용이 되고, 칩에는 프로토콜, 게시자 주소, 그리고 프로브가 끝나면 해상도와 프레임 속도가 표시됩니다. 스트림이 Neat 파이프라인에서 디코딩할 수 없는 코덱(H.264, H.265, MJPEG 이외의 코덱)을 사용하면 코덱 셀이 호박색으로 바뀌고 경고가 표시됩니다. URL 복사는 계속 사용할 수 있으며, 애플리케이션은 게시 프로토콜과 관계없이 평소처럼 rtsp://…/srcN을 읽습니다.

먼저 게시한 쪽이 슬롯을 차지합니다. 외부 슬롯에서 파일을 시작하거나 Insight가 이미 스트리밍 중인 슬롯에 게시하면, 실행 중인 스트림을 조용히 대체하는 대신 거부됩니다. 외부 행의 사각형 중지 아이콘인 인수를 누르면 확인 후 외부 게시자(및 해당 수신자)의 연결이 끊기고, 슬롯은 이전 파일 할당을 유지한 채 유휴 상태로 돌아갑니다. 자동으로 다시 연결하는 게시자는 유휴 슬롯을 다시 차지할 수 있으므로, 슬롯을 파일용으로 재사용하려면 먼저 외부 도구를 중지하십시오.

소스 미리보기 패널은 외부 슬롯을 소스 자체의 프레임 속도로 실시간 표시할 수 있습니다. 미리보기는 기본적으로 꺼져 있으며(브라우저별로 기억됨), 꺼져 있는 동안에는 아무것도 디코딩하지 않습니다. 다른 외부 슬롯을 선택하면 새 스트림의 첫 프레임이 도착할 때까지 "연결 중" 표시기가 나타납니다. 이 대기 시간은 대부분 게시자의 다음 키프레임까지의 시간이므로, 미리 볼 스트림은 키프레임 간격을 약 1초로 설정하십시오(위 예시에서는 30fps에서 -g 30, 인코더 기본값은 몇 초인 경우가 많음). SDK 컨테이너 내부에서는 컨테이너 외부의 게시자와 수신자가 실제 IP 대신 Docker 브리지 주소로 표시됩니다.

자동 할당, 일괄 시작, 모두 중지, 재설정은 외부 스트림을 전혀 건드리지 않으며, 결과 메시지에 건너뛴 슬롯이 나열됩니다. 재설정은 여전히 외부 슬롯을 포함한 모든 슬롯의 저장된 할당을 지웁니다.

 외부 슬롯 두 개가 있는 Insight 스트리밍 소스 뷰. 그중 하나는 지원되지 않는 코덱으로 표시되어 있습니다.

외부 슬롯에는 게시자, 그 주소, 프로브한 스트림 형식이 표시됩니다. Neat 파이프라인에서 스트림을 디코딩할 수 없으면 코덱 셀이 호박색으로 바뀝니다.

끌어온 스트림​

네트워크에 이미 존재하는 스트림(일반적으로 IP 카메라)을 슬롯으로 끌어올 수 있습니다. 유휴 슬롯의 파일 버튼을 클릭하고 대화 상자를 스트림 URL로 전환한 다음, 카메라의 rtsp:// 또는 rtsps:// URL과 카메라에 필요한 경우 사용자 이름과 비밀번호를 입력하고 끌어오기를 누르십시오. Insight는 mediamtx가 스트림을 끌어와 rtsp://…:8554/srcN으로 변경 없이 전달하도록 구성합니다. 디코딩이나 재인코딩은 전혀 하지 않으며, 애플리케이션은 다른 슬롯과 마찬가지로 이 슬롯을 읽습니다.

프레임이 도착하면 행에 청록색으로 끌어옴이 표시되며, 칩에는 소스 호스트, 해상도, 프레임 속도가, 코덱 셀에는 코덱이 표시됩니다. 그 전에는 **연결 중…**이 표시됩니다. 카메라에 연결할 수 없으면 행이 호박색 연결 불가로 바뀌고 이유가 함께 표시됩니다. mediamtx가 계속 재시도하며, 카메라가 돌아오면 행은 저절로 끌어옴 상태로 돌아갑니다. 끌어오기를 누를 때 카메라가 사용자 이름이나 비밀번호를 거부하면 대화 상자에 메시지가 표시되고 슬롯은 변경되지 않습니다. 행에 빨간색으로 인증 실패가 표시되는 것은 카메라가 나중에 자격 증명을 거부하기 시작한 경우(예: 처음에는 연결할 수 없었던 후)뿐이며, 그 상태로 유지됩니다. 중지를 누른 다음 올바른 자격 증명으로 다시 끌어오십시오. 비밀번호는 메모리에만 보관됩니다. Insight는 비밀번호를 디스크에 쓰거나, 다시 표시하거나, 로그에 기록하지 않으며, 끌어온 슬롯은 Insight를 다시 시작한 후 복원되지 않습니다.

행의 중지를 누르면 끌어오기가 해제되고 슬롯은 이전 파일 할당을 유지한 채 유휴 상태로 돌아갑니다. 끌어온 슬롯에 파일을 할당하거나, 시작하거나, 인수하는 작업은 거부됩니다. 모두 중지와 재설정은 Insight가 시작한 것이므로 끌어오기도 중지하며, 외부 스트림만 실행 중인 상태로 남깁니다. 자동 할당과 일괄 시작은 외부 슬롯과 마찬가지로 끌어온 슬롯을 건너뛰고 결과 메시지에 나열합니다.

소스 미리보기 패널은 끌어온 슬롯에서도 외부 슬롯과 똑같이 작동합니다(미리보기는 기본적으로 꺼져 있음). 이번 릴리스에서는 자체 서명 인증서를 사용하는 rtsps:// 카메라가 인증서 메시지와 함께 연결 불가로 보고됩니다.

프레임 속도​

소스 미리보기 패널에는 선택한 소스의 파일 이름 아래에 FPS 컨트롤이 표시되며, 속도를 설정하면 소스 행의 파일 이름 옆에 해당 속도가 표시됩니다. 비디오를 할당하면 컨트롤에 파일에서 감지된 프레임 속도가 표시됩니다. − 및 + 버튼을 사용하여 5 단위로 변경하거나 1 이상의 정수를 입력하십시오. Native는 소스를 파일의 원본 프레임 속도로 되돌립니다. 소스가 원본 속도로 스트리밍하는 동안에는 파일 옆의 속도와 렌디션 안내가 회색으로 표시됩니다. 파일 해상도에서 인코더가 도달할 수 없는 속도(H.264 또는 H.265의 최고 레벨을 초과하는 속도)는 소스를 시작할 때 거부되며, 한도를 알려 주는 메시지가 표시됩니다.

값이 파일의 원본 프레임 속도와 다르면 소스를 시작할 때 먼저 렌디션이 생성됩니다. 렌디션은 Insight 미디어 카탈로그와 동일한 인코딩 규칙(H.264 baseline 또는 H.265 main, yuv420p, B 프레임 없음, 참조 프레임 1개, 1초 단위의 닫힌 GOP)에 따라 요청된 고정 프레임 속도로 다시 인코딩한 비디오 사본입니다. 행에는 인코딩 중이 표시되고 미리보기 패널에 진행률 표시줄이 나타난 다음, 라이브 상태가 되어 렌디션을 스트리밍합니다. 렌디션은 미디어 디렉터리의 .renditions/ 아래에 저장되고 renditions.json에 기록되므로, 다음에 시작할 때(Insight를 다시 시작한 후 포함) 다시 인코딩하지 않고 재사용됩니다. 소스 파일을 내용이 다른 파일로 교체하면 이전 렌디션은 무효화됩니다. 소스 파일을 삭제하면 해당 렌디션도 삭제됩니다. 바이트 단위로 동일한 파일(예: 다른 이름의 복사본)은 하나의 렌디션을 공유하며, 그 렌디션은 마지막 파일이 삭제되거나 교체될 때까지 유지됩니다. 인코딩이 실패하면 소스 파일은 변경되지 않으며 부분적으로 생성된 렌디션은 남지 않습니다.

Insight는 렌디션을 한 번에 하나씩 인코딩합니다. 다른 렌디션을 인코딩하는 동안에는 미리보기 패널에 Waiting for another rendition to finish encoding… 메시지가 표시되며, 다른 렌디션의 인코딩이 끝나는 즉시 인코딩이 시작됩니다. 인코딩하기 전에 Insight는 미디어 디렉터리의 여유 공간을 확인합니다. 렌디션의 예상 크기에 1 GB의 여유 공간을 더한 만큼이 필요하며, 그렇지 않으면 필요한 공간을 알려 주는 메시지와 함께 시작이 실패합니다. 렌디션을 지우거나 공간을 확보한 다음 소스를 다시 시작하세요.

MJPEG 소스는 프레임 속도를 변경할 수 없으므로 해당 컨트롤이 비활성화됩니다.

스트리밍 소스 도구 모음의 렌디션 지우기는 캐시된 모든 렌디션을 삭제합니다(재생 중인 소스가 사용하는 렌디션 제외). 삭제된 렌디션은 다음에 시작할 때 다시 생성됩니다.

비디오 뷰어​

비디오 뷰어는 비디오 포워더에서 오는 저지연 WebRTC 스트림을 표시합니다.

채널 N의 경우:

video: UDP 9000 + N
metadata: UDP 9100 + N

예를 들어 채널 0은 비디오 UDP 9000과 메타데이터 UDP 9100을 사용하고, 채널 1은 비디오 UDP 9001과 메타데이터 UDP 9101을 사용합니다.

송신자가 DevKit 또는 다른 외부 머신에서 실행되는 경우 neat --json의 매핑된 videoUDP 및 metadataUDP 호스트 포트 범위를 사용하십시오. 채널 계산 방식은 같지만 시작 포트는 다를 수 있습니다.

뷰어는 객체 감지, 분류, 자세 추정, 분할 및 추적을 포함한 일반적인 비전 출력에 대한 메타데이터 오버레이를 렌더링할 수 있습니다. 메타데이터 유형별 Show Overlay 스위치로 신뢰도 임계값이나 스타일을 바꾸지 않고 출력을 숨길 수 있습니다. 자세 추정에서는 관절 마커와 랜드마크 이름도 따로 표시할 수 있습니다. 프레임 연동 데이터는 채널별 보조 패널에도 표시할 수 있으며 기본 BlazePose 3D가 첫 번째 렌더러입니다. 여러 보조 뷰는 탭으로 표시되고 패널을 축소, 확대 또는 숨길 수 있습니다. 프로토콜은 보조 시각화를 참조하십시오. 뷰어 설정에서 신뢰도 임계값, ROI 표시, 추적 기록 및 동기화 버퍼링을 조정할 수 있습니다. 비디오 프레임에 특정 유형의 메타데이터가 없으면(예: 추론이 비디오보다 느리게 실행되는 경우) 뷰어는 해당 유형의 마지막 오버레이를 최대 200ms 동안 계속 그립니다. 같은 유형의 새 메시지가 오면 객체가 없는 메시지라도 이를 대체합니다. 메타데이터 타임스탬프는 소스 PTS 밀리초를 사용하며 사용할 수 없는 경우 생략됩니다.

JPEG(RTP 페이로드 유형 26)를 수신하는 채널도 같은 방식으로 표시됩니다. Insight는 각 JPEG 프레임을 변경하지 않고 브라우저로 중계하며, 타일 상태에는 JPEG가 표시되고 오버레이는 동일한 타임스탬프를 따릅니다. H.264 프레임과 마찬가지로 각 프레임은 오버레이가 먼저 도착할 수 있도록 Video Sync Buffer 시간 동안 보류됩니다. ROI 편집기 미리 보기는 아직 JPEG 채널을 표시하지 않으며, Video Viewer에서만 볼 수 있다고 알려 줍니다.

General 설정 탭에는 Orientation 설정(None, Mirror, Flip Vertical, Rotate 180°)이 있습니다. 이 설정은 모든 코덱에 대해 뷰어에서만 화면과 오버레이(레이블 포함)의 방향을 바꿉니다. 스트림과 메타데이터 좌표는 바뀌지 않습니다.

전역 설정과 채널 설정​

뷰어 설정은 두 가지 범위로 나뉩니다. 뷰어 페이지의 설정 버튼은 전역 설정을 엽니다. 타일 상태 표시줄의 오른쪽 끝에 있는 버튼은 해당 채널의 설정을 열며, 대화 상자의 제목에 채널 이름이 표시됩니다.

채널은 전역 설정을 따릅니다. 채널에 자체 값을 지정하려면 해당 채널의 설정을 열고, 설정 옆의 Own value를 켠 다음 값을 설정하고 Save를 선택합니다. 채널이 직접 설정한 값은 전역 값보다 우선합니다. Own value를 다시 끄면 채널은 전역 값을 따릅니다. 클래스 색상은 항목별로 적용됩니다. 채널 대화 상자는 전역 항목을 from global로 표시하며, Override는 그중 하나를 채널의 항목으로 복사합니다.

전역 대화 상자에서 설정 행 끝에 있는 호박색 경고 아이콘은 채널이 자체 값을 설정한 설정을 나타내며, 툴팁에 해당 채널의 수가 표시됩니다. 아이콘을 선택하면 그 채널이 값과 함께 나열됩니다. Use global value는 Save 없이 채널의 자체 값을 즉시 제거합니다. **Reset all channels to the global settings…**는 확인 후 모든 채널의 자체 값을 제거하며, ROI는 유지됩니다.

설정은 브라우저에 저장됩니다. 브라우저나 컴퓨터 간에 공유되지 않습니다.

메타데이터 색상​

오버레이는 복잡한 프레임에서도 서로 다른 식별 대상이 구분되도록 40가지 색상으로 이루어진 하나의 공유 팔레트에서 색상을 선택합니다. 처음 20가지 색상이 가장 뚜렷하게 구분되며, 나머지 20가지 색상은 동시에 20개가 넘는 식별 대상에 색상이 필요할 때만 사용됩니다. 모든 채널에 걸친 클래스, 또는 한 채널의 트랙이나 자세가 이에 해당합니다. 메타데이터 유형마다 무엇을 식별 대상으로 볼지 정의합니다.

메타데이터 유형색상 기준같은 색상을 공유하는 부분
object-detection클래스 label박스, 레이블, 신뢰도
segmentation클래스 label마스크, 윤곽선, 박스, 레이블
classification클래스 label각 레이블 줄
tracking트랙 id박스, 레이블, 기록 궤적
pose-estimation자세 id키포인트, 스켈레톤, 키포인트 이름, 박스, 레이블

색상은 식별 대상이 처음 나타날 때 할당됩니다. 클래스 레이블은 모든 채널에서 하나의 할당을 공유하므로 bicycle은 모든 타일에서 같은 색상이 되고, person은 감지, 분할, 분류에서 모두 같은 색상으로 표시됩니다. 재정의는 메타데이터 유형별로 적용됩니다. 객체 감지에서 person에 대한 항목을 지정해도 분할이나 분류의 person 색상은 바뀌지 않습니다. 트랙과 자세는 채널별로 할당됩니다. id는 하나의 스트림 안에서만 고유하기 때문입니다. 채널이 다시 연결되면 이들의 색상은 처음부터 다시 할당됩니다. 식별 대상은 어느 채널에서든 화면에 있는 동안 자신의 색상을 유지합니다. 화면에서 사라진 지 5초가 넘으면 그 색상은 새로운 식별 대상에 넘겨질 수 있습니다. 팔레트가 담을 수 있는 것보다 많은 식별 대상이 화면에 있으면, 새로운 식별 대상은 화면에 보이는 대상의 색상을 빼앗는 대신 가장 오래전에 그려진 식별 대상의 색상을 공유합니다.

id가 없는 트랙과 자세는 하나의 중립 색상으로 그려집니다. 사람별 또는 트랙별 색상을 원하는 송신자는 id를 포함해야 합니다.

객체 감지 및 분할 설정에는 선택적으로 클래스별 재정의를 지정할 수 있습니다. 레이블에 대한 항목은 해당 클래스의 색상과 선 스타일을 고정합니다. 레이블이 default인 항목은 자체 항목이 없는 모든 클래스의 색상을 고정합니다. 항목이 하나도 없으면 모든 클래스의 색상이 자동으로 지정됩니다.

General 탭의 Line Width는 모든 오버레이 선이 그려지는 두께를 설정합니다. 감지 박스, 분할 윤곽선, 트랙 박스와 궤적, 자세 스켈레톤이 모두 해당됩니다. 기본값은 3px이며 1px부터 10px까지 설정할 수 있습니다. 클래스별 항목의 Thin 또는 Thick은 여전히 해당 클래스의 선 두께를 설정합니다. 다른 설정과 마찬가지로 채널은 자체 값을 사용할 수 있습니다.

메타데이터 지연​

오버레이는 비디오 프레임이 표시되는 시점까지 해당 메타데이터가 브라우저에 도착한 경우에만 그려집니다. 뷰어는 메타데이터가 도착할 시간을 주기 위해 비디오 동기화 버퍼(기본값 300ms)만큼 비디오를 지연시킵니다. 버퍼가 허용하는 것보다 늦게 메타데이터를 보내는 애플리케이션은 비디오와 메시지 속도가 정상으로 보이더라도 오버레이가 표시되지 않습니다.

최근 메시지의 절반 이상이 해당 프레임보다 늦게 도착하면 타일의 상태 표시줄에 Metadata late 칩이 표시됩니다. 칩을 선택하면 다음 값을 확인할 수 있습니다.

값의미
Arrives after its frame프레임이 표시된 후 해당 메타데이터가 도착하기까지 걸린 시간으로, 이 브라우저에서 측정한 값입니다.
Video sync buffer이 채널에 적용 중인 버퍼입니다.
Late messages최근 메시지 중 너무 늦게 도착해 그려지지 못한 메시지의 비율입니다.

패널은 측정된 지연을 감당할 수 있는 값으로 버퍼를 늘리는 두 가지 방법을 제공합니다.

버튼효과
Raise for this channel to N ms이 채널의 비디오 동기화 버퍼만 설정합니다. 다른 채널은 기존 설정을 유지합니다.
Raise globally to N ms전역 비디오 동기화 버퍼를 설정합니다. 이 값은 자체 값이 없는 모든 채널에 적용됩니다. 이 채널에 자체 값이 있었다면 그 값은 제거됩니다.
Use global value (V ms)전역 비디오 동기화 버퍼가 이미 측정된 지연을 감당할 수 있을 때 Raise globally to N ms 대신 표시됩니다. 이 채널의 자체 값을 제거하며, 전역 값은 변경되지 않습니다.

영향을 받는 모든 채널의 비디오는 늘어난 시간만큼 더 지연됩니다. 뷰어가 버퍼를 스스로 변경하는 일은 없으며, 패널이 전역 버퍼를 낮추는 일도 없습니다. 브라우저가 더 큰 버퍼로 점진적으로 전환하므로, 변경 후 뷰어는 몇 초 기다린 다음 지연 여부를 다시 판단합니다.

늦게 도착하는 메시지가 10분의 1 미만이 되면 칩이 사라집니다. 필요한 버퍼가 최대값인 4000ms를 초과하는 경우 패널에 버튼이 표시되지 않으며, 애플리케이션이 메타데이터를 더 일찍 보내야 합니다. 메타데이터가 표시된 프레임에 속하지 않아 지연을 측정할 수 없는 경우에도 패널은 그 사실을 알리고 버튼을 표시하지 않습니다.

인코딩된 입력 스트림을 변경 없이 전달하고 디코딩과 추론이 끝난 후에야 메타데이터를 보내는 애플리케이션이 대표적인 경우입니다. 이러한 애플리케이션에서는 비디오가 추론을 기다리지 않기 때문입니다.

비디오 뷰어를 사용하여 다음을 확인하십시오.

  • 애플리케이션이 예상된 채널로 비디오를 전송하고 있습니다.
  • 메타데이터가 해당 메타데이터 채널을 통해 전송되고 있습니다.
  • 오버레이가 비디오 프레임과 정렬됩니다.
  • 보조 뷰가 해당 비디오 프레임과 함께 지워지고 업데이트됩니다.
  • 브라우저에서 재생이 원활하게 이루어집니다.

4채널 WebRTC 그리드를 보여 주는 Insight 비디오 뷰어.

비디오 뷰어는 한 번에 하나 이상의 채널을 표시할 수 있으며, 대규모 다중 스트림 테스트를 위한 페이지 매김과 채널 선택 컨트롤을 제공합니다.

주변 장치​

Peripherals(주변 장치) 페이지는 보드에 연결된 카메라와 마이크를 나열하고 각 장치가 보고하는 내용을 보여 줍니다. 장치는 보드의 SiMa Sentinel이 검색하고, Insight는 Sentinel의 카탈로그를 읽습니다. 검색은 장치 정보만 읽으며 장치를 열거나 스트리밍하지 않으므로, 장치는 애플리케이션에서 계속 사용할 수 있습니다. 장치를 여는 것은 카메라 미리 보기와 마이크 테스트뿐이며, 실행되는 동안에만 엽니다.

선택한 보드​

Insight는 헤더에 표시되는 하나의 선택된 보드를 대상으로 작업합니다. 이를 선택하면 보드 설정이 열리며, 여기서 보드를 변경하거나, 연결을 테스트하거나, 다시 플래시된 보드의 호스트 키를 신뢰할 수 있습니다. 주변 장치와 통계는 이 선택을 사용합니다.

보드는 다음 순서로 선택됩니다.

  • 직접 입력한 보드: 보드 설정을 열고 주소, SSH 포트, 사용자를 입력합니다. 기본값 사용을 선택하면 자동 선택으로 돌아갑니다.
  • 보드에 설치된 Insight: Insight가 자신이 실행되는 보드를 검사합니다.
  • Neat SDK: sima-cli sdk setup --devkit <ip>로 페어링된 DevKit입니다.

Insight는 자신을 실행하는 계정의 키로 SSH에 연결합니다. 비밀번호를 요청하거나 저장하지 않습니다. 인증에 실패하면 페이지에 보드에서 키를 승인하는 ssh-copy-id 명령이 표시됩니다. 보드를 다시 플래시하면 새 SSH 호스트 키가 제시되며, 지문을 비교하고 새 키 신뢰를 선택할 때까지 Insight는 연결을 거부합니다.

카메라 및 모드​

Refresh(새로 고침)를 선택하여 보드를 스캔합니다. Insight가 SiMa Sentinel에 다시 스캔하도록 요청하고 결과를 기다립니다. Sentinel은 미디어 그래프와 ISP를 통해 MIPI 카메라를, V4L2를 통해 USB 카메라를 찾습니다. Sentinel이 설치되어 있지 않거나, 실행 중이 아니거나, 주변 장치를 보고하기에는 너무 오래된 경우 페이지에 그렇게 표시됩니다. sima-cli neat install sentinel로 설치하거나 업데이트하십시오. 페이지에는 각 카메라의 식별 정보, 연결, 장치 식별자와 카메라가 보고하는 픽셀 형식과 해상도가 표시됩니다. 어떤 카메라의 해상도에도 프레임 속도는 표시되지 않습니다. MIPI 카메라의 속도는 실행 중인 센서 모드에 따라 달라지므로 카메라가 실행되기 전에는 알 수 없으며, 페이지는 모든 카메라를 같은 방식으로 다룹니다. Insight는 프레임 속도를 설정하지 않습니다. 각 모드는 다음 세 가지 상태 중 하나이며, 픽셀 형식 및 해상도 메뉴는 항목을 상태별로 묶어 보여 줍니다.

상태의미
Available(사용 가능)MIPI 카메라의 경우 보드의 카메라 오버레이가 카메라의 센서를 지원하고, ISP가 해당 모드의 크기를 출력하며, 픽셀 형식이 NV12입니다. USB 카메라의 경우 SiMa Sentinel이 해당 모드를 Neat의 USB 카메라 입력이 읽는 uvcvideo 드라이버의 MJPEG로 보고합니다.
Unverified(검증되지 않음)ISP가 런타임에 센서의 크기를 받는 보드(Platform 3.0)에서, 지원되는 센서의 NV12 크기 중 libcamera가 정확히 그 크기로 스트리밍하는지 SiMa Sentinel이 확인할 수 없는 크기입니다. libcamera가 더 큰 모드에서 잘라 낼 수 있기 때문입니다. 확인을 위해 선택하고 미리 볼 수 있지만, 미리 선택되지는 않습니다.
Unsupported(지원되지 않음)위 조건 중 하나라도 충족되지 않습니다. USB 카메라의 다른 모드는 SiMa Sentinel이 알려 주는 이유(다른 픽셀 형식 또는 다른 드라이버)와 함께 Unsupported(지원되지 않음)이며, Sentinel이 판단을 제공하지 않은 모드는 Sentinel이 판단할 수 없었으므로 Unsupported(지원되지 않음)입니다. USB 카메라를 확인하기에는 너무 오래된 Sentinel을 사용하면 모든 USB 모드가 Unsupported(지원되지 않음)로 남으며 업데이트하라는 안내가 표시됩니다. MIPI 카메라는 표시되는 이유가 어떤 조건인지 알려 줍니다. 센서가 보드의 카메라 오버레이에 없음, ISP가 해당 크기를 출력할 수 없음, 형식이 NV12가 아님, 또는 ISP가 런타임에 센서의 크기를 받는 보드(Platform 3.0)에서 크기가 libcamera의 스트리밍 너비(IMX477은 4032픽셀)보다 넓음. 보드의 카메라 오버레이를 보고하기에는 너무 오래된 Sentinel을 사용하면 업데이트할 때까지 모든 모드가 Unsupported(지원되지 않음)로 남습니다.

각 모드의 상태는 SiMa Sentinel이 판단하고 그 이유를 함께 제공하며, Insight는 그 답을 표시합니다. 판단을 제공하지 못하는 오래된 Sentinel의 경우 Insight가 Sentinel 카탈로그의 MIPI 카메라 모드에 같은 규칙을 적용합니다. USB 카메라는 USB 카메라의 드라이버를 보고하는 Sentinel만 확인합니다. 그보다 오래된 Sentinel을 사용하면 MIPI 모드를 판단하는 Sentinel이라도 업데이트할 때까지 모든 USB 모드가 Unsupported(지원되지 않음)입니다. 오버레이 검사는 보드의 장치 트리에서 Sentinel이 카메라에 연결한 센서를 /boot 아래에 설치된 오버레이가 지원하는 센서와 대조합니다. NV12 조건은 NV12를 출력하는 Neat의 CameraInput에 관한 고정된 사실이며, Insight는 보드의 Neat에 질의하지 않습니다. 감지된 모든 카메라에는 Connected(연결됨) 배지와 상태가 표시됩니다. 모드 중 하나라도 Available(사용 가능)이면 Available, 그렇지 않고 모드 중 하나라도 Unverified(검증되지 않음)이면 Unverified(검증되지 않음), 그 외에는 Unsupported(지원되지 않음)이며, Unverified 또는 Unsupported 카메라는 그 이유가 카메라 패널에 표시됩니다. Insight는 다른 프로그램이 카메라를 사용 중인지 알려 주지 않습니다.

카메라 이름 옆의 Camera ID(카메라 ID)를 열면 Neat 애플리케이션이 카메라를 열 때 사용하는 ID를 확인하고 복사할 수 있습니다(MIPI는 CameraInput, USB는 UsbCameraInput).

카메라 미리보기​

Start preview(미리 보기 시작)를 선택하면 카메라가 보는 화면을 확인할 수 있습니다. Insight는 기존 연결을 통해 보드에서 GStreamer 파이프라인을 실행합니다. 선택한 모드를 캡처하고(MIPI 카메라는 libcamerasrc, USB 카메라는 v4l2src), 너비 최대 640픽셀, 최대 15 fps로 스케일링한 다음 JPEG 프레임을 돌려보내며, 페이지는 프레임이 도착하는 대로 표시합니다. 보드에는 GStreamer 자체 외에 다른 것이 필요하지 않습니다. gst-launch-1.0이 없으면 미리 보기에 설치할 패키지(gstreamer1.0-tools, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, 그리고 MIPI 카메라용 gstreamer1.0-libcamera)가 표시됩니다.

미리 보기는 카메라를 점유하므로, 미리 보기를 중지할 때까지 애플리케이션에서 카메라를 열 수 없습니다. Insight는 다른 프로세스가 이미 사용 중인 카메라에서는 미리 보기를 시작하지 않으며, 해당 프로세스를 대신 중지하지도 않습니다. Stop(중지)을 선택하거나, 페이지를 벗어나거나, 스캔을 새로 고치거나, 선택한 보드를 변경하면 캡처가 중지됩니다. 브라우저를 닫아도 캡처가 중지됩니다. Insight가 중지되거나 다시 시작되면, 보드 파이프라인은 출력 연결이 닫힌 뒤 다음 프레임에서 종료됩니다. 다만 아무 알림 없이 네트워크 연결이 끊긴 경우에는 보드의 SSH 연결이 시간 초과될 때까지 카메라를 계속 점유할 수 있습니다. 여전히 카메라를 점유하고 있는 미리 보기를 해제하려면 페이지에 미리 보기가 아직 표시되어 있는 동안 Stop(중지)을 선택하거나, 해당 시간 초과를 기다리거나, 보드에서 gst-launch-1.0 프로세스를 종료하세요.

MIPI 카메라는 Available(사용 가능) 및 Unverified(검증되지 않음) 모드를 미리 볼 수 있습니다. ISP가 런타임에 센서의 크기를 받는 보드(Platform 3.0)에서는 센서가 나열하는 크기라도 libcamera가 출력하지 않을 수 있습니다. 그런 경우 미리보기는 libcamera가 스트리밍하는 크기를 알려 주므로 그 크기를 선택하면 됩니다. USB 카메라는 모드가 Available(사용 가능)인지와 관계없이 MJPG 또는 YUYV 같은 원시 형식으로 나열하는 모든 모드를 미리 볼 수 있습니다. 보드에 안정적인 /dev/v4l/by-id 경로가 있으면 Insight는 그 경로로 카메라를 엽니다. 그렇지 않으면 먼저 SiMa Sentinel에 카메라의 /dev/videoN 노드가 여전히 같은 카메라인지 확인하고, 그렇지 않으면 Refresh(새로 고침)를 요청합니다.

미리 보기가 실행되는 동안 그 옆의 모드에는 카메라의 프레임 속도가 표시되며, 이 속도는 미리 보기의 15 fps보다 빠를 수 있습니다. 미리 보기는 카메라에 선택한 모드의 속도를 요청합니다. USB 카메라의 경우 표시되는 속도는 해당 모드의 속도입니다. MIPI 카메라의 경우 이 모드에서 센서가 낼 수 있는 최대 속도가 "up to"(최대)로 표시되며, 첫 프레임이 도착하면 Insight가 SiMa Sentinel에 이 값을 요청하므로 화면이 나타나고 몇 초 후에 표시됩니다. Sentinel이 속도를 보고할 수 없으면 속도가 표시되지 않습니다.

Camera setup(카메라 설정)​

보드의 장치 트리를 읽는 Sentinel은 보드가 카메라용으로 어떻게 설정되어 있는지도 보고합니다. Refresh(새로 고침) 후 보드 설정에 보드 Model(모델)과, 보드가 로드하는 오버레이 중 카메라 센서를 구성하는 오버레이의 이름을 나열하는 Camera setup(카메라 설정) 줄이 표시됩니다. 이전 버전의 Sentinel에서는 이러한 세부 정보가 표시되지 않습니다.

마이크​

Refresh(새로 고침)는 SiMa Sentinel이 보고하는 모든 ALSA 캡처 장치(USB 또는 온보드)도 나열합니다. 각 마이크에 대해 Insight는 이름, 장치를 열 때 사용할 ALSA 장치 이름(예: hw:CARD=Nano,DEV=0), 그리고 USB 오디오 장치의 경우 캡처하는 샘플 형식, 채널 수, 비트 깊이, 샘플 레이트를 표시합니다. 온보드 사운드 카드는 이 정보를 보고하지 않으며, 페이지에 그렇게 표시됩니다.

검색은 사운드 장치를 열지 않습니다. Sentinel은 /proc/asound와 sysfs를 읽습니다. USB 마이크는 분리했다가 같은 포트에 다시 연결하면 카드 번호가 바뀌어도 같은 식별 정보를 유지하며, 다른 포트에 연결하면 다른 마이크로 취급됩니다.

마이크 소리를 들으려면 Test microphone(마이크 테스트)을 선택하고 말하십시오. 레벨 미터에 마이크가 듣는 소리가 표시됩니다. 끝나면 Stop recording(녹음 중지)을 선택하십시오(테스트는 30초 후 자동으로 중지됩니다). 그러면 Insight가 페이지에서 녹음을 재생합니다. Stop playing(재생 중지)을 선택하면 재생이 끝납니다. 녹음이 약 -60 dBFS 아래에 머물면 페이지에 아무 소리도 잡히지 않았다고 표시되므로, 마이크의 음소거 버튼과 게인을 확인하십시오. 장치를 여는 것은 테스트뿐이며, 녹음하는 동안에만 엽니다. 녹음 전에 Insight는 Sentinel의 카탈로그를 다시 읽고 Sentinel이 지정한 장치에서만 녹음합니다. 마지막 스캔 이후 보드의 장치가 바뀌었으면 페이지에서 먼저 새로 고치라고 안내합니다. 다른 애플리케이션이 마이크를 열고 있으면 테스트가 거부되며 해당 애플리케이션은 그대로 둡니다. Core에는 오디오 입력이 없으므로 Insight는 오디오 입력을 구성하지 않습니다.

통계​

통계는 Sentinel(simaai-sentinel 데몬)에서 보드 자체의 텔레메트리를 읽으므로 애플리케이션 동작과 장치 동작을 구분할 수 있습니다. 프레임 드롭은 스트림 경로에서 발생할 수도 있지만, 보드 전력, 다이 온도, CPU 부하 또는 메모리 압박과 상관관계가 있을 수도 있습니다.

통계는 주변 장치 페이지와 같은 보드 패널에서 선택한 보드를 대상으로 동작합니다.

Sentinel 데몬​

페이지에는 먼저 해당 보드에 Sentinel이 설치되어 실행 중인지와 그 버전이 표시됩니다. 설치되어 있지 않으면 Sentinel 설치를 선택하십시오. Insight가 보드 자체에서 sima-cli neat install sentinel을 실행하며, 이를 위해서는 보드에 sima-cli와 비밀번호 없는 sudo가 있어야 합니다. 둘 중 하나라도 없으면 페이지는 대신 보드의 셸에서 실행할 명령을 알려 줍니다. 이미 설치되어 실행 중인 데몬은 여기서 다시 설치하지 않습니다. 설치 프로그램이 데몬을 다시 시작하므로 진행 중인 트레이스가 끝나 버리기 때문입니다.

설치가 거부되거나 실패하면 읽기 실패가 아니라 설치 결과로 보고됩니다. 페이지는 설치가 이루어지지 않았다고 알리고, 그 이유를 보드가 보고한 문장 그대로 제시하며(sima-cli 없음, 비밀번호 없는 sudo 없음, 설치 프로그램이 0이 아닌 코드로 종료됨, 또는 설치가 끝났지만 서비스가 여전히 중지됨), 설치 프로그램의 출력은 설치 프로그램 출력 아래에 보관합니다.

실시간 지표​

DevKit 보기는 Sentinel 자체의 터미널 대시보드(simaai-sentinel ops)와 같은 배치로 구성되어 있습니다. 상태 줄에는 판독값이 실시간인지와 현재 Sentinel 세션이 언제 시작되었는지가 표시되며, 세션 평균과 최대값은 이 세션을 기준으로 합니다. CSV 내보내기는 Sentinel이 세션 동안 보관한 모든 샘플의 모든 지표를 다운로드하며(최근 240개, 약 8분 분량이므로 더 길게 기록하려면 실행 기록에서 트레이스를 기록하십시오), 업데이트 일시 중지는 폴링을 멈춥니다. 그 아래에 탭 6개가 있습니다.

  • 개요: 가장 뜨거운 온도 센서, 보드 전력, CPU 사용량, Linux 메모리, 가속기 메모리(MLA와 EV74 누적), 네트워크 트래픽 차트가 있고, 그 아래에 모든 지표가 접혀 있어 모든 지표를 Sentinel의 순서대로 보여 줍니다.
  • 온도: 시간에 따른 가장 뜨거운 센서를 보여 준 다음, 각 센서 그룹(MLA, APU, CVU, TOP, Board)을 작은 차트로 보여 줍니다.
  • 전력: 현재, 세션 평균, 세션 최대 전력을 수치로 보여 주고, 세션 평균이 표시된 기간 동안의 보드 전력, 그리고 위쪽 가장자리가 보드 전체가 되도록 쌓아 올린 전원 레일을 보여 줍니다. 보드 전력과 에너지는 추정값입니다(SoM 레귤레이터 레일 읽기 값의 합).
  • 시스템: CPU 및 메모리는 CPU 사용량, 부하 평균, Linux 메모리, MLA 메모리, EV74 메모리, 그리고 둘을 누적한 가속기 메모리를 차트로 보여 줍니다. 코어별 CPU는 부하 히트맵으로, 코어마다 한 행, 기간의 10초마다 한 열을 단일 파란색 계열로 표시하며, 각 코어의 1분 평균과 가장 바쁜 코어를 함께 보여 줍니다. 평균이 코어의 한도를 넘으면 주황색 또는 빨간색으로 바뀝니다.
  • 저장소 및 네트워크: eMMC 사용량, 네트워크 수신 및 송신, eMMC 읽기 및 쓰기와 그 지표입니다.
  • 실행 기록: 트레이스를 기록하고, 저장된 실행 기록을 열거나 비교하거나 삭제합니다. 비교하면 선택한 모든 실행 기록에 대해 하나의 계열(총 전력, 최대 온도, CPU, 부하, RAM, MLA 메모리 또는 EV74 메모리)을 모든 기록이 공통으로 포함하는 시간 범위에 걸쳐 실행 기록에 맞춘 스케일로 겹쳐 표시하며, 각 실행 기록의 최솟값, 평균, 중앙값, P95, 최댓값, 기준 대비 변화량 및 에너지를 함께 보여 줍니다. 지표별 비교는 그 아래에 접혀 있습니다.

차트는 고정 스케일을 사용하고(백분율은 0-100, 온도는 40-90 °C, 그 밖의 값은 최고값보다 큰 어림수까지), Sentinel이 정의한 경고 및 위험 수준을 표시하며, 마우스를 올리면 해당 지점의 모든 계열 값을 읽어 보여 줍니다. 색상은 상태를 나타냅니다. 차트는 판독값이 경고 또는 위험 수준을 넘기 전까지 파란색이고, 넘으면 주황색 또는 빨간색이 됩니다. 탭 안의 지표가 임계값을 넘으면 탭 이름에 표시가 붙습니다. 보드가 측정할 수 없는 지표는 0이 아니라 엠 대시로 표시됩니다.

차트는 Sentinel이 보관하는 전체 기간인 샘플 240개(약 8분)를 다룹니다. 보드를 처음 읽을 때와 1분 이상 폴링이 일시 중지된 후에는 Insight가 Sentinel 자체의 캐시에서 샘플을 가져오고, 이후 탭이 열려 있고 보이는 동안 2초마다 샘플을 추가합니다. 브라우저 탭이 숨겨지거나 보기를 떠나도 폴링이 중지됩니다.

보고 있는 동안 보드가 응답을 멈추면 폴링이 중지되지만 패널은 페이지를 비우지 않고 그대로 유지되어, 마지막으로 읽은 값과 무엇이 실패했는지에 대한 보드 자체의 설명을 보여 줍니다. 다른 보드를 선택하는 것은 이와 다릅니다. 이 경우 모든 내용을 먼저 지우므로, 한 보드의 수치가 다른 보드의 이름 아래에 표시되는 일은 없습니다.

트레이스와 실행 기록​

트레이스는 워크로드 동안의 모든 샘플을 기록합니다. 이름을 지정하고, 필요하면 메모와 태그를 추가한 다음, 트레이스 시작을 선택하십시오. 트레이스 중지를 선택하면 보드에 실행 기록으로 저장됩니다. Sentinel은 한 번에 하나의 트레이스만 기록하며, 저장된 실행 기록이 이미 사용 중인 이름은 거부합니다. 저장된 실행 기록은 상태, 시작 시간, 지속 시간, 실행 동안 Sentinel이 측정한 에너지, 샘플 수와 함께 나열되며, 데몬을 다시 시작해도 유지됩니다. 실행 기록을 열면 요약을 볼 수 있습니다. 기록된 모든 지표가 당시 적용된 레이블, 단위, 그룹, 임계값과 함께 표시되고, 해당 실행 기록의 샘플에 대한 최솟값, 최댓값, 평균값이 표시됩니다. 실행 중 어느 시점에서든 경고 또는 위험 임계값을 넘은 지표에는 표시가 붙습니다. 샘플을 하나만 담은 실행 기록은 그 시점에서 자기 자신까지의 범위가 아니라 샘플을 얻은 시점으로 보고되며, 평균, 최솟값, 최댓값은 모두 같은 단일 값으로 표시됩니다. 실행 기록의 메타데이터(이름, 메모, 샘플 간격, Sentinel 버전, 실행된 보드)는 그 아래에 있습니다.

실행 기록에 체크 표시를 하면 선택된 개수와 수행할 수 있는 작업이 담긴 도구 모음이 나타납니다. 2개에서 8개를 선택하고 비교를 선택하면 지표가 행에, 실행 기록이 열에 배치됩니다. Sentinel은 하나의 기준 실행 기록을 기준으로 비교를 측정하며, 기준 실행 기록은 각 실행 기록의 메모와 함께 헤더에 표시됩니다. 나머지 모든 셀에는 해당 실행 기록에서 그 지표의 평균과, 그 옆에 기준 대비 변화율이 표시됩니다. 표시하기에 너무 작은 변화는 변화 없음이 아니라 “<0.01%”로 표시됩니다.

셀에 변화량 대신 “—”가 표시되면 Sentinel이 변화량을 제공하지 않은 것이며, 표는 엠 대시 하나로 모든 이유를 대신하지 않고 어떤 이유에 해당하는지 알려 줍니다. “—”에 마우스를 올리거나, 키보드 탭으로 이동하거나, 터치하면 옆에 이유가 표시되며, 스크린 리더는 대시와 함께 이유를 읽어 줍니다. 이유는 다음과 같습니다.

  • Sentinel이 이 항목에 대한 변화량을 게시하지 않습니다. 실행 기록 합계(지속 시간, 에너지, 샘플 수)는 백분율 없이 실행 기록별로 보고됩니다.
  • 기준값이 0이므로 0으로부터의 백분율 변화가 없습니다. 기준 실행 기록은 해당 지표를 실제로 측정했지만, 0으로부터의 백분율은 존재하지 않을 뿐입니다. 이는 유휴 상태의 기준 실행 기록에서 코어별 CPU 사용량에 흔히 나타나며, 변화가 가장 큰 경우가 많은 곳이기도 합니다. 기준에서 평균 0%, 다른 실행 기록에서 5.9%였던 코어는 여기서 “—”로 표시되므로 변화량 대신 두 값을 읽으십시오.
  • 기준 실행 기록에 해당 지표의 값이 없습니다. 기준 실행 기록이 해당 지표를 아예 측정하지 않은 유일한 경우입니다.
  • 이 실행 기록에 해당 지표의 값이 없습니다. 실행 기록이 나열되었지만 Sentinel이 아무것도 요약하지 않은 경우 열 전체가 이렇게 표시되며, 표 위에 이 사실이 명시됩니다.

실행 기록 합계는 보기의 나머지 부분과 같은 단위로 표시됩니다. Sentinel이 밀리초로 보고하는 지속 시간은 초로, 에너지는 줄로 표시됩니다.

선택된 실행 기록이 보드에서 삭제되면 해당 행이 목록에서 사라지고 선택을 해제할 체크박스도 없어지므로, 모든 비교가 그 실행 기록 때문에 실패합니다. Insight는 Sentinel이 더 이상 나열하지 않는 선택된 실행 기록의 이름을 표시하고, 선택에서 제거하도록 제안합니다.

실행 기록을 열고 비교하는 데에는 크기 제한이 있습니다. Insight는 보드에서 Sentinel의 응답을 최대 12 MiB까지 읽으며, 저장된 실행 기록에는 2초마다 하나씩 기록된 모든 샘플이 담겨 있습니다. 약 3시간보다 긴 실행 기록은 열 수 없으며, 길이의 합이 약 3시간을 넘는 실행 기록들은 함께 비교할 수 없습니다. 이 경우 Insight는 응답이 너무 커서 읽을 수 없다고 알려 줍니다. 열거나 비교하려는 실행 기록은 더 짧은 트레이스로 기록하십시오.

비교는 실행 기록을 쉼표로 구분된 하나의 이름 목록으로 요청하므로, 트레이스 이름에는 쉼표를 포함할 수 없습니다. 쉼표가 있으면 요청이 보드에 없는 두 개의 실행 기록으로 해석되어, 아무도 선택하지 않은 실행 기록 이름을 언급하며 실패합니다. Insight는 트레이스를 시작할 때 이러한 이름을 거부하며, 이미 저장된 실행 기록의 이름에 쉼표가 있으면 Compare(비교)가 그 때문에 실패하도록 두지 않고 해당 실행 기록의 이름을 알려 줍니다.

떠나온 보드의 값​

보드를 읽으려면 SSH 왕복이 필요하므로, 다른 보드를 선택한 후에 응답이 도착할 수 있습니다. 다른 보드를 선택하면 이전 보드에서 아직 오는 중인 모든 응답이 취소됩니다. 새 보드는 즉시 확인되며, 이전 보드에서 늦게 도착한 응답은 새 보드의 값으로 표시되지 않고 버려집니다. 트레이스 중지는 트레이스를 읽어 온 보드의 이름을 표시하며, 다른 보드의 트레이스를 중지하는 대신 거부됩니다. 선택된 보드가 다른 곳(다른 브라우저 탭이나 API 클라이언트)에서 변경되면, 이미 페이지에 있는 값에는 해당 값을 가져온 보드가 레이블로 표시되고 다시 읽을 수 있는 방법이 제공됩니다.

Insight 호스트​

실행 기록 아래의 작은 패널은 Insight 자체가 실행되는 머신(SDK 컨테이너 또는 Insight가 설치된 보드)에 대해 /api/metrics에서 가져온 CPU 부하, 메모리, 디스크, 그리고 플랫폼이 제공하는 경우 온도를 보고합니다. 이는 컨테이너의 디스크가 부족한지와 같이 위의 보드 텔레메트리와는 다른 질문에 답하며, 2초가 아니라 15초마다 읽습니다. 레거시 REMOTE_DEVKIT 구성이 설정되어 있으면 이 패널은 대신 그 연결을 보고하며, 그렇다고 명시합니다. 엔드포인트가 판독값 없이 응답하면 패널은 레이블 옆에 엠 대시를 나열하는 대신 그 사실을 알립니다.

NEAT 프로파일링 타임라인​

탭의 마지막에 있는 프로파일링 타임라인은 실행 중인 애플리케이션에서 Insight가 스트리밍하는 프로파일링 이벤트의 숫자 필드를 그래프로 표시합니다. 이는 Sentinel과 독립적이며, 장치가 아니라 애플리케이션을 측정합니다.

GenAI Studio​

GenAI Studio 뷰는 보드에서 언어, 비전, 음성 모델을 실행합니다. 보드에서 백엔드 전용 모드로 실행되는 Neat Apps의 GenAI Studio와 통신하며, Insight가 모든 호출을 중계하므로 브라우저가 보드에 직접 연결하지 않습니다.

GenAI Studio는 보드에서 실행됩니다. 아래 설명처럼 탭에서 설치, 준비, 시작을 할 수 있으며, 보드의 셸에서 직접 시작하려면 GenAI Studio 애플리케이션 디렉터리에서 다음을 실행하십시오.

./run.sh

탭이 GenAI Studio에 연결할 수 없거나 사용할 수 없는 동안에는 Insight가 연결된 보드(Insight 헤더에 표시되는 보드)의 설정 페이지만 표시됩니다. 사용할 수 있는 GenAI Studio가 응답할 때까지 채팅, 모델, 설정은 표시되지 않습니다. 페이지에는 세 단계가 각각 짧은 상태와 함께 나열됩니다. Install Neat Apps(NEAT_APPS_SKIP_DEPENDENCIES=1 sima-cli neat install apps, 설치된 Core와 Insight는 그대로 유지, develop 또는 main 이외의 브랜치에서 빌드한 Insight는 apps@develop 설치), Prepare speech and search(setup.sh를 한 번 실행, 보드의 인터넷 연결 필요, 약 15분), Start and connect(./run.sh, 이 탭이 GenAI Studio의 응답을 받으면 완료)입니다. 주 버튼은 다음에 할 작업입니다. 설치되지 않았으면 Install GenAI Studio, 설치되었지만 중지되었으면 Start GenAI Studio, 그 밖에 Continue setup, 실패 후에는 Retry, Stop setup 후에는 Resume setup입니다. Insight가 보드에 연결할 수 없으면 대신 보드 연결이 끊겼다고 표시합니다. Board 메뉴에서 보드를 다시 연결한 다음 Try connection again을 누르십시오. 각 단계는 보드에서 하나의 작업으로 실행되며 페이지를 닫아도 계속 진행되고, 다시 불러오면 현재 진행 상황이 표시됩니다. 실패한 단계는 표시된 채로 남아 무엇이 잘못되었는지와 해결 방법을 보여 줍니다. 몇 분 동안 새 출력이 없는 단계는 그 사실을 알려 줍니다. 각 단계의 로그는 보드의 ~/.neat-insight/genai-setup/에 저장됩니다. 설정이 끝나면 페이지에 GenAI Studio is ready가 표시되고 Open Studio로 채팅을 엽니다. 경고는 해결 방법과 함께 같은 페이지에 접혀 있으며, 설정 경고를 해결한 후 Run setup again을 누르면 setup.sh를 다시 실행하고 GenAI Studio를 다시 시작합니다. Stop GenAI Studio는 보드에서 GenAI Studio를 중지하며, 셸에서 시작한 경우에도 마찬가지입니다. Connection settings는 GenAI Studio 주소를 확인해야 할 때만 표시됩니다. 사용자 지정 주소이거나, Insight의 보드가 아닌 다른 보드를 가리키거나(페이지가 그 사실을 알려 줍니다), 주소가 없는 경우입니다. Settings의 Connection에 있는 Manage installation을 누르면 GenAI Studio가 실행 중일 때 이 페이지를 열어 업데이트하거나 설정을 다시 실행하거나 중지할 수 있으며, Back to Studio로 채팅에 돌아갑니다. 이 Insight와 다른 채널에서 설치되었거나 보드에 있는 것보다 오래된 Neat Library용으로 빌드된 GenAI Studio는 오래된 것으로 간주됩니다. 탭은 실행 중에도 이를 알려 주며, Update GenAI Studio를 누르면 GenAI Studio를 중지하고 맞는 Apps를 설치한 다음(이전 파일은 /media/nvme/.prebuilt-apps-backup으로 이동하고, 다운로드한 모델은 유지), 다시 준비하고 시작합니다. 같은 계열의 다른 Neat Library 빌드용으로 빌드된 GenAI Studio는 설치 단계 아래에 경고만 표시합니다.

설정하려면 NVMe가 /media/nvme에 마운트되어 있어야 합니다. Apps와 Python 가상 환경은 /media/nvme/prebuilt-apps에 설치되며, 다운로드 캐시와 임시 파일은 /media/nvme/.cache/neat-genai-studio에 저장됩니다.

채팅이 처음 열리면(설정 직후 포함) 페이지 상단에 각 기능을 안내하는 짧은 Tutorial이 열립니다. 헤더의 Tutorial로 언제든 다시 볼 수 있습니다. 헤더에는 상태 표시, Model 선택기와 그 옆의 New chat(연필), Read replies aloud, Think first(항상 바로 답하는 모델에서는 비활성화), Use my documents가 있습니다. 도구 모음에는 Export chat, SiMaSentry Solutions(방패), Benchmark(계기), Tutorial, Settings, Full screen이 있습니다.

상태 표시와 주의가 필요할 때 나타나는 배너는 백엔드 상태와 다음에 할 일을 알려 줍니다.

  • Not set up: GenAI Studio 주소가 설정되지 않았으며 설정 페이지에 주소 입력란이 표시됩니다. https://192.168.1.20:5000 같은 보드의 GenAI Studio 주소를 입력하십시오. Insight 헤더에서 입력한 보드가 가장 우선합니다. 그 외에는 보드에서 실행되는 Insight는 기본적으로 로컬 백엔드를 사용하고, Neat Development Environment에서는 페어링된 DevKit을 사용합니다.
  • Not running: 보드가 응답하지 않으며 탭에 설정 페이지가 표시됩니다. 설치된 경우 Start GenAI Studio로 시작하고, 처음에는 이 페이지에서 설치합니다. 또는 Connection settings에서 주소를 확인하십시오.
  • Error: 보드가 오류를 반환했거나 주소가 GenAI Studio를 가리키지 않습니다. 설정 페이지에 보드의 메시지가 표시되며, 주소가 원인이면 Connection settings도 표시됩니다.
  • Starting: 백엔드는 응답하지만 모델 서버가 아직 준비되지 않았습니다.
  • Busy: 모델을 불러오는 중입니다. 채팅과 음성은 완료될 때까지 기다립니다.
  • Incompatible: 보드의 GenAI Studio API 버전이 이 Insight와 맞지 않습니다. 설정 페이지에 업데이트할 쪽이 표시됩니다.
  • Ready: 채팅과 음성을 사용할 수 있습니다. 보드에서 음성을 불러오지 못한 경우에도 여기에 표시됩니다.

No model yet: 보드에 채팅 또는 비전 모델이 없거나 실행할 수 없는 모델만 있으면, 메시지 상자를 회색으로 비활성화된 채 두는 대신 채팅에 그 사실이 표시됩니다. Download Qwen3 VL 4B는 비전-언어 모델인 simaai/Qwen3-VL-4B-Instruct-Autoround-a16w4를 보드에 다운로드하고 버튼 아래에 진행 상황을 표시한 뒤 모델을 불러옵니다. 보드가 다운로드 크기를 조회하면 버튼에 크기가 표시되며, 보드의 남은 공간이 그보다 적으면 경고합니다. Browse models는 Settings의 Models에서 카탈로그 검색을 열어 보드가 다운로드할 수 있는 모델을 나열합니다. 보드가 다운로드를 허용하지 않으면 채팅에서 보드에 있는 GenAI Studio의 config.local.yaml에 server.hub.allow_download: true를 설정하고 GenAI Studio를 다시 시작하라고 안내합니다. 보드가 Hugging Face에 연결할 수 없으면 그 사실을 알려 주며, Check again으로 다시 확인합니다. Hugging Face에서 모델 이름이 바뀐 경우 실패한 다운로드에 새 ID가 표시되고 대신 그 모델을 다운로드하도록 제안합니다.

Chat은 페이지 중앙의 대화입니다. 메시지 상자에 입력하거나, 마이크를 누르고 말한 뒤 다시 누르면 말이 텍스트로 변환되어 전송됩니다. 이미지를 볼 수 있는 모델에서는 사진을 첨부하거나, 이 브라우저의 카메라 또는 보드에 연결된 카메라로 촬영할 수 있습니다. 비디오카메라 버튼에는 보드의 카메라(/dev/videoN) 목록이 표시되며, Take a picture는 보드에서 찍은 사진을 다음 메시지에 첨부합니다. 보드 카메라에는 board_camera 기능을 보고하는 GenAI Studio가 필요합니다. 이전 버전에서는 버튼이 숨겨지고 카메라 버튼의 도움말에 이유가 표시됩니다. 답변은 생성되는 대로 표시되며, 중지 버튼으로 일찍 끝낼 수 있습니다. New chat으로 새로 시작하면 모델이 이전 대화를 잊습니다. Read aloud는 답변 하나를 읽고 Stop speaking은 읽기를 중지합니다. Read replies aloud는 모든 답변을 읽으며 나머지가 생성되는 동안 첫 문장부터 시작합니다. 브라우저는 처음 사용할 때 마이크와 카메라 권한을 요청합니다.

각 답변 아래에는 Insight가 브라우저에서 측정한 생성 속도가 표시됩니다.

  • First token: 전송부터 답변의 첫 텍스트까지 걸린 시간.
  • Speed 및 Tokens: 초당 토큰 수와 답변 길이. 보드가 속도를 보고하면 그 값을 사용하고, 그렇지 않으면 Insight가 브라우저에서 계산합니다.
  • Total: 전송부터 답변 완료까지 걸린 시간.
  • First audio, RTF, Voice(답변을 읽어 줄 때): 재생 시작까지 걸린 시간, 실시간 계수(음성 1초당 연산 시간(초), 1 미만이면 실시간보다 빠름), 음성 엔진.
  • Transcribed 및 Language(음성 질문 아래): 녹음 종료부터 텍스트 변환까지 걸린 시간과 인식한 언어.

Vision(메시지 상자 아래의 눈 아이콘)은 독립형 GenAI Studio의 전체 화면 비전처럼 카메라를 화면에 맞는 최대 크기(화면 높이의 절반 이하)로 표시하고 그 아래에 최신 답변과 컨트롤을 보여 줍니다. This browser's camera 또는 Board camera를 선택하고(보드는 질문마다 새 사진을 찍으며, Take a picture로 구도를 확인할 수 있습니다), 질문을 입력하거나 What do you see?, Describe the scene in detail, Read any text in view를 선택한 뒤 다음을 수행하십시오.

  • Ask는 현재 사진에 관해 한 번 질문합니다.
  • Loop는 답변마다 새 사진에 같은 질문을 합니다. 한 번에 요청 하나씩 보내고 답변 사이에 잠시 쉬며 Stop을 누를 때까지 계속됩니다. 반복 중 질문을 수정하면 다음 사진부터 적용됩니다. Read answers aloud가 켜져 있으면 답변을 읽은 뒤 다음 사진을 찍습니다.

모델이 바뀌거나 이미지를 볼 수 없게 된 경우, 보드가 응답하지 않거나 다른 작업을 시작한 경우, 사진 또는 답변에 실패한 경우(이유 표시), 보드 주소가 바뀐 경우, 뷰를 닫거나 탭을 떠난 경우에도 반복이 중지됩니다. Vision 질문은 채팅 기록이 없는 별도 요청이며 답변은 채팅에 추가되지 않습니다. 뷰의 Full screen은 화면 전체를 사용하며 Esc 또는 Close로 채팅에 돌아갑니다.

Export chat은 대화를 .log 텍스트 파일(neat-chat-<date>-<time>.log)로 저장합니다. 위에는 내보낸 시간과 모델, 그 아래에는 각 발화가 기록되며 사진은 [image]로 표시됩니다.

SiMaSentry Solutions는 Insight를 통해 불러온 채팅 모델에서 실행되는 데모 앱 세 개를 엽니다. SiMaSentry-Med(임상 채팅 및 의료 영상 검토), SiMaSentry-Safe(PPE 및 위험 확인), SiMaSentry-Sec(보안 영상 분석 및 변화 감지)입니다. 사진 기능에는 이미지를 볼 수 있는 모델이 필요합니다. 모델은 보드에서 실행되지만 이 앱들의 음성 입력은 브라우저 자체 음성 인식을 사용하므로 오디오가 온라인 서비스로 전송될 수 있습니다(Chrome은 전송합니다). 앱 자체의 Home 버튼, Back 또는 Esc로 실행 화면에 돌아가고, Close로 채팅에 돌아갑니다.

Benchmark는 보드의 채팅 모델이 얼마나 빠르게 답변하는지 측정합니다. 답변이 시작될 때까지 기다리는 시간인 Time to first word와 답변이 나오는 속도를 초당 토큰 수로 나타내는 Reply speed를 측정합니다(토큰 하나는 단어의 약 ¾입니다). 불러온 채팅 모델이 미리 선택되어 있고, 불러온 모델이 없으면 첫 번째 모델이 선택되므로 아무것도 변경하지 않고 Run benchmark를 실행할 수 있습니다. 비교하려면 모델을 더 선택하십시오. Advanced options에는 Runs(150, 기본값 5), Output tokens(82048, 기본값 128), Prompt가 있습니다. 모델을 불러와야 하는 실행은 먼저 이를 알리고 언로드되는 모델의 이름을 표시합니다. 언로드된 모델은 나중에 Model 메뉴에서 다시 불러오십시오. 모델은 차례로 실행되고, 실행 중에는 진행 상황과 답변이 표시되며, Stop으로 끝낼 수 있습니다. 결과에는 모델별로 두 수치가 채팅에서의 체감을 나타내는 라벨과 함께 표시됩니다. 대략적인 기준으로 1초 미만이면 즉각적으로 느껴지고, 대부분의 사람은 초당 약 5토큰을 읽습니다. All numbers에는 평균 속도, p90 속도, 편차, 첫 단어까지의 시간, 답변 길이, 실행 횟수가 나열되며, 가장 빠른 값이 강조되고 항목마다 설명이 붙습니다. Each run에는 마지막 모델의 실행별 결과가 표시됩니다. Run again은 테스트를 반복하고, Change models는 선택 화면으로 돌아가며, Download CSV와 Download JSON은 결과를 저장합니다.

Use my documents는 보드의 문서 데이터베이스를 바탕으로 답합니다. 보드는 질문에 맞는 구절을 검색해 모델이 답하기 전에 추가하고, 답변 아래에 사용한 섹션 이름(또는 일치하는 내용 없음)을 표시합니다. Settings의 Documents에서는 데이터베이스 내용을 확인하거나, Markdown 파일을 업로드해 문서를 교체하거나, 기본 SiMa 문서로 재설정하거나, 비울 수 있습니다. View sections는 수집한 원본 파일, 섹션(청크) 수, 각 섹션의 제목 경로와 텍스트를 표시하며, **Filter sections…**로 구절을 찾을 수 있습니다(처음 2,000개 섹션까지). 문서 기능에는 문서 검색을 지원하는 GenAI Studio가 필요합니다. 지원하지 않으면 스위치가 비활성화되고 이유가 표시됩니다.

Settings는 채팅 위에 대화 상자로 열리며(× 또는 Esc로 닫습니다) 탭이 네 개 있습니다. Model 메뉴 맨 아래의 Manage models를 선택하면 Models 탭이 열립니다.

  • Models: 보드의 모델 수, 사용 중인 모델, 불러온 상태로 유지할 수 있는 채팅 모델 수, 보드의 남은 저장 공간 아래에 두 목록을 표시합니다: On this DevKit과 Hugging Face에서 받을 수 있는 모델의 Model catalog이며, 후자는 따로 스크롤됩니다. 각 모델은 종류(Chat, Vision, Speech), 크기, 상태(In use, Loaded, Loading…, On DevKit, Not downloaded, 진행률이 있는 Downloading to DevKit, Download incomplete, Can't run here, 이유는 툴팁에 표시)와 함께 표시합니다. 처음 열 때 카탈로그가 채워지고, Sync catalog는 한 번의 빠른 호출로 새로 고치며 모델 파일은 다운로드하지 않습니다. 모델의 크기와 설명은 행이 화면에 나타날 때 카드에서 읽습니다. 이 브라우저가 목록을 저장하므로 Hugging Face에 연결할 수 없을 때도 검색과 종류 필터를 사용할 수 있습니다. 카탈로그에는 자체 검색 상자도 있으며 On this DevKit 목록에는 영향을 주지 않습니다. Download는 모델을 보드에 다운로드합니다. 다운로드를 허용하지 않는 보드에서는 허용하는 방법을 안내합니다. Load와 Unload로 활성 모델을 바꾸며 배너에 불러오기 진행 상황이 표시됩니다. 사용 중인 음성 모델은 언로드할 수 없으므로 다른 모델을 불러와 교체합니다. 불러온 채팅 모델 중 어느 것이 답변할지는 Model 메뉴에서 선택합니다. 모델 옆의 화살표를 누르면 설명과 모델 카드 링크가 표시됩니다. 그곳의 Remove from DevKit은 확인 후 다운로드한 모델 파일을 보드에서 삭제합니다. 불러오지 않은 모델이면서 사용 중인 음성 모델이 아닌 경우에만 제공되며, 거부되면 보드의 이유가 표시됩니다.
  • Replies & voice: System prompt는 모든 채팅 및 Vision 질문과 함께 전송되는 지침입니다. 변경하기 전까지 상자에는 기본값이 표시됩니다: "You are a helpful assistant. Answer clearly and concisely. Use Markdown formatting when it helps. Answer the question in the language it was asked in." 편집하면 기본값을 대체합니다. Reset to default는 기본값을 되돌리며, 상자를 비워 두면 기본값이 전송됩니다(빈 프롬프트는 전송되지 않습니다). 작은 비전 모델이 잘못 판단하지 않도록 탭은 메시지에 사진이 있는지 알려 주는 문장 하나를 계속 추가합니다. Longest reply는 답변의 최대 토큰 수를 설정합니다(32~2048, 기본 512, 독립형 GenAI Studio와 동일). max_tokens로 전송되며 자체 설정이 있는 벤치마크에는 영향을 주지 않습니다. 이 브라우저는 두 설정을 모두 기억합니다. Think first와 Read replies aloud는 헤더의 스위치와 같은 설정입니다. 음성 엔진, 목소리, 사용자가 말하는 언어도 여기서 선택하며, 음성 인식에 사용 중인 모델도 표시됩니다.
  • Documents: Use my documents, 보드가 검색하는 문서, View sections, Upload Markdown, Restore default가 있으며 Remove documents 아래에 Clear documents가 있습니다.
  • Connection: 탭이 GenAI Studio에 연결하는 주소(보드의 포트 5000)입니다. 보드 자체는 Insight 헤더에서 선택합니다. Manage installation은 설정 페이지를 열고, Troubleshooting은 GenAI Studio를 다시 시작하는 방법을 안내하며 Copy restart commands로 명령을 복사할 수 있습니다.

모델을 불러오지 못하거나 답변이 멈추면 보드에서 GenAI Studio를 다시 시작하십시오(./run.sh stop 다음 ./run.sh). 가속기가 해제되어 모델을 다시 불러올 수 있습니다. Settings의 Connection에 있는 Troubleshooting에도 이 안내가 있습니다.

시스템 정보​

시스템 정보 패널은 Insight가 볼 수 있는 환경을 요약합니다. Neat 개발 환경에서는 SDK 및 구성 요소 정보, Insight 상태, 업데이트 정보, 그리고 mainUI 및 videoUI 같은 노출된 포트 매핑을 표시할 수 있습니다.

URL이 기본 포트와 맞지 않을 때 가장 먼저 확인할 곳입니다. Insight는 사용 가능한 포트 맵을 읽고, 뷰어를 열 때 매핑된 videoUI 포트를 사용합니다. 명령줄 워크플로에서는 neat --json이 동일한 포트 맵 정보를 보여 줍니다.