KRW | USD

3D 비행 시간 응용 제품 빠르게 시작하기

작성자: Stephen Evanczuk

Digi-Key 북미 편집자 제공

3D 비행 시간(ToF) 이미징은 산업 안전, 로봇 항법, 제스처 제어 인터페이스 등 광범위한 응용 분야에서 동영상 이미징을 효과적으로 대체할 수 있습니다. 하지만 이 접근 방식에서는 광학 설계, 정밀 타이밍 회로, 신호 처리 기능을 신중하게 혼합해야 하므로 개발자가 효과적인 3D ToF 플랫폼을 구현하는 데 어려움이 있습니다.

이 기사에서는 ToF 기술의 미묘한 차이를 설명하고, 개발자가 3D ToF 응용 제품의 시제품을 빠르게 제작하고 고유의 요구 사항을 준수하는 3D ToF 설계를 구현하는 데 필요한 경험을 쌓는 데 두 가지 기성 3D ToF 키트(Analog DevicesAD-96TOF1-EBZ 개발 플랫폼 및 ESPROS PhotonicsEPC660 평가 키트)가 얼마나 도움이 되는지를 보여줍니다.

ToF 기술이란?

ToF 기술은 소스에서 에너지를 전송하는 시간과 반사되는 에너지가 소스에 수신되는 시간 차이를 측정하여 물체와 일부 소스 지점 사이의 거리를 파악하는 일반적인 원칙에 기반합니다(그림 1).

시스템과 외부 물체 사이의 거리를 계산하는 ToF 시스템의 구성도그림 1: ToF 시스템에서는 에너지를 전송한 후 시스템에서 물체에 반사되는 에너지를 수신할 때까지 걸리는 시간 지연을 측정하여 시스템과 외부 물체 사이의 거리를 계산합니다. (이미지 출처: Analog Devices)

기본 원칙은 동일하게 유지되지만, ToF 솔루션은 매우 다양하며 초음파, 광감지기 및 거리 측정기(LiDAR), 카메라, 밀리미터파(mmWave) RF 신호 등 기본 기술에 따라 고유한 기능과 한계를 지니고 있습니다.

  • 초음파 ToF 솔루션은 저비용 솔루션이지만 물체에 대한 범위 및 공간 분해능 제한이 있습니다.
  • 광학 ToF 솔루션은 초음파 시스템보다 더 우수한 범위 및 공간 분해능을 실현할 수 있지만 짙은 안개 또는 연기로 인한 성능 저하가 발생합니다.
  • mmWave 기술을 기반으로 하는 솔루션은 일반적으로 복잡하고 비싸지만 연기, 안개, 비 등에 상관없이 대상 물체의 속도 및 방향 관련 정보를 제공하면서 폭넓은 범위에서 작동할 수 있습니다.

제조업체에서는 필요에 따라 각 기술을 활용하여 특정 요구 사항을 충족합니다. 예를 들어 초음파 센서는 로봇이 경로를 따라 이동하거나 운전자가 차량을 주차할 때 장애물을 감지하는 데 적합합니다. 반면 mmWave 기술을 사용하면 기타 센서가 악천후 조건을 통과할 수 없는 경우에도 차량에서 도로를 따라 접근하는 위험을 감지하는 데 필요한 장거리 감지 기능을 제공할 수 있습니다.

ToF 설계는 단일 송신기/수신기 쌍을 기반으로 제작될 수 있습니다. 예를 들어 간단한 광학 ToF 설계에서는 개념적으로 일부 영역을 비추는 LED와 영역 내에서 물체에 대한 반사를 감지하기 위한 광 다이오드만 있으면 됩니다. 이 설계는 간단해 보이지만 지연을 측정하기 위한 정밀 타이밍 및 동기화 회로가 필요합니다. 또한 조명 신호를 배경 출처와 구분하거나 더 복잡한 지속파 방법을 지원하기 위해 변조 및 복조 회로가 필요할 수 있습니다.

개발자가 ToF 시스템에서 신호 대 잡음비(SNR)를 개선하고 아티팩트를 제거하려 한다면 설계는 급속도로 복잡해집니다. 복잡성에 더하여 고급 감지 솔루션에서는 여러 송신기와 수신기를 사용하여 여러 물체를 추적하거나 더 정교한 동작 추적 알고리즘을 지원합니다. 예를 들어 mmWave 시스템에서는 여러 수신기를 사용하여 여러 개별 물체의 방향과 속도를 추적합니다. ("밀리미터파 레이더 키트를 사용하여 정밀 물체 감지 설계 개발 시간 단축" 참조)

3D 광학 ToF 시스템

3D 광학 ToF 시스템은 일반적으로 전하 결합 소자(CCD) 어레이를 기반으로 하는 이미징 센서를 사용하여 더 많은 수신기를 활용할 수 있습니다. 한 세트의 렌즈가 CCD 어레이에 일부 관심 영역의 초점을 맞출 경우 CCD 어레이의 각 전하 저장 장치는 관심 영역 내 해당 지점에서 반사되는 조명에 의해 충전됩니다. 펄스 또는 지속파 조명과 동기화되고 CCD 어레이에 도달하는 반사 조명은 기본적으로 각각 창 또는 위상 순으로 캡처됩니다. 이 데이터를 추가로 처리하여 복셀(VOlume piXELs)로 구성된 3D 깊이 지도를 생성합니다. 여기서 복셀 값은 관심 영역에서 해당 지점까지 거리를 나타냅니다.

비디오의 프레임과 마찬가지로 이미지 캡처 시스템의 프레임 속도만으로 임시분해능을 제한하고 CCD 어레이 및 광학 시스템만으로 공간 분해능을 제한한 상태에서 개별 깊이 지도를 순서대로 캡처하여 측정치를 제공할 수 있습니다. 더 큰 320 x 240 CCD 이미저를 이용할 수 있게 되면서 고분해능 3D 광학 ToF 시스템이 산업 자동화, 무인 항공기(UAV), 제스처 인터페이스를 비롯한 광범위한 응용 분야에서 사용되고 있습니다(그림 2).

제스처 인터페이스 시스템에 세부 데이터를 제공할 수 있는 3D 광학 ToF 이미지그림 2: 높은 프레임 속도와 공간 분해능으로 3D 광학 ToF는 제스처 인터페이스 시스템에서는 ToF 카메라를 향해 손을 올리는 사람(그림 참조)과 같은 세부 데이터를 제공할 수 있습니다. (이미지 출처: ESPROS Photonics)

대부분의 카메라 기반 방법과 달리 3D ToF 시스템은 음영이나 변화하는 조명 조건에서도 정확한 결과를 제공할 수 있습니다. 이러한 시스템에서는 일반적으로 시스템에 사용되는 메가헤르츠(MHz) 스위칭 속도로 작동 가능한 레이저 또는 고전력 적외선 LED(예: LumiledsLuxeon IR LED)를 사용하여 자체 조명을 제공합니다. 입체 카메라와 같은 방법과 달리 3D ToF 시스템은 자세한 거리 정보를 생성하기 위한 콤팩트 솔루션을 제공합니다.

사전 빌드된 솔루션

하지만 3D ToF 시스템을 구현하기 위해 개발자는 여러 설계 과제를 해결해야 합니다. 앞서 언급한 타이밍 회로 외에도 이러한 시스템에서는 각 창 또는 위상 측정을 위해 CCD 어레이에서 결과를 빠르게 판독한 후 해당 원시 데이터를 깊이 지도에 반환하는 데 필요한 처리 작업을 완료하도록 최적화되고 신중하게 설계된 신호 처리 파이프라인을 따릅니다. 고급 3D ToF 이미저(예: ESPROS Photonics의 EPC660-CSP68-007 ToF 이미저)는 3D ToF 측정을 수행하고 픽셀당 12비트 거리 데이터를 제공하는 데 필요한 전체 타이밍 및 신호 처리 기능 보완과 320 x 240 CCD 어레이를 결합합니다(그림 3).

ESPROS Photonics의 epc660 구성도(확대하려면 클릭)그림 3: ESPROS Photonics epc660은 원시 이미저 데이터를 깊이 지도로 변환하는 데 필요한 전체 타이밍 회로 및 컨트롤러 보완과 320픽셀 x 240픽셀 이미저를 통합합니다. (이미지 출처: ESPROS Photonics)

ESPROS Photonics의 EPC660-007 카드 에지 커넥터 칩 캐리어는 감결합 커패시터와 카드 에지 커넥터로 구성된 37.25mm x 36.00mm 인쇄 회로 기판(pc 기판)에 epc650 이미저를 실장합니다. 이 칩 캐리어가 3D ToF 시스템 설계에서 기본 하드웨어 인터페이스를 처리하지만 프런트 엔드에서 적절한 광학 설계를 완성하고 백 엔드에서 처리 리소스를 제공하는 작업은 개발자가 수행해야 합니다. ESPROS Photonics의 epc660 평가 키트는 사전 빌드된 3D ToF 이미징 시스템 및 연결된 소프트웨어를 포함하는 전체 3D ToF 응용 개발 환경을 제공하므로 이러한 작업이 필요하지 않습니다(그림 4).

ESPROS Photonics의 epc660 평가 키트 구성도(확대하려면 클릭)그림 4: ESPROS Photonics의 epc660 평가 키트는 응용 제품에서 세부 정보를 사용하기 위해 사전 빌드된 3D ToF 카메라 시스템 및 연결된 소프트웨어를 제공합니다. (이미지 출처: ESPROS Photonics)

평가 및 빠른 시제품 제작을 위해 설계된 ESPROS 키트는 epc660 CC 칩 캐리어, 광학 렌즈 조립품, 8개 LED 세로를 결합하는 사전 조립된 카메라 시스템을 제공합니다. 카메라 시스템과 함께 512MB RAM 및 4GB 플래시가 탑재된 BeagleBone Black 프로세서 기판은 호스트 컨트롤러 및 응용 처리 리소스 역할을 합니다.

또한 ESPROS는 epc660 평가 키트 지원 소프트웨어를 제공합니다. 이 소프트웨어를 웹 사이트에서 다운로드하여 회사의 현지 영업 사무소에 암호를 요청한 후 해당 암호로 열 수 있습니다. 개발자는 소프트웨어에 대한 액세스 권한을 얻은 다음 여러 제공된 구성 파일 중 하나로 그래픽 사용자 인터페이스(GUI) 응용 프로그램을 실행하여 카메라 시스템을 작동할 수 있습니다. 또한 GUI 응용 프로그램은 공간 및 임시 필터 설정을 비롯한 추가 파라미터를 설정하고 결과를 볼 수 있는 제어 및 표시 창을 제공합니다. 개발자는 최소한의 노력으로 키트를 사용하여 깊이 지도를 실시간으로 캡처한 후 자체 응용 소프트웨어에 대한 입력으로 사용할 수 있습니다.

향상된 분해능 3D ToF 시스템

320 x 240 이미저(예: ESPROS epc660)는 많은 응용 분야에 적합하지만 제스처 인터페이스에서 작은 움직임을 감지하거나 관심 범위를 심각하게 제한하지 않으면서 작은 물체를 구분하는 데 필요한 분해능이 부족할 수 있습니다. 이러한 응용 분야의 경우 640 x 480 ToF 센서를 기반으로 하는 기성 개발 키트를 활용하면 개발자가 고분해능 응용 제품의 시제품을 빠르게 제작할 수 있습니다.

Seeed TechnologyDepthEye Turbo 깊이 카메라는 640 x 480 ToF 센서, 850nm VCSEL(Vertical-Cavity Surface-Emitting Laser) 다이오드 4개, 조명 및 감지 작동 회로망, 전력, USB 인터페이스 지원을 57mm x 57mm x 51mm의 자급형 큐브에 통합합니다. 소프트웨어 지원은 Linux, Windows, Mac OS 및 Android 플랫폼을 지원하는 오픈 소스 libPointCloud SDK github 리포지토리를 통해 제공됩니다.

C++ 드라이버, 라이브러리 및 샘플 코드와 함께 libPointCloud SDK 배포에는 빠른 시제품 제작을 위한 Python API와 가상화 도구가 포함되어 있습니다. 배포 패키지를 호스트 개발 플랫폼에 설치한 후 개발자는 USB를 통해 카메라를 컴퓨터에 연결한 후 바로 시각화 도구를 사용하여 위상, 진폭 또는 포인트 클라우드 지도를 표시할 수 있습니다. 이러한 지도는 기본적으로 텍스처 표면을 통해 렌더링되어 더 부드러운 3D 이미지를 제공하는 향상된 깊이 지도입니다(그림 5).

Seeed Technology DepthEye Turbo 깊이 카메라 소프트웨어 이미지그림 5: Seeed Technology DepthEye Turbo 깊이 카메라와 함께 사용되는 연결된 소프트웨어 패키지를 활용하여 개발자는 기본 창에서 여기에 표시된 포인트 클라우드와 같은 다양한 렌더링으로 3D ToF 데이터를 쉽게 시각화할 수 있습니다. (이미지 출처: Seeed Technology/PointCloud.AI)

Analog Devices의 AD-96TOF1-EBZ 3D ToF 평가 키트는 한 쌍의 기판으로 제작되고 Raspberry PiRaspberry Pi 3 Model B+ 또는 Raspberry Pi 4를 호스트 컨트롤러 및 로컬 처리 리소스로 사용하도록 설계된 더 개방적인 하드웨어 설계를 제공합니다(그림 6).

Analog Devices의 AD-96TOF1-EBZ 3D ToF 평가 키트 이미지그림 6: Analog Devices AD-96TOF1-EBZ 3D ToF 평가 키트는 조명 및 데이터 취득용 2기판 조립품을 로컬 처리용 Raspberry Pi 기판과 결합합니다. (이미지 출처: Analog Devices)

키트의 아날로그 프런트 엔드(AFE) 기판에는 조명 타이밍, 센서 동기화, 깊이 지도 생성을 비롯한 전체 카메라 작동을 관리하는 프로세서와 펌웨어 스토리지, CCD 어레이 및 버퍼, 광학 조립품이 있습니다. 두 번째 기판은 4개의 850nm VCSEL 레이저 다이오드 및 드라이버를 포함하며 AFE 기판에 연결되어 레이저 다이오드가 위 그림과 같이 광학 조립품을 둘러싸도록 설계되었습니다.

Analog Devices는 C/C++, Python 및 Matlab용 샘플 코드 및 래퍼와 함께 3D ToF SDK를 제공하는 오픈 소스 3D ToF 소프트웨어 제품군을 통해 AD-96TOF1-EBZ 키트를 지원합니다. 네트워크 환경에서 호스트 응용 제품과 하위 수준 하드웨어 상호 작용을 모두 지원하기 위해 Analog Devices는 SDK를 USB 및 네트워크 연결에 최적화된 호스트 파티션과 내장형 Linux에서 실행되고 Video4Linux2(V4L2) 드라이버를 기반으로 빌드된 하위 수준 파티션으로 분할합니다(그림 7).

Analog Devices의 3D ToF SDK API 구성도그림 7: Analog Devices 3D ToF SDK API는 로컬 내장형 Linux 호스트에서 실행되는 응용 제품과 네트워크 호스트에서 원격으로 실행되는 응용 제품을 지원합니다. (이미지 출처: Analog Devices)

이 네트워크 지원 SDK를 사용하면 네트워크 연결 호스트에서 실행 중인 응용 제품을 ToF 하드웨어 시스템에서 원격으로 작동하여 카메라에 액세스하고 깊이 데이터를 캡처할 수 있습니다. 또한 사용자 프로그램을 내장형 Linux 파티션에서 실행하고 해당 수준에서 사용 가능한 고급 옵션을 최대한 활용할 수 있습니다.

소프트웨어 배포의 일부로 Analog Devices는 카메라 초기화, 기본 프레임 캡처, 원격 액세스, 호스트 컴퓨터와 내장형 Linux에서 로컬로 크로스 플랫폼 캡처와 같은 주요 하위 수준 작업 기능을 시연하는 샘플 코드를 제공합니다. 추가 샘플 응용 프로그램은 이러한 기본 작업을 기반으로 하여 빌드되어 상위 수준 응용 프로그램에서 캡처된 데이터 사용(예: 포인트 클라우드 생성)을 보여 줍니다. 실제로 샘플 응용 프로그램은 심층 신경망(DNN) 추론 모델을 사용하여 카메라 시스템에서 생성되는 데이터를 분류하는 방법을 보여 줍니다. Python으로 작성된 이 DNN 샘플 응용 프로그램(dnn.py)은 추론 모델에서 데이터를 획득하고 분류를 준비하는 데 필요한 공정의 각 단계를 보여 줍니다(목록 1).

복사 import aditofpython as tof import numpy as np import cv2 as cv . . .
try:         net = cv.dnn.readNetFromCaffe(args.prototxt, args.weights)     except:         print("Error: Please give the correct location of the prototxt and caffemodel")         sys.exit(1)     swapRB = False     classNames = {0: 'background',                   1: 'aeroplane', 2: 'bicycle', 3: 'bird', 4: 'boat',                   5: 'bottle', 6: 'bus', 7: 'car', 8: 'cat', 9: 'chair',                   10: 'cow', 11: 'diningtable', 12: 'dog', 13: 'horse',                   14: 'motorbike', 15: 'person', 16: 'pottedplant',                   17: 'sheep', 18: 'sofa', 19: 'train', 20: 'tvmonitor'}       system = tof.System()     status = system.initialize()     if not status:         print("system.initialize() failed with status: ", status)       cameras = []     status = system.getCameraList(cameras) . . .
while True:         # Capture frame-by-frame         status = cameras[0].requestFrame(frame)         if not status:             print("cameras[0].requestFrame() failed with status: ", status)           depth_map = np.array(frame.getData(tof.FrameDataType.Depth), dtype="uint16", copy=False)         ir_map = np.array(frame.getData(tof.FrameDataType.IR), dtype="uint16", copy=False)           # Creation of the IR image         ir_map = ir_map[0: int(ir_map.shape[0] / 2), :]         ir_map = np.float32(ir_map)         distance_scale_ir = 255.0 / camera_range         ir_map = distance_scale_ir * ir_map         ir_map = np.uint8(ir_map)         ir_map = cv.cvtColor(ir_map, cv.COLOR_GRAY2RGB)           # Creation of the Depth image         new_shape = (int(depth_map.shape[0] / 2), depth_map.shape[1])         depth_map = np.resize(depth_map, new_shape)         distance_map = depth_map         depth_map = np.float32(depth_map)         distance_scale = 255.0 / camera_range         depth_map = distance_scale * depth_map         depth_map = np.uint8(depth_map)         depth_map = cv.applyColorMap(depth_map, cv.COLORMAP_RAINBOW)           # Combine depth and IR for more accurate results         result = cv.addWeighted(ir_map, 0.4, depth_map, 0.6, 0)           # Start the computations for object detection using DNN         blob = cv.dnn.blobFromImage(result, inScaleFactor, (inWidth, inHeight), (meanVal, meanVal, meanVal), swapRB)         net.setInput(blob)         detections = net.forward() . . .
for i in range(detections.shape[2]):             confidence = detections[0, 0, i, 2]             if confidence > thr:                 class_id = int(detections[0, 0, i, 1]) . . .
if class_id in classNames:                     value_x = int(center[0])                     value_y = int(center[1])                     label = classNames[class_id] + ": " + \                             "{0:.3f}".format(distance_map[value_x, value_y] / 1000.0 * 0.3) + " " + "meters" . . .
# Show image with object detection         cv.namedWindow(WINDOW_NAME, cv.WINDOW_AUTOSIZE)         cv.imshow(WINDOW_NAME, result)           # Show Depth map         cv.namedWindow(WINDOW_NAME_DEPTH, cv.WINDOW_AUTOSIZE)         cv.imshow(WINDOW_NAME_DEPTH, depth_map) 

목록 1: Analog Devices 3D ToF SDK 배포에 있는 이 샘플 응용 프로그램 코드 조각은 깊이 및 IR 이미지를 수집하여 추론 모델을 사용하여 분류하는 데 필요한 몇 가지 단계를 보여 줍니다. (코드 출처: Analog Devices)

이 공정에서는 먼저 OpenCV의 DNN 메서드(cv.dnn.readNetFromCaffe)를 사용하여 기존 추론 모델에 대한 네트워크 및 연결된 가중치를 읽습니다. 이 경우 모델은 모델 크기가 상대적으로 작으면서 높은 정확성을 실현하는 것으로 알려진 Google MobileNet Single Shot Detector(SSD) 감지 네트워크의 Caffe 구현입니다. 지원되는 클래스 식별자와 클래스 레이블로 클래스 이름을 로드한 후 샘플 응용 프로그램은 사용 가능한 카메라를 식별하고 목록 1에 표시되지 않은 일련의 시각화 루틴을 실행합니다.

대용량 샘플 코드는 깊이 지도(depth_map) 및 IR 지도(ir_map)를 준비한 후(cv.addWeighted) 단일 어레이로 결합하여 정확도를 높입니다. 마지막으로 이 코드에서는 결합한 이미지를 추론에 필요한 4D blob 데이터 형식으로 변환하는 다른 OpenCV DNN 메서드(cv.dnn.blobFromImage)를 호출합니다. 코드의 다음 줄은 결과 blob를 추론 모델에 대한 입력(net.setInput(blob))으로 설정합니다. net.forward() 호출은 분류 결과를 반환하는 추론 모델을 호출합니다. 샘플 응용 프로그램의 나머지 부분에서는 사전 설정된 임계값을 초과하는 분류 결과를 식별하고 캡처된 이미지 데이터를 표시하는 레이블 및 경계 상자, 추론 모델에 의해 식별된 레이블, 카메라까지 거리 등을 생성합니다(그림 8).

Analog Devices의 3D ToF SDK 배포에 포함된 DNN 샘플 응용 프로그램 이미지그림 8: 몇 줄로 구성된 Python 코드와 OpenCV 라이브러리를 사용하여 Analog Devices 3D ToF SDK 배포의 DNN 샘플 응용 프로그램에서는 깊이 이미지를 캡처한 후 분류하고 식별된 물체의 레이블과 거리를 표시합니다. (이미지 출처: Analog Devices)

Analog Devices의 DNN 샘플 응용 프로그램에서 살펴본 바와 같이 개발자는 3D ToF 깊이 지도를 머신 러닝 방법과 함께 사용하여 더 정교한 응용 기능을 생성할 수 있습니다. 짧은 응답 대기 시간이 필요한 응용 제품에서는 C/C++를 사용하여 이러한 기능을 제작할 가능성이 높지만 기본 단계는 동일합니다.

3D ToF 데이터 및 고성능 추론 모델을 사용하는 산업용 로봇 시스템에서는 인간과 로봇이 근접한 위치에서 협력하여 작업하는 "코봇" 환경에서 인간 또는 다른 장비와 움직임을 안전하게 동기화할 수 있습니다. 다른 추론 모델을 사용하는 응용 제품에서는 고분해능 3D ToF 카메라를 사용하여 제스처 인터페이스에 대한 세부 움직임을 분류할 수 있습니다. 자동차 응용 분야에서 이 방법을 사용하면 3D ToF 시스템에서 제공되는 높은 임시 및 공간 분해능을 최대한 활용하여 고급 운전자 지원 시스템(ADAS)의 정확성을 개선할 수 있습니다.

결론

ToF 기술은 기본적으로 시스템과 다른 물체 사이의 정확한 거리 측정에 의존하는 거의 모든 시스템에서 핵심적인 역할을 합니다. ToF 기술 중에서 광학 3D ToF는 높은 공간 분해능과 높은 임시 분해능을 모두 제공하여 작은 물체를 세부적으로 구분하고 상대적 거리를 정밀하게 모니터링할 수 있습니다.

하지만 이 기술을 활용하기 위해 기술자는 광학 설계, 정밀 타이밍, 동기화된 시스템 신호 취득과 관련한 여러 과제를 해결해야 했습니다. 앞서 살펴본 바와 같이 사전 빌드된 3D ToF 시스템(예: Analog Devices의 AD-96TOF1-EBZ 개발 플랫폼, ESPROS Photonics의 EPC660 평가 키트)의 출시로 산업용 시스템, 제스처 인터페이스, 자동차 안전 시스템 등에서 이 기술을 적용하기 위한 장애물이 제거되었습니다.

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 Digi-Key Electronics의 의견, 생각 및 견해 또는 Digi-Key Electronics의 공식 정책과 관련이 없습니다.

작성자 정보

Stephen Evanczuk

Stephen Evanczuk는 전자 산업에 관해 하드웨어, 소프트웨어, 시스템, 응용 제품(예: IoT)을 비롯한 광범위한 주제에 대해 20년 이상 집필한 경력을 갖고 있습니다. 그는 신경 과학의 뉴런 네트워크 박사 학위를 받았으며항공 우주 산업 분야의 광범위하게 분포된 보안 시스템 및 알고리즘 가속 메서드 관련 업무를 수행했습니다. 현재, 기술 및 엔지니어링에 대해 기사를 쓰지 않을 때에는 인식 및 추천 시스템에 대한 심층적 학습 응용 프로그램을 연구하고 있습니다.

게시자 정보

Digi-Key 북미 편집자