보통 Convolution Neural Network라는 인공신경망을 통해서 사진의 종류를 분류함.
아래는 신경망의 층을 통과하면서 눈, 귀, 코 등의 특징이 어떻게 추출되는지 보여주는 과정임.
모델의 가중치는 학습 과정을 통해서 결정되는데 이부분 설명은 생략함.
위에 사진 보면 눈이나 코 귀 영역이 추출되가는게 보이지?
이런식으로 추상화되서 각각의 특징에 대해 가중치를 준 다음. 고양이일 확률 몇퍼, 개일 확률 몇퍼 분류하는거임.
대표적으로 ImageNet을 보통 벤치마크 데이터셋으로 사용하는데 1,281,167개의 이미지로 학습하고 5만개의 이미지로 테스트하는데 1000개의 종류로 분류할 때
현재 최고성능이 Top1 acc가 90퍼임 Top5 acc라고 상위 5개에 정답이 있을 확률에 대한 정확도는 99.99고
근데 이런 모델들은 서버에 올리기에 매우 무거움. 돈많으면 올리겠지만 보통 MobileNet이라는 가볍고 빠른 모델 사용하는데 이게 v3가 Top1 정확도가 79퍼 Top5가 94퍼정도 나옴.
DNA DB 비교 원리 추측
여기서 마지막 FeatureMap을 DNA라고 하는 거 같은데 이 벡터를 DNA DB의 다른 DNA들과 코사인 유사도 같은걸로 계산해서 가중평균이나 아니면 자체 신경망을 또 따로 갖고 필터링하는거 같음. 전에 찾아보니까 Triplet Loss로 학습한 MobileNet 사용하더라. MobileNet이 임베디드용으로 개발된거라 cpu로 실시간 동작할정도로 빠르긴한데 성능이 상대적으로 좀 안좋음.
모델 파일 다운 받으면 원인을 좀 파악 할 수 있을텐데 신청해야하길래 귀찮아서 아직 안했음.
ImageNet 기반 사전학습 모델을 그대로 사용했다고 하면 입력이 227x227인데 요즘 못해도 화질이 1280x720 이럴텐데 이걸 저화질로 바꾸면서 Aliasing 문제가 생기고 모델 자체 파라미터 수도 적어서 성능이 안좋을거임.
차라리 신고받거나 사법 당국에서 공문 날아왔을 때 잡는 게 더 효율적일 듯