본문 바로가기

분류 전체보기

(116)
EfficientNet(1) 간만의 포스팅이다. CNN으로 Classification을 만들었다. 필자가 하고자 했던 것은 얼굴 사진으로 얼굴이 건조한지 아닌지를 분류하고 싶었다. (정확히 말하자면, 얼굴의 각질의 유무를 구분하고 싶었다.) 이미지를 통한 분류 작업이었기 때문에 CNN으로 눈을 돌렸다. 우선, CNN의 여러가지 기법을 찾아보았다. 간단한 기법인 줄 알았지만 역사도 길고, CNN기법에서도 여러가지가 있다는 것을 링크에서 확인했다. 그 중 가장 많이 보고 들었던 VGG-16을 처음으로 시도해보았다. 이미지 데이터가 있어야 했기에 데이터는 구글과 네이버에서 크롤링을 진행했다. 쓸만한 데이터가 각질을 포함한 얼굴 부분, 각질이 없는 얼굴 부분 각각 150개정도밖에 나오지 않았다. training set의 class별 최소 ..
dataframe 이중 for문 없애기 위의 dataframe의 전처리 작업을 위해 아래와 같이 코드를 작성하였다. 코드는 dataframe 내의 모든 셀들을 특정 threshold 이상이면 None을 주고 나머지 값들은 살려두려고 한다. 즉, threshold 이상의 값이면 None 값으로 replace 한다는 뜻이다. 기존에는 이중포문으로 시행을 했었으며, 출력된 시간을 확인하면 시간이 꽤 소요된다는것을 알 수 있다. pandas의 boolean indexing 이라는 것을 확인했다. pandas documentation 위와 같이 변경했으며, 현저하게 빠른 속도로 처리했음을 확인했다.
이미지 회전시키기 가끔 이미지 처리를 해야할 경우가 온다. 필자의 경우에는 이러한 데이터였으며, 이 데이터의 윤곽선을 따라 따로 저장했다. 하지만, 세로로 된 이미지가 필요했다. 따라서, 간단하게 if문을 추가하여 가로로 된 이미지들을 세로로 회전시키는 작업을 했다. height, width = warped.shape[:2] if height < width: warped = cv2.rotate(warped, cv2.ROTATE_90_CLOCKWISE) 이미지(warped)의 가로 세로를 확인하여 가로가 더 길 경우 시계방향으로 90도 회전하겠다는 코드이다.
plt.imshow() 이미지 늘리기 fig, axes = plt.subplots(ncols=3, figsize=(15,10)) axes[0].imshow(warped, extent=[0,len(df_warped.columns),0,len(df_warped.index)]) sns.heatmap(df_warped, cbar=False, ax=axes[1]) sns.distplot(df_warped, bins= df_warped_len, hist=True, kde=False, rug=False, ax=axes[2]) axes[2].grid(True) plt.show() subplots를 이용하여 여러개의 사진을 한번에 띄우려고 노력했다. 제일 좌측에 있는 그림은 image 파일이이서 원본 그대로 나오게 된다. 따라서 비율 조정이 잘 되지 않았기..
wsl ubuntu에서 jupyter notebook실행 시 powershell 우분투에서 폴더를 잘 못 건드려서 새로이 설치를 해야하는 경우가 생겼다. 로컬에서 사용하던 코드들은 git에 있기에 상관이 없었다. 새롭게 ubuntu20.04를 설치하고, 주피터노트북을 실행했는데 아래와 같이 되었다. 저 이후에 주피터노트북이 실행이 되지 않았다. 지인에게 의견을 물어보았고, 제대로 작동하게 만들었기에 이 글을 쓴다. (같은 실수로 시간을 뺏기는 일이 없도록 하자.) 0. $ python >>> from notebook.auth import passwd >>> passwd() 위에서 python을 실행시킨 뒤 해당 코드를 삽입하면, 필자의 경우에는 "aragon2:$~~~ " 이라는 패스워드가 나왔다. 이를 복사두자. 아래에서 사용할 예정이다. 1. jupyter notebook --g..
ValueError: Unknown label type: 'unknown' 흠... decision tree라던지.. linear regression이라던지... 실행시키니 제목과 같은 에러가 떴다 안의 값들이 int 형태여야하는데, object로 되어있었음을 알아냈었다. df_new = df.apply(pd.to_numeric, errors='coerce') 위와같이 변환을 시켜주고 실행하니 잘 실행됨
하르 캐스케이드 얼굴 검출 에러 haarcascade를 통해 얼굴 검출을 하기 위해서 아래와 같은 코드를 삽입했다. face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 이렇게 했더니 아래와 같은 코드가 나옴. SystemError: returned a result with an error set 구글링을 해보니, face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') 위처럼 기존 코드에 "cv2.data.haarcascades +" 를 삽입하면 에러없이 진행된다.
cv2.imwrite() plt.imshow()를 했을 때는 기존의 색상으로 잘 보였는데, cv2.imwrite()로 저장을 하려니 색상이 이상해졌음! plt.imshow()의 이미지 이후 cv2.imwrite()로 저장을 하니 아래와 같이 저장이 됨 그래서 찾아보니, matplotlib은 RGB순서로 이미지를 읽고, cv2는 BGR이라서 그렇다고 함! 따라서, image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) 로 변환 후 cv2.imwrite()로 저장하면 기존의 원하던 색상으로 저장이 되어있음을 확인함!