[.Net] ML.NET์ ์ด์ฉํ ๋ฅ ๋ฌ๋ ๋ชจ๋ธ ์์ฑํ๊ธฐ - ์ด๋ฏธ์ง ๋ถ๋ฅ
์ธ๊ณต ์ง๋ฅ
์ธ๊ณต ์ง๋ฅ(AI)์ด๋ผ๋ ํค์๋๊ฐ ์ด๋ ๊ฐ๋ ๋น ์ง์ง ์์ต๋๋ค. ํ์ต ๋๊ตฌ๋ ๋ฌผ๋ก ์ด๊ณ ์๋์ฐจ, CCTV, ๊ฒ์ ์์ง, ์ฑ๋ด, ๊ธ์ ์ธ์(OCR) ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ธ๊ณต ์ง๋ฅ ๊ธฐ์ ์ด ๋ง์ด ์ ๋ชฉ๋์์ต๋๋ค.
์ธ๊ณต ์ง๋ฅ์ ์ญ์ฌ๋ 1950๋ ๋ ๊น์ง ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ค๊ณ ํ๋๋ฐ์. ์ง๊ธ๊น์ง ์ฌ๋ฌ ์ํ๊ธฐ๋ฅผ ๊ฑฐ์น๊ณ ์ง์์ ์ธ ๋ฐ์ ์ ํตํด ์ค๋๋ ์ฑGPT๊น์ง ์ค๊ฒ ๋์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, AI ๊ธฐ์ ์ ์ฐ๋ฆฌ ์ํ๊ณผ ๋ฐ์ ํ๊ฒ ์ฐ๊ฒฐ๋์๊ณ , AI ๊ธฐ์ ์ ์ผ๋ง๋ ํ์ฉํ๋์ ๋ฐ๋ผ ์ ๋ฌด ํจ์จ์ฑ์ด ๋ฌ๋ผ์ง ์ ๋์ ๋๋ค.
๋ณธ ํฌ์คํ ์ ๋จธ์ ๋ฌ๋(์ธ๊ณต ์ง๋ฅ ๋ถ์ผ์ ํ์ ์งํฉ, ๋ถ์ผ)์ ๋ํ ๊น์ ์ง์์ด ์๋๋ผ๋, C# ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ๋จธ์ ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ณ ์ ํฉ๋๋ค.
ML.NET
ML.NET์ ๋ง์ดํฌ๋ก์ํํธ์์ ๋ง๋ ๋จธ์ ๋ฌ๋ ํ๋ ์์ํฌ๋ก, ๋ฌด๋ฃ ์คํ ์์ค ํ๋ซํผ์ ๋๋ค. ์์ ์๊ธฐํ ๊ฒ์ฒ๋ผ, ๋จธ์ ๋ฌ๋์ ๋ํ ์ง์์ด ์์ด๋ ๊ฐ์ด๋๋๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ฃผ์ ํน์ง์ ๋์ดํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฌด๋ฃ ์คํ ์์ค
- C# ๋ฐ F# ์ง์
- .NET Core 2.0 ์ด์, .NET Framework 4.6.1 ์ด์ ์ง์
- Windows, Linux, macOS ์ง์
- ๋ฐ์ดํฐ/์ด๋ฏธ์ง/๋ฌธ์์ด ๋ถ๋ฅ, ๊ฐ ์์ธก, ๊ฐ์ฒด ๊ฐ์ง ๋ฑ ์ง์
- Visual Studio 2019, 2022
๊ณต์ ํํ์ด์ง: https://dotnet.microsoft.com/ko-kr/learn/ml-dotnet/what-is-mldotnet
์๋๋ฆฌ์ค
ML.NET์์๋ ์๋๋ฆฌ์ค์ ๋ฐ๋ผ ๋ชจ๋ธ ํ์ต์ด ๋ฌ๋ผ์ง๋๋ค. ์ง์ํ๋ ์๋๋ฆฌ์ค๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ํํ ๋ดค๋ ๊ฐ์์ง์ ๊ณ ์์ด๋ฅผ ๊ตฌ๋ถํ๋ ์ด๋ฏธ์ง ๋ถ๋ฅ๊ฐ ์๊ณ , ๊ฐ ์์ธก์ด๋ ๋ ผ๋ฌธ ์ ์ฌ์ฑ์ ๋น๊ตํ ์ ์๋ ๋ฌธ์ฅ ์ ์ฌ์ฑ๋ ์๋๋ฆฌ์ค๋ ์ ๊ณตํฉ๋๋ค.
๋ณธ๋ฌธ์์๋ ๊ฐ์์ง์ ๊ณ ์์ด๋ฅผ ๊ตฌ๋ถํ๋ ์ด๋ฏธ์ง ๋ถ๋ฅ ์๋๋ฆฌ์ค๋ฅผ ์ ํํ์ฌ ์ฑ๋ฅ ๋ฐ ๊ฒฐ๊ณผ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐ๋ผ ํ๊ธฐ
1. ML.NET Model Builder ์ค์นํ๊ธฐ
Visual Studio ๊ตฌ์ฑ์์ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ML.NET Model Builder๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํฉ๋๋ค. ์๋ค๋ฉด, ์ฒดํฌํ ํ ์ค์น๋ฅผ ์งํํฉ๋๋ค.
2. ML.NET Model Builder ์ ๋ฐ์ดํธํ๊ธฐ
Visual Studio๋ฅผ ์คํํ๊ณ ํ์ฅ ๊ด๋ฆฌ ๋ฉ๋ด๋ฅผ ์คํํฉ๋๋ค.
์ ๋ฐ์ดํธ ํญ๋ชฉ์ ML.NET Model Builder๊ฐ ์๋์ง ํ์ธํฉ๋๋ค. Model Builder๋ฅผ ๋ฐฉ๊ธ ์ค์นํ์ด๋ ์ ๋ฐ์ดํธ๊ฐ ์๋์ด ์์ ์ ์์ต๋๋ค. ๋ฒ์ ์ด ๋ฎ์ผ๋ฉด ํ์ต ๋จ๊ณ์์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ผ๋ฏ๋ก ๋ฐ๋์ ์ ๋ฐ์ดํธํฉ๋๋ค.
3. ํ๋ก์ ํธ ์์ฑ ๋ฐ ๊ธฐ๊ณ ํ์ต ๋ชจ๋ธ ์ถ๊ฐ
์ฝ์ ์ฑ(.NET Framework) ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ๋ฅผ ์ ํํ๊ณ ๊ธฐ๊ณ ํ์ต ๋ชจ๋ธ ๋ฉ๋ด๋ฅผ ์ ํํฉ๋๋ค.
์ด๋ฆ์ ์ง์ ํ ํ ์ถ๊ฐ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
4. ๊ธฐ๊ณ ํ์ต ๋ชจ๋ธ ์ค์
์๋๋ฆฌ์ค๋ฅผ ์ ํํฉ๋๋ค. ์์์ ์๊ธฐํ ๋๋ก, ๋ณธ๋ฌธ์์๋ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ฏ๋ก ์ด๋ฏธ์ง ๋ถ๋ฅ๋ฅผ ์ ํํฉ๋๋ค.
ํ์ต ํ๊ฒฝ์ผ๋ก๋ ๋๋๋ก์ด๋ฉด GPU๋ฅผ ์ ํํฉ๋๋ค. CPU๋ฅผ ์ ํํ๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ GPU๋ฅผ ์ ํํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๋ง์ฝ, GPU ํธํ์ฑ์ ๋ชจ๋ ์ด๋ก์ ํ์๊ฐ ์๋๋ผ๋ฉด ์๋์ ๋ด์ฉ๋๋ก ์กฐ์นํด ๋ณด์ธ์.
4-1. GPU ํ์ฅ
GPU ํ์ฅ์ด ์์ต๋๋ค ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ๋ค์์ ์ ๊ฒํ์ธ์.
โ NVIDIA ๊ทธ๋ํฝ ์นด๋ ๋๋ผ์ด๋ฒ ์
๋ฐ์ดํธ ํ์ธ.
โก Visual Studio ํ์ฅ ๋ฉ๋ด์์ Model Builder ์
๋ฐ์ดํธ ํ์ธ.
4-2. CUDA ๋ฐ cuDNN
2023๋ 10์ 15์ผ ์ ๊ธฐ์ค, CUDA v10.1๊ณผ cuDNN v7.6.4 for CUDA 10.1์ ์ค๋นํด์ผ ํฉ๋๋ค. cuDNN์ ๊ฒฝ์ฐ, ๋ค์ด๋ก๋ํ ํ์ผ ์ค bin\cudnn64_7.dll ํ์ผ์ Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin์ ๋ณต์ฌํฉ๋๋ค.
5. ๋ฐ์ดํฐ ์ถ๊ฐ
์ด์ ํ์ตํ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ผ ํ๋๋ฐ์. ์ ๋ kaggle์์ Cats-vs-Dogs ์ฃผ์ ์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
https://www.kaggle.com/datasets/shaunthesheep/microsoft-catsvsdogs-dataset/
๋ค์ด๋ก๋ํ ํ ๋๋ฌผ ๋ณ๋ก ํ์ต์ฉ(Training) ์ด๋ฏธ์ง์ ๊ฒ์ฌ์ฉ(Inference) ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฅํ์ต๋๋ค. ์ฃผ์ ์ฌํญ์ผ๋ก, ํด๋ ์ด๋ฆ์ด ๋ ์ด๋ธ(Label)์ด ๋๋ฏ๋ก, ํด๋ ์ด๋ฆ์ผ๋ก ์ด๋ฏธ์ง๊ฐ ํ์คํ ๋ถ๋ฅ๋์ด ์์ด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ค์์ ํ๋ฉด์ด ํ์๋ฉ๋๋ค.
6. ํ์ต
ํ์ต ๋ฉ๋ด์์ ํ์ต ์์์ ๋๋ฅด๋ฉด ํ์ต์ด ๋ฐ๋ก ์์๋ฉ๋๋ค. ํ์ต ์ค ๊ธ์๊ฐ ํ์๋๊ณ , ์์ฝ์ง๋ง ์์ ์๊ฐ์ด ํ์๋์ง ์์ ๋ง๋ฅ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
๊ณ ๊ธ ํ์ต ์ต์ ๋ฉ๋ด๋ฅผ ํด๋ฆญํ๋ฉด ์๋์ ์ฐฝ์ด ํ์๋ฉ๋๋ค. ์ฌ์ค ๋ฌด์จ ์๋ฏธ์ธ์ง๋ ์์ธํ ๋ชจ๋ฅด๊ฒ ์ผ๋, ํ์ต ๊ฒฐ๊ณผ๊ฐ ์ข์ง ์์ผ๋ฉด ์ค์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด์ ํ์ต์ ์๋ํฉ๋๋ค.
7. ํ๊ฐ
์ฝ 23๋ถ ๋ง์ ํ์ต์ด ์๋ฃ๋์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ ํ๋๊ฐ 0.4732๋ฐ์ ๋์ง ์๋๊ตฐ์.
ํ๊ฐ ๋ฉ๋ด์์ Inference์ฉ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ๊ฐ์์ง ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ค๋ฉด 52% Dog ๋ ์ด๋ธ์ด๊ณ , ๊ณ ์์ด ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ค๋ฉด 51% Cat ๋ ์ด๋ธ์ ๋๋ค. ํ์ต ๊ฒฐ๊ณผ๊ฐ ์ข์ง ์์ต๋๋ค.
์๋ง๋ ๊ณ ๊ธ ํ์ต ์ต์ ์์ ๋ค๋ฅธ ์ค์ ์ ์ ํํ์ฌ ๋ค์ ํ์ต์ ์๋ํด ๋ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
8. ์ฝ๋ ์ฌ์ฉ
์ด์ ์ฌ์ฉ ํญ์ผ๋ก ๋์ด๊ฐ๋๋ค. ์๋จ์๋ ์ฝ๋ ์์๊ฐ ๋ณด์ด๊ณ , ๊ทธ ์๋์๋ ์๋ฃจ์ ์ ์ถ๊ฐ ๋ฉ๋ด๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ํด๋ฆญํ์ฌ ์ฝ์ ์ฑ ํ๋ก์ ํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์์ ์ฝ๋์ ํจ๊ป ํ๋ก์ ํธ๊ฐ ์์ฑ๋ฉ๋๋ค. ํ์ผ ๊ฒฝ๋ก์ Inference ์ด๋ฏธ์ง๊ฐ ์๋ ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝํ๊ณ ์คํํฉ๋๋ค.
๊ณ ์์ด ์ด๋ฏธ์ง๋ฅผ ํ ์คํธํ๋๋ Cat ๋ ์ด๋ธ 0.52%์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์์ต๋๋ค.
ํ๊ฐ ๋ฉ๋ด์์ ํ ์คํธํ ๊ฒ์ฒ๋ผ ๊ฒฐ๊ณผ๊ฐ ๊ทธ๋ค์ง ์ข์ง ์์ต๋๋ค.
์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋น๊ต
๋ค๋ฅธ ๊ณ ๊ธ ์ต์ ์ค์ ์ ๋ณ๊ฒฝํ์ฌ ์ฌ์๋ ํด๋ดค์ง๋ง ์ฌ์ ํ ๊ฒฐ๊ณผ๊ฐ ์ข์ง ์๋๊ตฐ์. ๊ณ ๊ธ ์ต์ ์ธ์ ๋ณ๋ค๋ฅธ ์ค์ ์ด ์์ด ์ฑ๋ฅ์ ๋ ๋์ผ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. ์ด ์ ์ด ๋๋ฌด ์์ฝ์ต๋๋ค.
์ถ๊ฐ๋ก, ML.NET ๋ชจ๋ธ์ ํ๊ณ์ธ์ง ๊ถ๊ธํ์ฌ ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํ ์คํธ๋ฅผ ์งํํด ๋ณด์์ต๋๋ค. ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Euresys์ Open eVision 23.08์ ์ฌ์ฉํ๋๋ฐ์. ์ฌ๊ธฐ์ ์ ๊ณตํ๋ Deep Learning Studio๋ ๋ฌด๋ฃ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ฌ ์ฝ๊ฒ ๊ฒํ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ฌผ๋ก , ๋จธ์ ๋น์ ์ ์ ํฉํ ๋ชจ๋ธ์ด ์ ์ฉ๋์ด ์๊ฒ ์ง๋ง ๊ฐ๋จํ ๋ถ๋ฅ๋ ๊ฐ๋ฅํ์ง ์์๊น ์๋ํด ๋ดค์ต๋๋ค.
๋์ผํ ์ด๋ฏธ์ง๋ก ํ์ต์ ์งํํ๋๋ ์ฝ 10์๊ฐ ๋๊ฒ ์์ ์๊ฐ์ด ํ์๋์ต๋๋ค. ๊ทธ๋์ 2์๊ฐ ๋ฐ ์ ๋ ํ์ตํ ํ ์ค์ง์ํค๊ณ ํ ์คํธ๋ฅผ ํด๋ดค์ต๋๋ค.
๊ณ ์์ด ์ฌ์ง์ 99%, ๊ฐ์์ง ์ฌ์ง์ 99%๋ก ๋ถ๋ฅ๊ฐ ๋์ต๋๋ค. ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋งค์ฐ ์ ํํ๊ฒ ๋ถ๋ฅํ ์ ์์์ต๋๋ค.
๋ํ, ์๋์ฒ๋ผ Heatmap ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ์ฌ ๋ชจ๋ธ์ด ์ด๋์ ์ง์คํ๋์ง๋ ๋ณด์ฌ์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ธ์ ๊ฒ์ฆํ๋ ์ค Confusion Matrix์ ์ ๋๋ก ์์ํ์ง ๋ชปํ ๊ฒฐ๊ณผ๊ฐ ์์์ต๋๋ค. ํญ๋ชฉ์ ๋ณด๋, Dog ํด๋์ ๊ณ ์์ด์ ๊ธ์, ์ผ๋ฌ์คํธ์ ๊ฐ์ ์ด๋ฏธ์ง๋ค์ด ์์ฌ ์๋๊ตฐ์. Cat ํด๋์๋ ๋ง์ฐฌ๊ฐ์ง์์ต๋๋ค. ์ฌ๋ ์ฌ์ง๋ ์์ฌ์๋ ๊ฒ์ด, ์๋ง๋ ML.NET์์๋ ํ์ต์ ์ ์ข์ ์ํฅ์ ์ฃผ์ง ์์๋ ์ถ์ต๋๋ค.
'Programming > .Net' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[.Net] XML ํ์ผ ์ฝ๊ธฐ์ ์ฐ๊ธฐ, ๊ทธ๋ฆฌ๊ณ ์ง๋ ฌํ(Serialization)๋ก ๊ฐ์ฒด์ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ(์์ ํฌํจ)
[.Net] XML ํ์ผ ์ฝ๊ธฐ์ ์ฐ๊ธฐ, ๊ทธ๋ฆฌ๊ณ ์ง๋ ฌํ(Serialization)๋ก ๊ฐ์ฒด์ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ(์์ ํฌํจ)
2024.05.13 -
[.Net] WinForm UI ์ปจํธ๋กค ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ(Data Binding) ํํค์น๊ธฐ(์์ ํฌํจ)
[.Net] WinForm UI ์ปจํธ๋กค ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ(Data Binding) ํํค์น๊ธฐ(์์ ํฌํจ)
2024.03.24 -
[.Net] ์ง์ฐ(Delay) ํจ์๋ค์ ํน์ง๊ณผ ์ฐจ์ด์ ์ ๋ฆฌ
[.Net] ์ง์ฐ(Delay) ํจ์๋ค์ ํน์ง๊ณผ ์ฐจ์ด์ ์ ๋ฆฌ
2023.01.09 -
[C#] WinForm ๋๊ตฌ ์์์ ์ปจํธ๋กค์ด ์ถ๊ฐ๋์ง ์๋ ๊ฒฝ์ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ
[C#] WinForm ๋๊ตฌ ์์์ ์ปจํธ๋กค์ด ์ถ๊ฐ๋์ง ์๋ ๊ฒฝ์ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ
2022.10.29