detection_layer
forward_detection_layer
함수 이름: forward_detection_layer
입력
detection_layer 구조체 l
network 구조체 net
동작
detection_layer 구조체는 객체 탐지에 필요한 다양한 매개변수와 데이터를 포함하며, network 구조체는 레이어에 대한 입력 데이터를 포함합니다.
함수는 먼저 몇 가지 변수를 초기화하고, net에서 입력 데이터를 레이어의 출력 데이터로 복사합니다.
만약 l의 softmax 매개변수가 true인 경우, 함수는 각 이미지의 각 위치에 대한 출력 데이터에 softmax 활성화 함수를 적용합니다.
만약 네트워크가 학습 중인 경우(net.train이 true), 함수는 출력 데이터와 ground-truth 어노테이션을 사용하여 detection layer의 손실을 계산합니다. 구체적으로, 각 이미지의 각 위치에서 객체와 관련된 손실과 객체와 무관한 손실, 예측된 경계 상자와 관련된 손실, 예측된 클래스와 관련된 손실을 계산합니다. 이러한 손실은 누적되어 l.cost에 저장됩니다. 함수는 또한 출력 데이터에 대한 손실의 그래디언트를 계산하고 l.delta에 저장합니다.
손실과 그래디언트를 계산한 후, 함수는 훈련 과정을 모니터링하기 위해 손실과 관련된 여러 통계(평균 objectness 점수 및 평균 카테고리 점수 등)를 업데이트합니다.
마지막으로, 함수는 값을 반환합니다.
설명
객체 탐지용 신경망에서 detection layer의 forward pass를 수행하는 함수입니다.
함수는 detection_layer 구조체와 network 구조체를 입력으로 받습니다.
함수는 detection_layer 구조체의 매개변수와 데이터를 사용하여 출력 데이터를 계산하고, 네트워크가 훈련 중인 경우 손실과 그래디언트를 계산합니다.
손실과 그래디언트를 계산한 후, 함수는 통계를 업데이트하고 값을 반환합니다.
backward_detection_layer
함수 이름: backward_detection_layer
입력:
const detection_layer l: detection_layer 구조체 변수로, detection layer의 설정과 상태를 저장합니다.
network net: neural network를 나타내는 구조체 변수로, detection layer가 속한 network의 상태를 저장합니다.
동작:
detection layer의 backward propagation을 수행합니다.
axpy_cpu 함수를 사용하여, detection layer의 delta 값과 network의 delta 값을 더합니다.
설명:
detection layer는 입력 이미지에서 object detection을 수행하는 레이어입니다.
backward_detection_layer 함수는 이러한 detection layer의 backward propagation을 수행합니다.
backward propagation은 gradient를 역방향으로 전파하여, 각각의 가중치(weight)와 bias에 대한 gradient를 계산합니다.
axpy_cpu 함수는 BLAS 라이브러리 함수로, 벡터 덧셈 연산을 수행합니다.
l.delta와 net.delta는 각각 detection layer와 network의 gradient 값을 저장하는 배열입니다.
backward_detection_layer 함수는 l.delta와 net.delta를 더하여, network의 delta 값을 갱신합니다.
make_detection_layer
함수 이름: make_detection_layer
입력:
batch: 배치 크기
inputs: 입력값 크기
n: anchor box 개수
side: feature map 크기
classes: 분류할 클래스 수
coords: 각 anchor box의 좌표 개수
rescore:
동작:
detection_layer 구조체를 초기화하고, 입력값에 대한 필요한 정보를 설정함
cost, output, delta를 할당하고, truths와 outputs을 설정함
forward와 backward 함수를 설정함
"Detection Layer"라는 메시지를 출력함
설명:
make_detection_layer 함수는 detection_layer 구조체를 초기화하고, 입력값에 대한 필요한 정보를 설정한 후, 초기화된 구조체를 반환합니다. 이 함수는 YOLO 신경망에서 사용되는 detection layer를 생성하는 데 사용됩니다.
batch는 한 번에 처리할 데이터의 개수이며, inputs는 이전 레이어의 출력값의 크기입니다. n은 anchor box의 개수이고, side는 feature map의 가로, 세로 크기입니다. classes는 분류할 클래스의 개수이며, coords는 각 anchor box의 좌표 개수입니다. rescore는 YOLOv2에서 사용되는 값으로, bbox의 정확도를 측정하는 데 사용됩니다.
이 함수는 detection_layer 구조체를 초기화하고, 입력값에 대한 필요한 정보를 설정합니다. 그리고 cost, output, delta를 할당하고, truths와 outputs을 설정합니다. 마지막으로 forward와 backward 함수를 설정하고, "Detection Layer"라는 메시지를 출력합니다.
get_detection_detections
함수 이름: get_detection_detections
입력:
layer l: YOLO 네트워크에서 출력 레이어
int w: 입력 이미지의 너비
int h: 입력 이미지의 높이
float thresh: objectness score의 최소 임계값
detection *dets: 각 검출 객체의 정보를 저장할 detection 구조체 배열
동작:
YOLO 네트워크 출력값을 받아서 객체 검출 수행
객체 검출 결과를 detection 구조체 배열 dets에 저장
설명:
YOLO 네트워크에서 출력 레이어의 출력값(predictions)을 받아서, 객체 검출 수행
l.side는 출력 레이어의 가로 세로 크기, l.n은 각 셀마다 예측한 bounding box의 개수, l.classes는 클래스 개수
레이어의 출력값을 이용하여 bounding box와 objectness score, 클래스 확률값 계산
계산한 정보를 detection 구조체 배열 dets에 저장하고 반환
Last updated