관리 메뉴

선택과 집중

62日_<차량 파손 인공지능> 프로젝트 test 과정 설명 part2 본문

삶의 질 수직상승/AI 기술이 뭐야?

62日_<차량 파손 인공지능> 프로젝트 test 과정 설명 part2

500% 2023. 1. 18. 11:00
반응형

이미지 전처리

- 이미지를 255로 나눠주어서

-0~255 원사이드(즈?) 8bit 인티저로 되어있던 이미지를

> 0~1 사이즈의 값으로 노멀라이즈 해줌

 

-파이토치에 넣기 위해서, 채널을 앞으로 당겨주고

-배치형태로 만들기 > torch.Size(1, 3, 256, 256) 사이즈의 이미지 인풋이 만들어짐.

 

 

모델 추론

-모델에 넣어주기만 하면 됨.

-아웃풋 의 사이즈는 torch.Size(1, 2, 256, 256) 사이즈

 

 

후처리 및 추론 마스크 시각화

-손상된 부분이 노란색으로 나옴.

 

-0~1 사이즈의 값으로 트랜스포즈 해줌

-최초 창의 크기를 가로 세로 8인치로 설정한 뒤, 이미지를 표시해줌.

 

*참고) ndim과 dim의 차이

ndim은 array dimension(배열의 차원)을 의미하고

dim은 차원을 의미함.

ㄴdim이 말하는 차원은 선형대수에서 말하는 행렬의 차원과 같은 개념

참고) argmax 뜻?

argmax는 arguments of the maxima의 축약형

ㄴargument는 함수의 입력

= 즉, f(x)의 최대값을 만들어주는 입력 x자체

 

 

결과

-히트맵으로 원본 이미지 위에 올려서 시각화.

(빨간색 부분이 손상된 부분이다.~라고 모델에 인식한 것)

 

fig, axes = plt.subplots(*) : *이 ax들을 가지는 하나의 figure 생성

nrows는 행의 수(ex. 1번째 행까지 데이터를 불러오고 싶다)

ncols는 열의 수, figsize는 창의 크기

 

astype 메서드는 열의 요소의 dtype을 변경하는함수

Matplot에는 여러 개의 Color를 섞은 Colormap이 있습니다.  여기서 cmap은 'jet'

 

 

 

 

 

 

여러 형태의 파손 영역 감지

 

파손 네 개 형태를 따로 할 수도 있지만,

여러 형태의 파손을 전부 다  models 리스트에 넣어서 전부 다 넣어놓은 다음에

여러 형태의 샘플이 있는 파손 이미지를 가져다가, 똑같이 추론을 돌려서 시각화 해주면 된다.

 

 

 

파손 영역 크기 계산

-파란색은 전부 다 0으로 채워져 있고,

빨간색은 전부 다 1로 채워져있다

 

파손영역 픽셀의 수를 계산하려면

이미지에서 픽셀을 전부 다 더하면

빨간색 영역의 픽셀 수가 나옴.

 

파손 영역 크기 계산하려면

아웃풋에서 썸 = 즉, 전부다 더해주면 된다.

 

그런데 라벨별로(파손 형태별로) for 문을 돌려야 되니까

파손 형태별로 어느 정도 파손이 되었는지 알 수 있는데

 

Breakage 같은 경우, 1746픽셀이 인식이 되었고

Crushed같은 경우, 3702픽셀이 인식

Scratch같은 경우, 7407픽셀이 인식

Seperated같은 경우, 2297픽셀이 인식

 

=그래서 이 파손 같은 경우, 긁힌 영역이 가장 많다는 것을 알 수 있다.

 

 

 

 

그래서 예를들어 카센터를 하고 있는데

파손 영역에 따라 차등적으로 비용을 책정하고 싶다라면,

 

파손 1픽셀 당 - 얼마

이렇게 가격 표(Price tag)를 만들 수 있다. 

 

그래서 결국, 곱해서 다 더해준다.

그러면 결과값(총 수리비)가 산출될 수 있다 :)

 

 

 

*참고) 파이썬에서 f-string사용법

 

[변수치환 기능]

중괄호({})를 사용하면, f-string 안에 파이썬의 표현식(expression)을 삽입할 수 있다.

f-string은 문자열 안에 변수 값을 삽입하는 용도로 사용될 때 그 진가가 발휘됨.

 

 

 

참고) 유튜브 '빵형의 개발도상국'

https://www.youtube.com/watch?v=mmWg_sU9bXY 

 

반응형