{"id":969,"date":"2021-03-16T17:50:11","date_gmt":"2021-03-16T08:50:11","guid":{"rendered":"http:\/\/cedartrees.co.kr\/?p=969"},"modified":"2021-04-03T19:03:03","modified_gmt":"2021-04-03T10:03:03","slug":"cnn-noise-sound-detection","status":"publish","type":"post","link":"http:\/\/blog.cedartrees.co.kr\/index.php\/2021\/03\/16\/cnn-noise-sound-detection\/","title":{"rendered":"CNN\uc744 \ud65c\uc6a9\ud55c \ube44\uc74c\uc131 \uad6c\uac04 \uac80\ucd9c"},"content":{"rendered":"\n<p>\ud569\uc131\uacf1\uc2e0\uacbd\ub9dd(CNN, Convolutional Neural Network)\uc740 \ucc98\uc74c\uc5d0\ub294 \uc774\ubbf8\uc9c0 \ubd84\ub958\uc5d0 \ub9ce\uc774 \uc0ac\uc6a9\ub418\uc5c8\uc9c0\ub9cc \ud604\uc7ac\ub294 \uc774\ubbf8\uc9c0 \ubd84\ub958 \uc678\uc5d0\ub3c4 \uc544\uc8fc \ub2e4\uc591\ud55c \ubd84\ub958 \ubb38\uc81c \ud574\uacb0\uc5d0 \uc0ac\uc6a9\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\ubc88\uc5d0\ub294 CNN\uc744 \ud65c\uc6a9\ud558\uc5ec \uc74c\uc131\uc2e0\ud638\ub97c \ubd84\ub958\ud558\ub294 \ubb38\uc81c\ub97c \ub2e4\ub904\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc77c\ub2e8 \uc74c\uc131\uc2e0\ud638\ub97c \uba87\uac1c \ub9cc\ub4e4\uc5b4\ubd05\ub2c8\ub2e4. \uc0ac\uc6a9\ud558\ub294 \uc74c\uc131\uc2e0\ud638\ub294 wav(waveform audio file format)\uc785\ub2c8\ub2e4. <\/p>\n\n\n\n<p><span class=\"has-inline-color has-vivid-cyan-blue-color\">\uc704\ud0a4\ud53c\ub514\uc544 \uc815\uc758\uc5d0 \uc758\ud558\uba74 WAV \ub610\ub294 WAVE\ub294 \uac1c\uc778\uc6a9 \ucef4\ud4e8\ud130\uc5d0\uc11c \uc624\ub514\uc624\ub97c \uc7ac\uc0dd\ud558\ub294 \ub9c8\uc774\ud06c\ub85c\uc18c\ud504\ud2b8\uc640 IBM \uc624\ub514\uc624 \ud30c\uc77c \ud45c\uc900 \ud3ec\ub9f7\uc774\ub2e4. \uac00\uacf5\ub418\uc9c0 \uc54a\uc740 \uc624\ub514\uc624\ub97c \uc704\ud55c \uc708\ub3c4\uc6b0 \uc2dc\uc2a4\ud15c\uc758 \uae30\ubcf8 \ud3ec\ub9f7\uc774\ub2e4. WAV\ub294 \ube44\uc555\ucd95 \uc624\ub514\uc624 \ud3ec\ub9f7\uc73c\ub85c \ud504\ub85c\uadf8\ub7a8 \uad6c\ub3d9\uc74c\uc774\ub098 \uc77c\ubc18 \uc218\uc900\uc758 \ub179\uc73c\ub85c \uc0ac\uc6a9\ub418\uc9c0\ub9cc \uc804\ubb38 \ub179\uc74c\uc6a9\uc73c\ub85c\ub294 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/span><\/p>\n\n\n\n<p>\uad6c\uc870\uc801\uc73c\ub85c \ubcf4\uba74 wav \ud30c\uc77c\uc740 PCM \ud30c\uc77c\uc5d0 Header\ub97c \ubd99\uc778 \uac83\uc774\ub77c\uace0 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \ub9d0\ud558\uba74 PCM \uc815\ubcf4\ub97c \uc774\uc6a9\ud558\uba74 wav \ud30c\uc77c\uc744 \ub9cc\ub4e4\uc218 \uc788\ub2e4\ub294 \uc758\ubbf8\uac00 \ub429\ub2c8\ub2e4. Header\uc5d0\ub294 Sampling Rate\uc640 \uac19\uc740 \uc815\ubcf4, \ucc44\ub110 \uac19\uc740 \uc815\ubcf4\uac00 \ud544\uc694\ud569\ub2c8\ub2e4.  wav \ud30c\uc77c\uc744 \uc77d\uc744 \ub54c\uc5d0 \ubcc4\ub3c4\uc758 \uc870\uce58\uac00 \ud544\uc694\ud558\uc9c0 \uc54a\uc740 \uc774\uc720\ub294 \ubc14\ub85c Header\uc5d0 \uc774\ub7f0 \uc815\ubcf4\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Sampling Rate\ub294 \uc544\ub098\ub85c\uadf8\uc778 \uc74c\uc131 \ud30c\uc77c\uc744 \ucd08\ub2f9 \uba87\ubc88\uc758 \uc0d8\ud50c\ub9c1\uc744 \ud558\ub294\uac00\uc5d0 \ub300\ud55c \uc22b\uc790\uc785\ub2c8\ub2e4. \ub192\uc73c\uba74 \ub192\uc744 \uc218\ub85d \uc190\uc2e4\ub418\ub294 \uc815\ubcf4\uac00 \uc801\uc5b4\uc9c0\ub2c8 \uc74c\uc9c8\uc774 \uc88b\uc544\uc9c0\uaca0\uc9c0\ub9cc \uc800\uc7a5\uc744 \uc704\ud574\uc11c \ub354 \ub9ce\uc740 \uacf5\uac04\uc744 \ud544\uc694\ub85c \ud558\uae30 \ub54c\ubb38\uc5d0 \ubaa9\uc801\uc5d0 \ub530\ub978 \uc801\uc808\ud55c \uc218\uc900\uc758 \uc815\uc758\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \uc774\ubc88 \uc608\uc81c\uc5d0\uc11c\ub294 22,050 Sampling Rate\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\uc774 \uc678\uc5d0\ub3c4 Mono, Stereo \ub97c \ud45c\uc2dc\ud558\ub294 Channel\uacfc 8-bit, 16-bit, 32-bit\ub97c \uc815\uc758\ud558\ub294 Resolution \uc815\ubcf4\uac00 \ud5e4\ub354\uc5d0 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud5e4\ub354 \uc815\ubcf4\ub97c \uc790\uc138\ud788 \uc0b4\ud3b4\ubcf4\uba74 \uc544\ub798\uc640 \uac19\uc740 \uad6c\uc870\ub85c \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" width=\"612\" height=\"567\" src=\"http:\/\/cedartrees.co.kr\/wp-content\/uploads\/2021\/03\/wav-sound-format.gif\" alt=\"\" class=\"wp-image-973\"\/><\/figure><\/div>\n\n\n\n<p>\ubcf4\uba74 \ud30c\uc77c \uad6c\uc870 \uc911\uc5d0\uc11c 0-44 byte\uae4c\uc9c0\uac00 \ud5e4\ub354 \ubd80\ubd84\uc774\uace0 \uc2e4\uc81c \ub370\uc774\ud130\ub294 \uadf8 \uc774\ud6c4\uc5d0 \ucd94\uac00\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p>wav \ud30c\uc77c\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \uc815\ubcf4\ub294 \uc778\ud130\ub137\uc5d0 \uacf5\uac1c\ub41c \ub2e4\ub978 \uc815\ubcf4\ub97c \ucc38\uace0\ud574 \ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\ud14c\uc2a4\ud2b8\ub97c \uc704\ud55c \uac1c\ub7b5\uc801\uc778 \uac1c\uc694\ub294 \uc544\ub798\uc758 \uadf8\ub9bc\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-image is-style-default\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" width=\"1024\" height=\"954\" src=\"http:\/\/cedartrees.co.kr\/wp-content\/uploads\/2021\/03\/KakaoTalk_Photo_2021-03-15-22-51-40-1024x954.jpeg\" alt=\"\" class=\"wp-image-976\" srcset=\"http:\/\/blog.cedartrees.co.kr\/wp-content\/uploads\/2021\/03\/KakaoTalk_Photo_2021-03-15-22-51-40-1024x954.jpeg 1024w, http:\/\/blog.cedartrees.co.kr\/wp-content\/uploads\/2021\/03\/KakaoTalk_Photo_2021-03-15-22-51-40-300x279.jpeg 300w, http:\/\/blog.cedartrees.co.kr\/wp-content\/uploads\/2021\/03\/KakaoTalk_Photo_2021-03-15-22-51-40-768x715.jpeg 768w, http:\/\/blog.cedartrees.co.kr\/wp-content\/uploads\/2021\/03\/KakaoTalk_Photo_2021-03-15-22-51-40.jpeg 1454w\" sizes=\"(max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/figure><\/div>\n\n\n\n<p>\uba3c\uc800 \uc74c\uc131\uc2e0\ud638\ub97c \uc785\ub825 \ubc1b\uc544\uc11c \uac01 \uc2e0\ud638\ub97c 1\ucd08 \ub2e8\uc704\ub85c slicing \ud569\ub2c8\ub2e4. \uadf8\ub807\uac8c \ub418\uba74 60\ucd08\uc758 \uc74c\uc131 wav \ud30c\uc77c\uc774 \uc788\ub2e4\uba74 \uac01 \ud30c\uc77c\uc740 1\ucd08 \ub2e8\uc704\uc758 wav \ud30c\uc77c\ub85c \ub098\ub220\uc9c0\uac8c\ub429\ub2c8\ub2e4. \uc774\uc81c \uac01 \ubd84\ub9ac\ud55c \uc74c\uc131\ud30c\uc77c\uc744 \ub4e4\uc5b4\ubcf4\uace0 \uc74c\uc131\uc774\uba74 0, \ube44\uc74c\uc131\uc774\uba74 1\ub85c \ub808\uc774\ube14\ub9c1\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774 \uacfc\uc815\uc774 \uc2dc\uac04\uc774 \uc624\ub798\uac78\ub9bd\ub2c8\ub2e4. \ub450\ub9d0\ud560 \uac83\ub3c4 \uc5c6\uc774 \uc774\ub7ec\ud55c \ub370\uc774\ud130\uac00 \ub9ce\uc73c\uba74 \ub9ce\uc744 \uc218\ub85d \ube44\uc74c\uc131\uc744 \ucc3e\uc744 \ud655\ub960\uc774 \ucee4\uc9d1\ub2c8\ub2e4. \ube44\uc74c\uc131\uc740 \ub179\uc74c \ud658\uacbd\uc774 \uc5b4\ub514\uc57c\uc5d0 \ub530\ub77c\uc11c \ub9ce\uc740 \ucc28\uc774\uac00 \uc788\uc2b5\ub2c8\ub2e4. \ucc28\uc548, \ubc29\uc548, \uc57c\uc678, \ub180\uc774\ud130, \uc0ac\ubb34\uc2e4 \ub4f1\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \ube44\uc74c\uc131 \ub370\uc774\ud130\ub97c \uc0d8\ud50c\ub9c1\ud558\uba74 \ub354 \uc88b\uc740 \uc608\uce21 \ubaa8\ub378\uc744 \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>1\ucd08 \ub2e8\uc704\ub85c \uc0d8\ud50c\ub9c1\ud558\uba74 \uc774 \ub370\uc774\ud130\ub294 [0-22049]\uc758 \ubca1\ud130\ub85c \ubcc0\ud658\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub9cc\uc57d \uc74c\uc131 \uae38\uc774\uac00 60\ucd08\ub77c\uba74 [60\u00d722050]\uc758 \ub370\uc774\ud130\uac00 \ub429\ub2c8\ub2e4. \uc774\uc81c \uc774 \ub370\uc774\ud130\ub97c CNN\uc744 \ud1b5\ud574\uc11c \ud559\uc2b5\ud560 \uc218 \uc788\ub3c4\ub85d \ub370\uc774\ud130\uc758 \ud615\ud0dc\ub97c \ubc14\uafd4\uc8fc\uba74 \ud574\ub2f9 \ub370\uc774\ud130\ub294 [60\u00d71\u00d7n\u00d7m] \ud615\ud0dc\uc758 \ub370\uc774\ud130\uac00 \ub429\ub2c8\ub2e4. n\uacfc m\uc740 \uac01\uac01 \uc6d0\ud558\uc2dc\ub294 \uc0ac\uc774\uc988\ub85c \ub9cc\ub4dc\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\uc81c \ud574\ub2f9 \uc74c\uc131 \ub370\uc774\ud130\ub97c Google Drive\uc5d0 \uc5c5\ub85c\ub4dc\ud558\uace0 Google Colab(Pro)\ub97c \uc0ac\uc6a9\ud574\uc11c \ubaa8\ub378\uc744 \ud559\uc2b5\ud574\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.  \uc544\ub798\uc758 \uadf8\ub9bc\uc740 \ud14c\uc2a4\ud2b8\uc5d0 \uc0ac\uc6a9\ub418\ub294 Colab GPU \uc815\ubcf4\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gpu_info = !nvidia-smi\ngpu_info = '\\n'.join(gpu_info)\nif gpu_info.find('failed') >= 0:\n  print('Select the Runtime > \"Change runtime type\" menu to enable a GPU accelerator, ')\n  print('and then re-execute this cell.')\nelse:\n  print(gpu_info)<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"683\" height=\"347\" src=\"http:\/\/cedartrees.co.kr\/wp-content\/uploads\/2021\/03\/colab-gpu.png\" alt=\"\" class=\"wp-image-978\" srcset=\"http:\/\/blog.cedartrees.co.kr\/wp-content\/uploads\/2021\/03\/colab-gpu.png 683w, http:\/\/blog.cedartrees.co.kr\/wp-content\/uploads\/2021\/03\/colab-gpu-300x152.png 300w\" sizes=\"(max-width: 683px) 100vw, 683px\" \/><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def load_wav2():\n    file_list = sorted(glob.glob(\"gdrive\/...\/*sound\/*.wav\"))\n    file_class = []\n\n    for f in file_list:\n      if f[40:47]=='av\/nois':\n          file_class.append([1,0])\n      else:\n          file_class.append([0,1])\n  \n    return file_list, file_class\n\nimport time\ndef time_per_epoch(st, et):\n  elt = et - st\n  elaps_min = int(elt\/60)\n  elaps_sec = int(elt - (elaps_min*60))\n  \n  return elaps_min, elaps_sec\n\n# noise 0, norm 1\nwav_list, wav_class = load_wav2()<\/pre>\n\n\n\n<p>\uc74c\uc131 \ud30c\uc77c\uc774 \uc788\ub294 \uc704\uce58\uc5d0\uc11c \ud559\uc2b5 \ud30c\uc77c \uacbd\ub85c\ub97c \uc77d\uc5b4\uc635\ub2c8\ub2e4. \ud559\uc2b5 \ud30c\uc77c\uc744 \uc77d\uc740 \ud6c4\uc5d0 \ub178\uc774\uc988(\ube44\uc74c\uc131)\uc77c \uacbd\uc6b0 0, \uc74c\uc131\uc77c \uacbd\uc6b0 1\ub85c \ud45c\uc2dc\ud569\ub2c8\ub2e4. \uc989 class\ub294 2\uac00\ub429\ub2c8\ub2e4. \uc774 \ub9d0\uc740 \uc608\uce21\uc758 \uacb0\uacfc \uac12\ub3c4 \uacb0\uad6d 0 or 1\uc758 \ud615\ud0dc\ub97c \uac00\uc9c4\ub2e4\ub294 \ub9d0\uc774\ub429\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c  1 epoch\uc5d0 \uac78\ub9ac\ub294 \uc2dc\uac04\uc744 \uae30\ub85d\ud558\uae30 \uc704\ud574\uc11c time_per_epoch() \uc774\ub77c\ub294 \ud568\uc218\ub97c \uc120\uc5b8\ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ud30c\uc77c \ub9ac\uc2a4\ud2b8\uc640 \ub808\uc774\ube14 \uc815\ubcf4\ub97c \ucd9c\ub825\ud574\ubcf4\uba74 \uc544\ub798\uc758 \uc815\ubcf4\uc640 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">for w,c in zip(wav_list[0:10], wav_class[0:10]):\n  print(w,c)\n\n#gdrive\/...\/noise_sound\/basic_10_0.wav [1, 0]\n#gdrive\/...\/noise_sound\/basic_10_0_cp.wav [1, 0]\n#gdrive\/...\/noise_sound\/basic_10_1.wav [1, 0]\n#gdrive\/...\/noise_sound\/basic_10_1_cp.wav [1, 0]\n#gdrive\/...\/noise_sound\/basic_10_21.wav [1, 0]\n...<\/pre>\n\n\n\n<p>\uc774\uc81c \uc74c\uc131 \ud30c\uc77c\uc744 \uc77d\uc5b4\uc11c \ubca1\ud130\ub85c \ubcc0\ud658\ud569\ub2c8\ub2e4. <br>\uac01 \uc74c\uc131 \ud30c\uc77c\uc740 librosa \ud328\ud0a4\uc9c0 \uc548\uc5d0 \uc788\ub294 load() \ud568\uc218\ub97c \uc0ac\uc6a9\ud574\uc11c \uc544\ub098\ub85c\uadf8 \uc2e0\ud638\ub97c \ubca1\ud130 \uc815\ubcf4\ub85c \ubcc0\ud658\ud569\ub2c8\ub2e4.  Sampling Rate\uac00 22050\ub85c \uc124\uc815\ud588\uae30 \ub54c\ubb38\uc5d0 \ubca1\ud130\uc758 \uae38\uc774\ub294 [0-22049]\uac00 \ub429\ub2c8\ub2e4. \uc804\uccb4 \ub370\uc774\ud130\ub97c \uc77d\uc5b4\uc11c \uba54\ubaa8\ub9ac\uc5d0 \uc800\uc7a5\ud558\ub294\ub370 \ub9ce\uc740 \uc2dc\uac04\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\uc608\uc81c\uc5d0\uc11c\ub294 \uc804\uccb4 \ud30c\uc77c\uc774 \uc544\ub2cc \uc77c\ubd80 \ub370\uc774\ud130\ub9cc \uc77d\uc5b4 \uc624\uae30 \ub54c\ubb38\uc5d0 \ud55c\ubc88\uc5d0 \uc77d\uc744 \uc218 \uc788\uc9c0\ub9cc \ud30c\uc77c\uc774 \ud070 \uacbd\uc6b0\ub294 \uba54\ubaa8\ub9ac\uac00 \uc81c\ud55c\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 \ud55c\ubc88\uc5d0 \ub370\uc774\ud130\ub97c \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uadf8\ub7f4 \uacbd\uc6b0\ub294 batch_size\ub97c \uc0ac\uc804\uc5d0 \uc815\uc758\ud558\uace0 \ud30c\uc774\ud1a0\uce58\uc758 \ub370\uc774\ud130\ub85c\ub354(Dataloader)\uc640 \uac19\uc740 \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud574\uc11c \ud30c\uc77c\uc744 \ubd80\ubd84\uc801\uc73c\ub85c \uc77d\uc5b4\uc11c \ud559\uc2b5\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub370\uc774\ud130\ub85c\ub354 \uc608\uc81c\ub294 \ube14\ub85c\uadf8\uc758 \ub2e4\ub978 \uae00\uc5d0 \uc788\uc73c\ub2c8 \ucc38\uace0\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">wav_data = []\nstart_time = time.time()\n\nfor idx, wav in enumerate(wav_list):\n  y, sr = librosa.load(wav)\n  wav_data.append(y)\n\nend_time = time.time()\nlap_mins, lap_secs = time_per_epoch(start_time, end_time)\nprint(f\"Lap Time: {lap_mins} mins, {lap_secs} secs\")<\/pre>\n\n\n\n<p>\ub370\uc774\ud130\ub97c \uc77d\uc740 \ud6c4\uc5d0 \ud559\uc2b5\uc6a9 \ub370\uc774\ud130\uc14b\uacfc \ud14c\uc2a4\ud2b8\uc6a9 \ub370\uc774\ud130\uc14b\uc73c\ub85c \ubd84\ub9ac[8:2]\ub85c \ubd84\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">xx = torch.tensor(x_data, dtype=torch.float, device=device)\nyy = torch.tensor(y_data, dtype=torch.long, device=device)\n\ntrain_cnt = int(xx.size(0) * config.train_rate)\nvalid_cnt = xx.size(0) - train_cnt\n\n# Shuffle dataset to split into train\/valid set.\nindices = torch.randperm(xx.size(0)).to(device) # random \uc21c\uc5f4 \ub9ac\ud134\nx = torch.index_select(xx, dim=0, index=indices).to(device).split([train_cnt, valid_cnt], dim=0)\ny = torch.index_select(yy, dim=0, index=indices).to(device).split([train_cnt, valid_cnt], dim=0)<\/pre>\n\n\n\n<p>\uc774\uc81c \ubd84\uc11d\uc744 \uc704\ud55c CNN \ud559\uc2b5 \ubaa8\ub4c8\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4. \ud559\uc2b5 \ubaa8\ub4c8\uc740 Conv2d() \u2192 ReLU() \u2192 BatchNorm2d() \u2192 Linear() \u2192 Softmax()\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \ucd5c\uc885 \ucd9c\ub825\uac12\uc740 0 or 1\uc758 \ud615\ud0dc\ub97c \uac00\uc9c0\uac8c \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class Net(nn.Module):\n    def __init__(self):\n        super(Net, self).__init__()\n        \n        self.convs = nn.Sequential(\n            nn.Conv2d(1, 10, kernel_size=3), # input_channel, output_channel, kernel_size\n            nn.ReLU(),\n            nn.BatchNorm2d(10),\n            nn.Conv2d(10, 20, kernel_size=3, stride=2),\n            nn.ReLU(),\n            nn.BatchNorm2d(20),\n            nn.Conv2d(20, 40, kernel_size=3, stride=2),\n            nn.ReLU(),\n            nn.BatchNorm2d(40),\n            nn.Conv2d(40, 80, kernel_size=3, stride=2)\n        )\n        \n        self.layers = nn.Sequential(\n            nn.Linear(80*17*17, 500),\n            nn.ReLU(),\n            nn.BatchNorm1d(500),\n            nn.Linear(500,250),\n            nn.Linear(250,100),\n            nn.ReLU(),\n            nn.BatchNorm1d(100),\n            nn.Linear(100,50),\n            nn.Linear(50, 10),\n            nn.ReLU(),\n            nn.BatchNorm1d(10),\n            nn.Linear(10, 2),\n            nn.Softmax(dim=-1)\n        )\n\n    def forward(self, x):\n        x = self.convs(x)\n        x = x.view(-1, 80*17*17)\n        return self.layers(x)\n    \nmodel = Net()\nmodel.to(device)<\/pre>\n\n\n\n<p>\uc774\uc81c \ubaa8\ub378\uc744 \uc544\ub798\uc640 \uac19\uc774 \ud559\uc2b5\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">optimizer = optim.Adam(model.parameters(), lr=config.lr)\ncriterion = nn.CrossEntropyLoss()\n\nhist_loss = []\nhist_accr = []\n\nmodel.train()\nfor epoch in range(config.number_of_epochs):\n    output = model(x[0]) # Train \n    loss = criterion(output, torch.argmax(y[0], dim=1)) # Train\n    \n    predict = torch.argmax(output, dim=-1) == torch.argmax(y[0], dim=-1)\n    accuracy = predict.sum().item()\/x[0].size(0)\n    \n    \n    optimizer.zero_grad()\n    loss.backward()\n    optimizer.step()\n    \n    hist_loss.append(loss)\n    hist_accr.append(accuracy)\n    \n    if epoch % 5 == 0:\n        print('epoch{}, loss : {:.5f}, accuracy : {:.5f}'.format(epoch, loss.item(), accuracy))\n\nplt.plot(hist_loss)\nplt.plot(hist_accr)\nplt.legend(['Loss','Accuracy'])\nplt.title('Loss\/Legend')\nplt.xlabel('Epoch')\nplt.show()<\/pre>\n\n\n\n<p>\ud559\uc2b5\uc774 \uc644\ub8cc\ub41c \ud6c4 \uc544\ub798\uc640 \uac19\uc774 Loss\/Accuracy\ub97c \ud45c\uc2dc\ud574\ubd05\ub2c8\ub2e4. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" width=\"372\" height=\"278\" src=\"http:\/\/cedartrees.co.kr\/wp-content\/uploads\/2021\/03\/download.png\" alt=\"\" class=\"wp-image-981\" srcset=\"http:\/\/blog.cedartrees.co.kr\/wp-content\/uploads\/2021\/03\/download.png 372w, http:\/\/blog.cedartrees.co.kr\/wp-content\/uploads\/2021\/03\/download-300x224.png 300w\" sizes=\"(max-width: 372px) 100vw, 372px\" \/><\/figure><\/div>\n\n\n\n<p>\ud14c\uc2a4\ud2b8 \ub370\uc774\ud130\ub97c \ud1b5\ud574\uc11c \ud574\ub2f9 \ubaa8\ub378\uc758 \uc815\ud655\ub960\uc744 \ud14c\uc2a4\ud2b8\ud574\ubcf4\ub2c8 0.94 \uac12\uc744 \uc5bb\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">with torch.no_grad():\n  output = model(x[1])\n\n  predict = torch.argmax(output, dim=1)\n  accur = (predict == torch.argmax(y[1], dim=1)).to('cpu').numpy()\n  print(accur.sum()\/len(accur)) # 0.94\n<\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud569\uc131\uacf1\uc2e0\uacbd\ub9dd(CNN, Convolutional Neural Network)\uc740 \ucc98\uc74c\uc5d0\ub294 \uc774\ubbf8\uc9c0 \ubd84\ub958\uc5d0 \ub9ce\uc774 \uc0ac\uc6a9\ub418\uc5c8\uc9c0\ub9cc \ud604\uc7ac\ub294 \uc774\ubbf8\uc9c0 \ubd84\ub958 \uc678\uc5d0\ub3c4 \uc544\uc8fc \ub2e4\uc591\ud55c \ubd84\ub958 \ubb38\uc81c \ud574\uacb0\uc5d0 \uc0ac\uc6a9\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ubc88\uc5d0\ub294 CNN\uc744 \ud65c\uc6a9\ud558\uc5ec \uc74c\uc131\uc2e0\ud638\ub97c \ubd84\ub958\ud558\ub294 \ubb38\uc81c\ub97c \ub2e4\ub904\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc77c\ub2e8 \uc74c\uc131\uc2e0\ud638\ub97c \uba87\uac1c \ub9cc\ub4e4\uc5b4\ubd05\ub2c8\ub2e4. \uc0ac\uc6a9\ud558\ub294 \uc74c\uc131\uc2e0\ud638\ub294 wav(waveform audio file format)\uc785\ub2c8\ub2e4. \uc704\ud0a4\ud53c\ub514\uc544 \uc815\uc758\uc5d0 \uc758\ud558\uba74 WAV \ub610\ub294 WAVE\ub294 \uac1c\uc778\uc6a9 \ucef4\ud4e8\ud130\uc5d0\uc11c \uc624\ub514\uc624\ub97c \uc7ac\uc0dd\ud558\ub294 \ub9c8\uc774\ud06c\ub85c\uc18c\ud504\ud2b8\uc640 IBM \uc624\ub514\uc624 \ud30c\uc77c \ud45c\uc900 \ud3ec\ub9f7\uc774\ub2e4. \uac00\uacf5\ub418\uc9c0 \uc54a\uc740 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.cedartrees.co.kr\/index.php\/2021\/03\/16\/cnn-noise-sound-detection\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;CNN\uc744 \ud65c\uc6a9\ud55c \ube44\uc74c\uc131 \uad6c\uac04 \uac80\ucd9c&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[41,14],"tags":[37,61,72,87,55,88],"_links":{"self":[{"href":"http:\/\/blog.cedartrees.co.kr\/index.php\/wp-json\/wp\/v2\/posts\/969"}],"collection":[{"href":"http:\/\/blog.cedartrees.co.kr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.cedartrees.co.kr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.cedartrees.co.kr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.cedartrees.co.kr\/index.php\/wp-json\/wp\/v2\/comments?post=969"}],"version-history":[{"count":8,"href":"http:\/\/blog.cedartrees.co.kr\/index.php\/wp-json\/wp\/v2\/posts\/969\/revisions"}],"predecessor-version":[{"id":982,"href":"http:\/\/blog.cedartrees.co.kr\/index.php\/wp-json\/wp\/v2\/posts\/969\/revisions\/982"}],"wp:attachment":[{"href":"http:\/\/blog.cedartrees.co.kr\/index.php\/wp-json\/wp\/v2\/media?parent=969"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.cedartrees.co.kr\/index.php\/wp-json\/wp\/v2\/categories?post=969"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.cedartrees.co.kr\/index.php\/wp-json\/wp\/v2\/tags?post=969"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}