Unity에 Yolov3-tiny onnx 모델 적용
지난번 Darknet을 통한 yolo3-tiny 훈련을 진행했고 onnx로 컨버팅 진행에 대한 내용을 게시했었다.
다만 이전 게시물에서 잘못된 사항이 있어서 수정해 주었다.
수정 부분은 다음과 같다.
기존 내용
input_names='input1', image_input_names='input1', output_names=['output2', 'output1'], image_scale=1/255.,
수정 내용
input_names='input1', image_input_names='input1', output_names=['output1', 'output2'], image_scale=1/255.,
output의 위치가 바뀌어야 했던 것이다.
컨버팅은 정상적이어도 netron에서 확인하면 출력이 제대로 안 된 것으로 확인된다.
이제 onnx로 컨버팅 하면 Unity의 몇 가지 설정이 필요하다.
Unity의 barracuda 문서중 지원하는 아키텍처를 확인해 보면 사실 모든 버전에서 yolo v3를 지원한다는 내용이 없다.
아래와 같이 가장 최종 버전에도 나오지 않는다.
Supported neural architectures and models | Barracuda | 3.0.1 (unity3d.com)
Supported neural architectures and models | Barracuda | 3.0.1
Supported neural architectures and models Barracuda currently supports the following neural architectures and models:
docs.unity3d.com
분명 본 거 같은데 나오질 않는다.
그래서 더 찾아보면 change log에 있는데 일단은 지원하는 버전은 1.2.0부터이다. yolov3-tiny까지 지원한단다..
Release notes | Barracuda | 1.2.0-preview (unity3d.com)
Release notes | Barracuda | 1.2.0-preview
docs.unity3d.com
그러면 이 버전만 설치하면 되냐.. 안된다.. 그냥 높은 버전을 설치하면 모두 해결된다.
아래와 같이 제대로 된 버전을 인식한다.
그리고 이제 기존의 yolov2-tiny를 구동하는 scripts 코드를 수정해줘야 한다.
이전 게시물에서 수정한 것이 먼저 filters였다. 이것을 Unity에서도 거기에 맞게 코드를 수정해 줘야 한다.
수정한 사항은 다음과 같다.
Detector.cs 파일의 일부만 수정
기존의 yolov2-tiny는 5, v3-tiny는 3
public const int BOXES_PER_CELL = 3;
anchors 값 수정 : 훈련했을때의 값을 입력, v2-tiny를 하면 너무 작게 나온다
private float[] anchors = new float[]
{
10,14, 23,27, 37,58, 81,82, 135,169, 344,319
};
바운딩박스의 w, h 크기 변경
private CellDimensions MapBoundingBoxToCell(int x, int y, int box, BoundingBoxDimensions boxDimensions)
{
return new CellDimensions
{
X = ((float)y + Sigmoid(boxDimensions.X)) * CELL_WIDTH,
Y = ((float)x + Sigmoid(boxDimensions.Y)) * CELL_HEIGHT,
Width = (float)Math.Exp(boxDimensions.Width) * anchors[6 + box * 2],
Height = (float)Math.Exp(boxDimensions.Height) * anchors[6 + box * 2 + 1],
};
}
그리고 빌드하고 테세트해 보면 제대로 인식된다.
다만 카메라 프레임율은 yolov2-tiny보다는 좋고 되기는 하는 거 같은데 인식율이 너무 형편없다.
물론 둘다 인식율이 나쁘긴 하다. 아무래도 사진을 더 찍어서 데이터를 늘려서 훈련하는 게 좋을 듯하다.
'개발 관련 > SW, App 관련' 카테고리의 다른 글
Unity 로우 폴리곤 얼음 행성 추가 (0) | 2024.10.17 |
---|---|
Unity PostProcess Bloom 효과 코드제어 (0) | 2024.10.16 |
Darknet을 통한 Yolov3-tiny 훈련 (0) | 2024.10.07 |
Unity 로우 폴리곤 행성 업데이트 (0) | 2024.10.04 |
Darknet 사물인식 진행 상황 (3) | 2024.09.26 |
댓글