2_EDA Analysis
210824
์ ์๊ถ๋๋ฌธ์ ์ด๋ฏธ์ง ์ฌ์ง์ ๋ชจ๋ ์ญ์ ํฉ๋๋ค.
Lesson 2 - Image Classification & EDA
2๊ฐ์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๋ ๊ณผ์ ์ธ EDA(Exploratory Data Analysis)์ ๋ํด ์งํ๋์์ต๋๋ค. ๋ชจ๋ธ์ ์ค๊ณํ๋๋ฐ ์์ด ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๋ ์์ ์ ์ค์ํฉ๋๋ค. ์ด ์ค์ต ์๋ฃ์์๋ ๋ง์คํฌ ๋ฐ์ดํฐ์ ์ ์ด์ฉํ์ฌ ๊ฐ๋จํ ๋ถ์ ๋ฐ ์๊ฐํ๋ฅผ ํด๋ด ๋๋ค.
๋ง์คํฌ ๋ฐ์ดํฐ์ ์๋ ๋ค์ํ ์ ๋ณด๊ฐ ์กด์ฌํฉ๋๋ค. ๋์ ์์ผ์์ ๋ชจ๋ ์ฌ๋์ ์ ๋ณด๋ฅผ ์์งํ์ฌ ์ฑ๋ณ๊ณผ ์ฐ๋ น์ ๋ํ ๋ถํฌ๋ฅผ ๋ถ์ํ ์๋ ์๊ณ ์ด๋ฏธ์ง ๊ฐ์ ๋ถํฌ๋ฅผ ํ์ ํ ์ ์์ต๋๋ค. ํน์ ๊ฐ๋ณ ์ด๋ฏธ์ง๋ฅผ ์๊ฐํํ์ฌ ์ด๋ ํ ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ์ํ ์๋ ์๊ณ ๋ง์คํฌ์ ์ ๋ฌด์ ๋ฐ๋ผ ์ด๋ฏธ์ง๊ฐ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ๋น๊ตํด๋ณผ ์๋ ์๊ฒ ์ฃ . ์ด ์ฝ๋๋ ๋จ์ํ ์์์ด๋ฉฐ ์ด ๋ณด๋ค ๋ ๋ง์ ๋ถ์์ ์์ ๋กญ๊ฒ ํ ์ ์์ต๋๋ค!
0. Libraries & Configurations
os : ์ด์ ์ฒด์ ์ ์ํธ ์์ฉํ๊ธฐ ์ํ ์์ญ ๊ฐ์ง ํจ์๋ค์ ์ ๊ณตํ๋ค. ์ฌ๊ธฐ์๋ ์ฃผ๋ก ์ด๋ฏธ์ง์ ํด๋์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ฃผ๊ธฐ ์ํ ๋๊ตฌ๋ก ์ฌ์ฉํ๋ค.
sys : ํ์ด์ฌ ์ธํฐํ๋ฆฌํฐ๊ฐ ์ ๊ณตํ๋ ๋ณ์์ ํจ์๋ฅผ ์ง์ ์ ์ดํ ์ ์๊ฒ ํด์ฃผ๋ ๋ชจ๋์ด๋ค. ์ฌ๊ธฐ์๋ ์ ์ธ๋ง ํ ๋ฟ ์ฌ์ฉํ์ง๋ ์์๋ค.
glob : ํน์ ํ ํจํด์ ๊ฐ์ง๊ณ ํ์ผ๋ค์ ๋ฆฌ์คํธ๋ฅผ ๋ฝ์ ๋ ์ฌ์ฉํ๋ค. ์ด๋ฏธ์ง๋ฅผ ์ด๊ธฐ ์ํด ํ์ผ๋ช ์ ๊ตฌํ ๋ ์ฌ์ฉํ ๊ฒ์ด๋ค.
cv2 : Open Source Computer Vision Library์ ์ฝ์ด๋ก ์คํ์์ค ์ปดํจํฐ ๋น์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ด๋ฏธ์ง๋ฅผ ์กฐ์(์ด๊ธฐ, ๋ณํ, ์ถ๋ ฅ ๋ฑ)ํ ์ ์๋๋ค. ์ด๋ฒ EDA์์ ์ด๋ฏธ์ง๋ค์ ์ด๊ณ ์ถ๋ ฅํ ๋ ์ฌ์ฉํ ๊ฒ์ด๋ค.
aistages ํ๊ฒฝ์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค์นํด์ผ ์ฌ์ฉํ ์ ์๋ค
PIL : Python Image Library์ ์ฝ์์ด๋ค. ์ด๋ฏธ์ง ๋ถ์ ๋ฐ ์ฒ๋ฆฌ๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
tqdm : ์์ ์งํ๋ฅ ์ ์๊ฐ์ ์ผ๋ก ํ์ํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
tqdm.tqdm
์ ์ง์ ๋ถํด์tqdm.notebook.tqdm
๋๋tqdm.auto.tqdm
์ ๋ง์ด ์ฌ์ฉํ๋ค.aistages ํ๊ฒฝ์์๋ ๋ค์๊ณผ ๊ฐ์ด...
time : ์ปดํจํฐ์์ ์๊ฐ์ ์ธก์ ํ๊ธฐ ์ํ ๋ชจ๋๋ก ์ฌ์ฉ๋๋ค.
seaborn : matplotlib์์ ๊ตฌํํ ์ ์๋ ๊ธฐ๋ฅ์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ตฌํ๋ ์๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
aistages ํ๊ฒฝ์์๋ ...
๋ฐ์ดํฐ๋ค์ ๊ฒฝ๋ก๋ฅผ ๋ชจ์๋๋ ์ฃผ๋จธ๋๋ก ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ค. ๋ด๊ฐ ์ง๊ธ๊น์ง ๋ดค๋ ๋ฐฉ๋ฒ์ ๋๋ฌธ์ ๋ณ์๋ก (like DATR_DIR
) ์ ์ธํ๋ ๊ฒ์ด์๋๋ฐ, ์ด๋ ๊ฒ๋ ํ ์ ์๋ ๊ฒ์ ์์๋ค.
์ฌ๊ธฐ์๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋ ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ก ๋จผ์ ์ ์ธํ๊ณ ์ฌ๊ธฐ์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ csvํ์ผ์ ๋ํ ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ณธ ๊ฒฝ๋ก์ ๋ถ์ฌ์ ์ ์ธํ๋ค.
๋ด๊ฐ ์๊ธฐ๋ก๋ ๋ฌธ์์ด๋ก ๊ฒฝ๋ก๋ฅผ ์ง์ ์ ์ผ๋ก ์ ์ธํ๋ฉด ๋ฌธ์ ๊ฐ ์์ ์๋ ์๋ค. ์ด์์ฒด์ ๊ฐ์ ๊ฒฝ๋ก ํ๊ธฐ๋ฒ์ด /
์ \
๋ก ๋๋๊ธฐ ๋๋ฌธ. ๊ทธ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋น ํ์ผ(.ipynb ๋๋ .py)์ด ์๋ ๊ฒฝ๋ก๋ os.path.dirname(os.path.abspath(__file__))
๋ก ์ ์ธํ๊ณ os.path.join
์ผ๋ก ํ์ ๋๋ ํ ๋ฆฌ๋ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ ์ธํ๋ค.
id
gender
race
age
path
0
000001
female
Asian
45
000001_female_Asian_45
1
000002
female
Asian
52
000002_female_Asian_52
2
000004
male
Asian
54
000004_male_Asian_54
3
000005
female
Asian
58
000005_female_Asian_58
4
000006
female
Asian
59
000006_female_Asian_59
ํ ์ฌ๋๋น 7์ฅ์ ์ฌ์ง์ ๊ฐ์ง๊ณ ์๋ค. ๋ฏธ์ฐฉ์ฉ 1์ฅ, ์๋ฒฝํ ๋ฏธ์ฐฉ์ฉ(ํฑ์คํฌ) 1์ฅ, ์๋ฒฝํ ์ฐฉ์ฉ(์ฝ์คํฌ) 5์ฅ. ์ด๋ฌํ ๋ฒ์ฃผํ ๋ฐ์ดํฐ๋ฅผ ์ด๋ฅผ 0๋ฒ๋ถํฐ 6๋ฒ๊น์ง ์ ์ฒ๋ฆฌ ํด์ฃผ๋ ๋ชจ์ต์ด๋ค.
python์์๋ csvํ์ผ์ pandas์ dataframe์ผ๋ก ๋ถ๋ฌ์ฌ ์ ์๋ค. ์ด๋ฅผ ์ํด pd.read_csv
๋ฅผ ์ฌ์ฉํด์ ์ด์ ์ ํด๋์ค๋ก ์ ์ธํ train.csv
์ ๊ฒฝ๋ก๋ฅผ ๋ถ๋ฌ์๋ค.
df.head()
๋ dateframe์ ๋ฐ์ดํฐ๋ฅผ ์ฒ์๋ถํฐ ๋ณด์ฌ์ฃผ๋ฉฐ ์ธ์๋ฅผ ์
๋ ฅํ์ง ์์ผ๋ฉด deafult๋ก 5๊ฐ๋ฅผ ๋ณด์ฌ์ค๋ค. ๋์์๋ถํฐ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ df.tail()
์ด ์๋ค.
1. ์ด๋ฏธ์ง RGB์ ๋ณด, ์ฌ์ด์ฆ
input์ด ๋ ์ด๋ฏธ์ง์ ๋ํ ๋ถ์์ผ๋ก ์ด๋ฏธ์ง์ ๊ฐ ์ฑ๋๋ณ ์ ๋ณด, ์ฌ์ด์ฆ, ๊ฐ์ฒด ์์น๋ฑ์ ์ด์ฉํ์ฌ ์ด๋ฏธ์ง์ ํน์ฑ๋ค์ ์์๋ด ์๋ค.
1.1 Dataset Statistics
์ฌ๊ธฐ์์ ์ ์ฒด ์ด๋ฏธ์ง์ ๋ํด์ ์ด๋ฏธ์ง์ ๊ฐ์์ ํฌ๊ธฐ, R, G, B ๊ฐ์ ํ๊ท ๊ณผ ํ์คํธ์ฐจ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
get_ext
๋ผ๋ ํจ์๋ฅผ ์ ์ธํ๋ค. ์ด๋ฆ๋ถํฐ ํ์ฅ์๋ฅผ ์ป์ ์ ์๋ค๋ ๋๋์ด ๋ฌผ์ฌ ์จ๋ค. ext๋ EXTended file system ์ ์ค์๋ง์ด๋ค.
์ธ์๋ก ํด๋ ๊ฒฝ๋ก์ ํด๋ ์ด๋ฆ์ ๋ฐ๋๋ค.
img_dir
:cfg.img_dir
๋ฅผ ์ฃผ๋ก ๋ฐ๊ฒ ๋ ๊ฒ์ด๋ค์ด์ ์
img_dir = f'{data_dir}/images'
๋ก ์ค์ ํ๋ค.
img_id
:001131_female_Asian_22
์ ๊ฐ์ ํ ์คํธ๋ฅผ ๋ฐ๋๋ค.
os.listdir
: ์ฃผ์ด์ง ์ฃผ์์ ์๋ ํ์ผ๋ช ์ ๋ฆฌ์คํธ๋ก ๋ฐํํ๋ค. ์ด์ ์ ์ค๋ช ํglob.glob
๊ณผ ๋น์ทํ ๊ธฐ๋ฅ์ด๋ค. ์ ์ฒด ์ฃผ์๋ฅผ ์ป๋ ๊ฒ์ด ์๋๋ผ ํ์ผ๋ช ๋ง ์ป๋๋ค. ๊ทธ๋์ ์ถํ์os.path.join
์ ์ฌ์ฉํ๋ค.os.path.join
: ๊ฒฝ๋ก๋ฅผ ์ด์ด์ฃผ๋ ์ญํ ์ ํ๋คex)
os.path.join('user', 'documents') == 'user/documnets
os.path.splitext
: ์ฃผ์ด์ง ํ์ผ์ ์ด๋ฆ์/
๊ณผ.
์ ๊ธฐ์ค์ผ๋ก ๋๋๋ค.
๊ทธ๋์, filename
์ 7๊ฐ์ ์ด๋ฏธ์ง ํ์ผ๋ช
์ ์ป๊ฒ ๋ ๊ฒ์ด๊ณ ์ด ์ค ์ฒซ๋ฒ์งธ ํ์ผ์ ํ์ฅ์๋ฅผ ๋ฐํํ ๊ฒ์ด๋ค.
์ด๋ฏธ์ง์ ํต๊ณ์ ์ธ(=statistics) ๋ฐ์ดํฐ๋ค์ ์ป๋ ๋ค๋ ๋ป์ผ๋ก ํจ์ ์ด๋ฆ์ get_img_stats
๋ก ์ง์ ๋ฏ ํ๋ค. get_ext
์ฒ๋ผ ํด๋ ๊ฒฝ๋ก์ ํด๋ ์ด๋ฆ์ ์ธ์๋ก ๊ฐ์ง๋๋ฐ, ์ฌ๊ธฐ์ ํด๋ ์ด๋ฆ์ ์ฌ๋ฌ๊ฐ์ธ ๊ฒ์ด ์ฐจ์ด.
img_info
๋ ์ด๋ฏธ์ง์ ๋์ด, ๋๋น, ํ๊ท , ํ์คํธ์ฐจ๋ฅผ ๋์ ๋๋ฆฌ ์ ๋ณด๋ก ๊ฐ์ง๋ค.tqdm(img_ids)
: for๋ฌธ์ด ๋๋ ๊ฒ์ progressbar๋ก ์๊ฐ์ ์ผ๋ก ํํํ๋ ค๊ณ ํ๋ค. ์ด ๋, ๋ค์์ ์ ๋ ฅํด์ฃผ๊ณ ์ปค๋์ ์ฌ์์ํด์ผ ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋ค.๊ทธ๋ฆฌ๊ณ
apt-get nodejs
๋ฅผ ์ค์นํด์ค์ผ ํ๋ค.ํ์ง๋ง, ๊ทธ๋๋ ๋ ์ ์๋๋ค. ๋๊ฐ์ด ํด๋ ํ์์ ๋๋๋ฐ ๋ญ๊ฐ ๋ฌธ์ ์ผ๊น..
np.array(Image.open(path))
: ํ์ด์ฌ ์ด๋ฏธ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ PIL์ ํจ์Image.open
์ ํตํด ์ด๋ฏธ์ง๋ฅผ ์ฐ๋ค. ์ด๋ฏธ์ง๋ฅผ ํฝ์ ๋จ์๋ก ๋ถ์ํ๊ธฐ ์ํด์ ์ด๋ฅผ numpy array๋ก ๋ณ๊ฒฝํ๋ค.img.shape
: ์ด๋ฏธ์ง์ ๋์ด, ๋๋น, ์ฑ๋ ์๊ฐ ์์๋๋ก ๋ฐํ๋๋ค.
numpy array
์ด๊ธฐ ๋๋ฌธ์ mean
๊ณผ std
๋ผ๋ numpy ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๊ท ๊ณผ ํ์คํธ์ฐจ๋ฅผ ๊ตฌํ๋ค. ์ด ๋ axis = (0, 1)
๋ก ๋ช
์ํด์ฃผ๋๋ฐ, ์ ์ฒด ํฝ์
์ ๊ฐ๋ก์ถ๊ณผ ์ธ๋ก์ถ ๋ชจ๋ ํ๋ฒ์ ์ข
ํฉํ๋ผ๋ ์๋ฏธ์ด๋ค. axis
๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋๋ค.
df.path.values[:100]
: ์์๋ค๋ฉด ๋ค์,df
๋train.csv
๋ฅผpd.read_csv
๋ก ์ฝ์ด๋ค์ธ ๊ฐ์ฒด์ด๋ค. ์ด csvํ์ผ์๋path
๋ผ๋ ์ปฌ๋ผ์ ๊ฐ์ง๊ณ ์๋ค. ์ด ์ปฌ๋ผ์ ๊ฐ๋ค์ 100๊ฐ๊น์ง๋ง ๊ฐ์ ธ์จ ๊ฒdataframe์ column ์ ๊ทผ๋ฒ์๋
df.path
์df['path']
๊ฐ ์๋ค. ๋์ด ๋์ผํ์ง๋ง, column name์ ๊ณต๋ฐฑ์ด ์๋ค๋ฉด ํ์๋ก๋ง ์ ๊ทผํ ์ ์๋ค.
1.2 ๊ฐ์ฒด์ ์์น๋ค ํ์ธํด๋ณด๊ธฐ
์กฐ๊ธ ํน์ํ ๋ถ์์ ํด๋ด ์๋ค. ์ด ๋ถ๋ถ์ ๊ฐ์ ๋ด์ฉ์ ๋ฒ์ด๋๋ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ผ๋ฏ๋ก ์๋ตํ์ ๋ ๊ด์ฐฎ์ต๋๋ค.
์ฌ๋ ์ผ๊ตด์ ์ฐพ๋๋ฐ ๋ฅ๋ฌ๋์ด ์ฌ์ฉ๋๊ธฐ ์ด์ ์, Haar Cascade๋ผ๋ ๋ฐฉ๋ฒ์ด ๋ง์ด ์ฌ์ฉ๋์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ด์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํ ํด๋ด ์๋ค.
์ด ๋ถ๋ถ์ ์ค๋ฅ๊ฐ ๋๋๋ฐ, ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ฉด ์ค๋ฅ๊ฐ ๋์ง ์๋๋ค. ๋๋ง ๋๋๊ฑด๊ฐ?
face_cascade๊ฐ ๋ฌด์์ผ๊น? ์ด๊ฒ์ cascade๋ผ ํ๋ ๊ฐ๋จํ ํน์ง์ ๊ฐ์ง๊ณ object detection์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค. ํ์ฌ์ ๋จธ์ ๋ฌ๋์ด ์ฌ๊ธฐ์ ๊ธฐ๋ฐ์ ๋์ด์ ์์ํ๋ค๊ณ ํ๋ค.
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ค๋ face_cascade๋ ์ต์ ์ threshold๊ฐ์ ํ์ตํ๊ณ ์ด๋ฏธ์ ์ผ๊ตด์ด ์๋์ง ์๋์ง์ ๋ํด ํ๋จํ๋ค๊ณ ํ๋ค. ์๋ฌด๋๋ edge detection์ ๊ฑฐ์น๋ฉด ์ฃผ๋ก ์ฌ๋์ ์ผ๊ตด์ ์ธ๋ก๋ก ํ์ํ์ ๋ชจ์์ ๊ฐ์ง๊ณ ์๊ณ ์ฌ๋์ ๋์ฝ์ ์ค๊ณฝ์ด ๋๋ฌ๋ ํ ๋ ์ด๋ฌํ ์๋ฆฌ๋ก ํ์ตํ๋ ๋ฏ ์ถ๋ค. ์ด 6000๊ฐ๊ฐ ๋๋ ํน์ง์ 38๊ฐ์ ๋จ๊ณ์ ๊ฑฐ์ณ ํ์ตํ ์ด face_cascade๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ค.
threshold๋ ๋ฌธํฑ๊ฐ์ด๋ผ๋ ๋ป์ผ๋ก, ๊ฒฐ์ ํ ์ ์๋ ์ง์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ๊ตญ์ด ์ํ ์ ์๊ฐ 60์ ์ด์์ด์ด์ผ๋ง ์ฌ์ํ์์ ๋ฉด์ ๋๋ค๋ฉด ์ฌ๊ธฐ์ threshold๋ 60์ ์ด๋ค. edge detection์ ํ๋ฉด ์ด๋ฏธ์ง์์ ์ค๊ณฝ์ ๋ง ๋์ฒด๋ก ์กํ๋๋ฐ, ์ด๋ฌํ ์ค๊ณฝ์ด ๊ฐ ์ ๋ง๋ค ๋๋ ทํ๊ธฐ๋, ํฌ๋ฏธํ๊ธฐ๋ ํ๊ธฐ ๋๋ฌธ์ ์ด๋๊น์ง edge๋ก ๋ณผ ๊ฒ์ธ๊ฐ์ ๋ํด์ ์ ํ๋ ๊ฒ์ด threshold์ด๋ค. face_cascade๋ ๋ค๋์ ์ด๋ฏธ์ง์ ๋ง์ ํน์ง์ผ๋ก ๊ฐ stage๋ง๋ค ์ต์ ์ threshold๋ฅผ ํ์ตํ ๊ฒ
500๋ฒ์งธ ๋ฐ์ดํฐ์ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ ธ์์ ๊ทธ ๊ฒฝ๋ก์์ ์๋ 7์ฅ์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๋ ์ฝ๋
os.path.join
์ ์ธ์๋ฅผ ์ฌ๋ฌ๊ฐ๋ก ์ฌ์ฉํ ์ ์๋์ง ์ฒ์ ์์๋ค
ํด๋์ค๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ ์ธํ์ผ๋ฏ๋ก, ์์ ๊ฐ์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์ป๋๋ค.
num2class = ['incorrect_mask', 'mask1', 'mask2', 'mask3', 'mask4', 'mask5', 'normal']
2. target๊ฐ y์ ๋ํ ๋ถ์
์ ํฌ๊ฐ ๋ง์ถฐ์ผํ๋ ์ ๋ณด๋ค์ด ์ด๋ค ๊ฒ์ธ์ง ํ์ธํด๋ณด๊ณ ์ด๋ค ๋ถํฌ๋ฅผ ๊ฐ๊ณ ์๋์ง ํ์ธํด๋ด ์๋ค.
์ฌ๊ธฐ์์ train.csv์ ์ ์ฅ๋์ด์๋ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํฉ๋๋ค. seaborn ์๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ฑ๋ณ์ ๋ถํฌ์ ์ฐ๋ น ๋ถํฌ๋ฅผ ํ์ธํด๋ด ์๋ค.
2.1 y๊ฐ ๋
๋ฆฝ์ ๋ถํฌ ํ์ธ
์ฑ๋ณ๊ฐ ์์น๋ฅผ ๋ง๋ ๊ทธ๋ํ๋ก ํํํ๋ค.
Line 2
gender
๋ผ๋ ์ปฌ๋ผ์ ๊ฐ๋ค์ x์ถ, ๊ทธ์ ํด๋นํ๋ ๊ฐ์ y์ถ์ผ๋ก ์ค์ ํ๊ณ ์์ ์ง์ ํด์ฃผ์๋ค.
Line 4-7
์ ๋ชฉ๊ณผ x์ถ, y์ถ์ ์ด๋ฆ์ ์ค์ ํ๋ค
Line 9-10
gender
์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ์ธ๊ณ ํผ์ผํ ์ด์ง๋ก ํํํ๊ธฐ ์ํด ์ ์ฒด ๋ฐ์ดํฐ์ ๊ฐ์๋ก ๋๋์๋ค.
Line 11
๊ฐ๋ก์ถ ์ ๋ ฌ์ ๊ฐ์ด๋ฐ์ ๋ ฌ๋ก, ์์ ํ์์์ธ ํ ์คํธ๋ฅผ (i, 0) ์์น์ v๋ผ๊ณ ์ ๋ ฅํ๋ค.
seaborn์๋ distplot
๊ณผ displot
์ด ๋ ๋ค ์์ผ๋ฏ๋ก ํท๊ฐ๋ฆฌ์ง ๋ง์. displot
์ ๋ถํฌ๋ฅผ ๋ง๋๊ทธ๋ํ๋ก ๊ทธ๋ ค์ฃผ๋ ํจ์์ด๋ค. x์ถ์ age
๊ฐ y์ถ์ age์ count๋ก ์ค์ ๋ stat
์ ์ด y์ถ์ ์ด๋ค ๋จ์๋ก ํํํ ์ง ๊ฒฐ์ ํ๋ค. ์ฌ๊ธฐ์๋ density
๋ผ๋ ๋ฐ๋๋ก ํํํ์ผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ count
์ด๋ค.
2.2 y๊ฐ๋ค ๊ฐ์ ๊ด๊ณ ๋ถํฌ
๋์ด์ ์ฑ๋ณ์ ๋ฐ๋ฅธ ๋ถํฌ๋ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์๋์ง ์์๋ด ์๋ค.
์ฌ๊ธฐ์ hue
์ธ์๋ฅผ ์ถ๊ฐํ๊ฒ ๋๋ฉด ์๋ก์ด ๋ฐ์ดํฐ ๋ณ์๋ฅผ ์ถ๊ฐํด์ ์์์ผ๋ก ๊ตฌ๋ถ๋๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆด ์ ์๋ค. ์ฌ๊ธฐ์๋ ๋จ์ฑ๊ณผ ์ฌ์ฑ์ด๋ผ๋ ์๋ก์ด ๋ณ์๋ฅผ ์ถ๊ฐํ๋ค.
dataframe์ describe
๋ฅผ ํตํด์ ์์นํ ๋ฐ์ดํฐ์ ๊ฐ์ข
ํต๊ณ๋์๋ฅผ ํ์
ํ ์ ์๋ค.
๋จ์ฑ๊ณผ ์ฌ์ฑ์ ๋์ด์ ๋ฒ์๋ ๊ฐ์ง๋ง ๊ฒฝํฅ์ฑ์ ๋ค๋ฅธ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ค์ ๋ถ๊ท ํ(data imbalance)๊ฐ ์ฌํด๋ณด์ด๋ค์ ์ด๋ฅผ ์ํด์๋ ์ด๋ค ๋ถ์๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผํ ๊น์??
3. X, y ๊ด๊ณํ์ธ
X์ธ ์ด๋ฏธ์ง์ y์ ๊ด๊ณ๋ ์ด๋ค ๊ฒ์ด ์์๊น์??
๋ถ์ํ๊ณ ์ ํ๋ ์ด๋ฏธ์ง์ y์ ๊ด๊ณ๋ฅผ ์๊ฒ๋๋ค๋ฉด ์ ์ฒ๋ฆฌ, data augmentation ํน์ CNN์ ๊ตฌ์กฐ๋ฅผ ํ๊ณ ์ํ๋ ๋ฌธ์ ์ ์ ํฉํ๊ฒ ์ ์ฉํด๋ณผ ์ ์์ต๋๋ค.
3.1 ์ด๋ฏธ์ง ์ฌ์ด์ฆ์ y๊ฐ์ ๊ด๊ณ
image size๋ ๋ชจ๋ ๊ฐ์ ์ฌ์ด์ฆ๋ผ y๊ฐ๊ณผ ๊ด๊ณ๊ฐ ์์ต๋๋ค.
3.2 ์ด๋ฏธ์ง RGB ํต๊ณ๊ฐ๊ณผ y ํน์ฑ์ ๊ด๊ณ
์ฌ๊ธฐ์๋ ์ด๋ฏธ์ง์ ํต๊ณ๋์ ํ์ธํ๊ธฐ ์ํด ์์์ ์ด๋ฏธ์ง, ์ฌ๊ธฐ์๋ 500๋ฒ์งธ ์ด๋ฏธ์ง๋ฅผ ์ ํํ๋ค.
๋ง์คํฌ์ ์ข ๋ฅ๊ฐ 5๊ฐ๋ผ plot์ด ์ฐ๋งํ ๊ฒ๊ฐ์ผ๋ ๋ง์คํฌ๋ ํ๊ท ์ ์ทจํด์ ํ์ธํด๋ด ์๋ค.
Image
๊ฐ์ฒด๋ convert
๋ผ๋ ๊ธฐ๋ฅ์ด ์๋๋ฐ, ์ด๋ฏธ์ง์ ํ์
์ ๋ฐ๊พผ๋ค. ์ฌ๊ธฐ์๋ L
์ด๋ผ๋ ๊ฒ์ผ๋ก ๋ฐ๊พธ์๊ณ ์ด๊ฒ์ GrayScale(ํ๋ฐฑ) ํ์
์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ด๋ค. ํ๋ฐฑ์ผ๋ก ๋ฐ๊พธ๋ฉด ์ด๋ฏธ์ง๋ 0์์ 255๊น์ง์ ๊ฐ(๋ช
๋) ๋ง ๊ฐ์ง๊ฒ ๋๋ค.
๋ ๋ค๋ฅธ ์ธ์๋ก๋ bilevel(๊ฒ์์ ๋๋ ํฐ์)์
1
๊ณผ ํฌ๋ช ๋์ ๋ณด๊น์ง ํฌํจ๋๋P
๊ฐ ์๋ค.
np.histogram
์ array๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค. bins
๋ ํ์คํ ๊ทธ๋จ์ ๊ตฌ๊ฐ์ ๋ช๊ฐ๋ก ์ค์ ํ ๊ฒ์ธ์ง, range
๋ ๋ฒ์๋ฅผ ์๋ฏธํ๋ค. ๋ฐํ๊ฐ์ผ๋ก๋ ์ ์ฉ๋ histogram
๊ณผ len(hist)+1์ ๊ฐ์ธ bin_edges
๊ฐ ๋ฐํ๋๋ค.
์ฌ๊ธฐ์๋ ๋ง์คํฌ ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ np.mean
์ผ๋ก ํ๊ท ๋ด์ด์ ์ ๊ทธ๋ํ๋ก ๊ทธ๋ ค์ง๊ฒ๋๋ค.
๋ง์คํฌ๋ฅผ ์ฐ์ง์์ ์ฌ์ง์ RGB ๋ถํฌ๋ ์ดํด๋ณผ๊น์?
3.3 ๊ฐ์ฒด์ ์์น์ y์ ๊ด๊ณ
๊ฐ์ฒด์ ์์น์ y์ ๊ด๊ณ๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์ง์ ๋ค ํ์ธํ๋ ๋ฐฉ๋ฒ์ด ์์ ์๋ ์์ง๋ง ์์์ ์ฌ์ฉํ face detection์ ์ด์ฉํ์ฌ box์ ์์น๋ค์ ํต๊ณ๊ฐ๋ค์ ์ด์ฉํ์ฌ ์ฐพ์ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๋ฏธ์ง ๋ณ๋ก ํต๊ณ๊ฐ์ ๋ฝ์๋ด๋ ๊ฒ์ ์บ ํผ๋๋ค์ด ์ง์ ํด๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
์๋ ์ฝ๋๋ ์ด๋ค label์ด ์ผ๊ตด์ ์์ฐพ์ง ๋ชปํ๋์ง ํ์ธํด๋ด ์๋ค.
์ด๋ฒ์๋ 504๋ฒ์งธ ์ด๋ฏธ์ง๋ฅผ ์ ํํด๋ณด์. ์ด๋ bbox
๋ฅผ face_cascade.detectMultiScale
๋ก ์ป๊ฒ๋๋๋ฐ, ์ด๋ bounding box๋ฅผ ์๋ฏธํ๋ฉฐ, bounding box์ ์ขํ๊ฐ์ ์ป๊ฒ๋๋ค.
์ฌ๊ธฐ์๋ ๋ง์คํฌ๋ฅผ ์ด ์ฌ์ง 6์ฅ(์ ์์ 5์ฅ) ์ค 3์ฅ์์ ์ผ๊ตด์ด ๊ฒ์ถ๋์ง ๋ชปํ๋ค.
๋๋ถ๋ถ์ ์ด๋ฏธ์ง๋ค์ ์ธ๋ฌผ๋ค์ด ์ ์ค์์ ์๋ ๊ฒ์ผ๋ก ํ์ธ
mask5๋ ๋๋ถ๋ถ bbox๋ฅผ ์ฐพ์ง ๋ชปํจ
๊ฐ๋ mask1๋ ์ฐพ์ง ๋ชปํจ
3.4 ๋ฐ์ดํฐ ๋
ธ์ด์ฆ ํ์ธ
์ฌ๋๋ง๋ค ์ด 7์ฅ์ ์ฌ์ง์ด ์กด์ฌํฉ๋๋ค. (๋ง์คํฌ ์ ์ ์ฐฉ์ฉ 5์ฅ, ๋ฏธ์ฐฉ์ฉ 1์ฅ, ์ด์ํ๊ฒ ์ฐฉ์ฉ 1์ฅ).
์ด ํํธ์์๋ ์ด๋ฏธ์ง๋ฅผ ์ง์ ์๊ฐํํ์ฌ ๋์ผ๋ก ๊ด์ฐฐํ์ฌ label์ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธํด๋ด ์๋ค.
ํ ์ฌ๋์ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํด๋ด ์๋ค.
๋จ์ฑ์ผ๋ก ๋ณด์ด์ง๋ง ์ฌ์ฑ์ผ๋ก ํ์๋์ด ์๋๊ฒฝ์ฐ
์ฌ์ฑ์ผ๋ก ๋ณด์ด์ง๋ง ๋จ์ฑ์ผ๋ก ํ์๋์ด ์๋ ๊ฒฝ์ฐ
๊พ ๋ง์ ๊ฒฝ์ฐ๋ก ๋ฐ์ดํฐ์ ๊ฒฝํฅ์ฑ์ ๋ฐฉํดํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒ์ผ๋ก ํ์ธ๋ฉ๋๋ค.
์ด๋ฅผ ์ํด์๋ ์ด๋ค ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ ๊ฒ์ด ์ข์๊น์???
id ๋ณ๋ก ๋ง์คํฌ ์ฐฉ์ฉ ์ํ๋ฅผ ํ์ธํด๋ด ์๋ค.
PCA ๋ถ์์ ๋์ ์ง์์ด ๋ถ์กฑํด์, ์๊ฐ์ ์ค๋ช ํ์ง ๋ชปํ๋ค. ์ด๊ฑธ ๊ณต๋ถํ๊ณ ์ค๋ช ํ๋ฉด ๋ผ๋ฒจ๋ง์ ๋ชปํ ๊ฒ ๊ฐ๋ค. ๋งค์ฐ ์ํ๊น์ง๋ง ์ฌ๊ธฐ๊น์ง.
(Optional) PCA
์ฃผ์ฑ๋ถ ๋ถ์์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ ๋ถํฌ์ ์ฃผ์ฑ๋ถ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
300 ์ฅ์ ์ผ๊ตด ์ด๋ฏธ์ง์ ๋ํ ์ฃผ์ฑ๋ถ ๋ฒกํฐ(eigenface)๋ฅผ ๊ตฌํ๊ณ T-SNE๋ฅผ ํตํด ์ฐจ์์ถ์๋ฅผ ํ์ฌ ๊ฐ ํด๋์ค๋ง๋ค์ ๋ถํฌ์ฐจ์ด๋ฅผ ์๊ฐํํด๋ด ์๋ค.
0
1
2
3
4
5
6
7
8
9
...
21
22
23
24
25
26
27
28
29
class_id
0
-0.780943
-0.301832
0.909870
0.561611
0.377147
0.319390
0.490564
-0.157337
0.226589
-0.055671
...
1.402771
0.698502
1.009226
1.024885
0.241752
-0.573497
0.032257
1.244118
-1.303907
incorrect_mask
1
-1.531008
0.054247
1.062841
0.448427
0.221644
0.127141
-0.152839
2.102684
2.525257
0.799864
...
-0.562831
-0.488063
-0.535817
-0.568799
1.178023
-0.692086
0.088736
0.438619
-0.489825
mask
2
-0.878984
-0.366578
0.961171
0.348036
0.147981
-0.001350
0.647854
-0.286916
0.415846
0.085153
...
0.990493
0.476577
0.431235
1.320901
-0.039927
-0.440994
0.039908
1.034641
-0.618757
mask
3
-0.354757
-0.443230
1.248900
0.964928
0.401074
0.732453
0.595657
-0.243793
0.063750
0.278082
...
1.053063
-0.556322
0.290911
0.385133
-0.800782
-0.706160
-0.874645
0.807353
-0.202597
mask
4
-0.526067
-0.342682
1.048815
0.778287
0.344716
0.535303
0.591965
-0.187899
0.033147
0.083656
...
1.541471
0.074838
1.002258
0.754855
-0.308133
-0.994480
-0.577034
1.347365
-1.466241
mask
5 rows ร 31 columns
4. Reference
Last updated
Was this helpful?