이전 프로젝트(https://codestudycafe.tistory.com/47)에서 라벨링을 하는 툴을 만들었습니다. 먼저 이 툴을 이용해 라벨링을 해 줍니다.
우선 이정도로만 만들고 머신러닝을 학습해 보겠습니다.
먼저 GPU를 사용할 수 있게 세팅을 해줍니다.
몇가지 필요한 설정을들 import한 다음 이미지 파일을 받아옵니다. 저는 data에 원본 이미지, filter에 라벨링한 이미지를 넣었습니다.
이미지를 다 가져오고 크기를 확인해 봅니다.
보니까 몇가지 문제가 있는 것 같네요. 우선 이미지가 너무 큽니다. U-net 논문에서는 572*572 이미지를 사용했는데 그것보다 4배 정도 큰 것 같네요. 그리고 label의 shape가 (8, 1356, 1018, 4)입니다. 마지막 차원이 1이길 바랬는데 .png 파일이라 그런지 투명도까지 포함해서 4차원이 된 것 같습니다.
cv2.resize를 이용해 크기 문제를 해결해 봅시다.
image와 label의 최대값, 최소값을 확인해 봅시다.
값의 범위가 0 ~ 255입니다. 이것을 0 ~ 1로 바꿔봅시다.
원본 이미지만 한번 출력해 봅시다.
비율이 맞지 않으니 조금 찌그러 진 것을 볼 수 있습니다. 하지만 뭐 어때요. 파는것도 아닌데.
저는 label에 있는 값이 0 아니면 1이여야 한다고 생각합니다. label에서 0이 아닌 값 중 가장 작은 값을 봅시다.
0.5를 기준으로 큰 것은 1, 작거나 같은 것은 0으로 만들어 줍니다.
크기도 줄였고 0 아니면 1로 만들어 주었습니다. 이제 (8,200,200,4)로 되어 있는 이미지를 (8,200,200)으로 바꿔 줍니다.
이제 이미지를 출력해 봅시다.
잘 나온 것 같긴 한데 따로 보니까 정확히 알기는 어렵네요. 겹쳐서 보도록 합니다.
현재 train_label의 type은 float64인데 cvtColor에서는 float32를 입력으로 받기 때문에 변환을 해 주었습니다.
addWeighted는 같은 타입끼리 연산을 해 주기 때문에 train_image도 float32로 바꾸었습니다.
이정도면 얼추 잘 되었다고 할 수 있겠네요. 다음부터 모델을 만들고 학습을 시켜 보도록 하겠습니다.
'프로젝트' 카테고리의 다른 글
java script - 프로젝트 1 - 4. 영어 한글 변환기 확장 프로그램 개시 (0) | 2024.07.15 |
---|---|
opencv - 프로젝트 2 - 3. 카드 인식 (0) | 2024.06.28 |
opencv - 프로젝트 2 - 1. 카드 인식 (0) | 2024.06.08 |
opencv - 프로젝트 1 - 1. 얼굴 모자이크 (0) | 2024.06.02 |
java script - 프로젝트 1 - 2. 영어 한글 변환기 (0) | 2024.05.14 |