๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

๐Ÿ’ป Programming/AI & ML16

[pytorch] Dataloader์˜ 'collate_fn'์„ ์‚ฌ์šฉํ•œ ์ด๋ฏธ์ง€ ํŒจ๋”ฉ. ๊ฐ€๋ณ€ ์‚ฌ์ด์ฆˆ์˜ ์ด๋ฏธ์ง€๋ฅผ batch๋กœ ๋ฌถ์–ด Dataloader์— ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•. Pytorch์˜ Dataloader๋Š” ์ธ๋ฑ์Šค์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” dataset, ๊ฐ€์ ธ์˜ฌ ๋ฐ์ดํ„ฐ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ปจํŠธ๋กคํ•˜๋Š” sampler์™€ batch๋กœ ๋ฌถ์ธ ๋ฐ์ดํ„ฐ๋ฅผ batch๋กœ ๋ฌถ์„ ๋•Œ ํ•„์š”ํ•œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” collate_fn ๋“ฑ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ•™์Šต ๋˜๋Š” ์ธํผ๋Ÿฐ์Šค ํ•˜๋‹ค๋ณด๋ฉด ๊ฐ€๋ณ€ ์‚ฌ์ด์ฆˆ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋ธ์— ์ฃผ์ž…ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ, ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ ํŠน์ • ์‚ฌ์ด์ฆˆ(e.g. 224x224)๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋ฆฌ์‚ฌ์ด์ฆˆํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋ž˜์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ํผ๋ธ”๋ฆญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ„ ์ƒ๊ฐ์—†์ด transforms.Resize() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๊ด„๋œ ์‚ฌ์ด์ฆˆ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋‹ค. ํ•˜์ง€๋งŒ, ์‹ค์ œ ํ™˜๊ฒฝ์—์„œ ์ผ๊ด„๋œ ์ด๋ฏธ์ง€ ๋ฆฌ์‚ฌ์ด์ง•์„ ์‚ฌ์šฉํ•˜๋Š”.. 2023. 3. 3.
[HuggingFace] Swin Transformer ์ด๋ฏธ์ง€ ๋ถ„๋ฅ˜ ๋ชจ๋ธ ํ•™์Šต ํŠœํ† ๋ฆฌ์–ผ ์ตœ๊ทผ์— ํŠธ๋žœ์Šคํฌ๋จธ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ผ์ด ์ƒ๊ฒจ ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ์ธ HuggingFace ๋ฅผ ์‚ฌ์šฉํ•ด๋ดค๋‹ค. HuggingFace์˜ transformers๋Š” ๋‹ค์–‘ํ•œ ํŠธ๋žœ์Šคํฌ๋จธ ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜๊ณ  ์ž์ฒด ํ•™์Šต/ํ‰๊ฐ€ API๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋˜ํ•œ ํ—ˆ๊น…ํŽ˜์ด์Šค ๋ชจ๋ธ์€ Pytorch, Tensorflow ํ•™์Šต/ํ‰๊ฐ€ ์ฝ”๋“œ์—๋„ ๊ทธ๋Œ€๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ์„๋งŒํผ ํ˜ธํ™˜์„ฑ์ด ์ข‹๋‹ค๊ณ  ์•Œ๋ ค์ ธ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ pytorch ํ•™์Šต ์ฝ”๋“œ์— ๋ชจ๋ธ๋งŒ ํ—ˆ๊น…ํŽ˜์ด์Šค์˜ ํŠธ๋žœ์Šคํฌ๋จธ๋กœ ๋ฐ”๊ฟ”์„œ ํ•™์Šต์‹œํ‚ค๋ฉด ๋˜๋‹ˆ๊นŒ ๊ฐ„๋‹จํ•˜๊ฒ ๊ตฌ๋‚˜ ์ƒ๊ฐํ–ˆ์ง€๋งŒ... ์ƒ๊ฐ๋ณด๋‹ค ๊ณ ๋ คํ•ด์•ผํ•  ์ ๋“ค์ด ์žˆ์–ด์„œ ํŠœํ† ๋ฆฌ์–ผ๋กœ ์ •๋ฆฌํ•ด ๋ณธ๋‹ค. HuggingFace Vision Model ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๋ฐ์ดํ„ฐ์…‹ ์ค€๋น„ Vision Transformer(ViT) ๊ธฐ๋ฐ˜์˜ ์ด๋ฏธ์ง€ ํŠธ๋žœ์Šคํฌ๋จธ ๋ชจ๋ธ๋“ค์€ ์ž…๋ ฅ ์ด๋ฏธ์ง€๋ฅผ ์œ„์™€ ๊ฐ™์ด ํŒจ์น˜๋กœ .. 2023. 1. 11.
[ONNX] pytorch ๋ชจ๋ธ์„ ONNX๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ONNX (Open Neural Network eXchange) ONNX๋Š” ๊ธฐ๊ณ„ ํ•™์Šต ๋ชจ๋ธ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์˜คํ”ˆ ํฌ๋งท์œผ๋กœ ONNX ๋Ÿฐํƒ€์ž„์€ ์—ฌ๋Ÿฌ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ๊ณผ ํ•˜๋“œ์›จ์–ด(์œˆ๋„์šฐ, ๋ฆฌ๋ˆ…์Šค, ๋งฅ์„ ๋น„๋กฏํ•œ ํ”Œ๋žซํผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ CPU, GPU ๋“ฑ์˜ ํ•˜๋“œ์›จ์–ด)์—์„œ ํšจ์œจ์ ์ธ ์ถ”๋ก ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์™€์˜ ์—ฐ๊ณ„๊ฐ€ ํ•„์š”ํ•  ๋•Œ ONNX๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (pytorch ↔๏ธŽ tensorflow ↔๏ธŽ caffe2 ↔๏ธŽ MXNet ↔๏ธŽ ...) *์ฐธ๊ณ  https://pytorch.org/docs/stable/onnx.html https://tutorials.pytorch.kr/advanced/super_resolution_with_onnxruntime.html ONNX ์˜ˆ์ œ 1. Pytorch ๋ชจ๋ธ.. 2022. 12. 21.
[pytorch] Mixed Precision ์‚ฌ์šฉ ๋ฐฉ๋ฒ• | torch.amp | torch.autocast | ๋ชจ๋ธ ํ•™์Šต ์†๋„๋ฅผ ๋†’์ด๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• Mixed Precision ์ผ๋ฐ˜์ ์ธ neural network์—์„œ๋Š” 32-bit floating point(FP32) precision์„ ์ด์šฉํ•˜์—ฌ ํ•™์Šต์„ ์‹œํ‚ค๋Š”๋ฐ, ์ตœ์‹  ํ•˜๋“œ์›จ์–ด์—์„œ๋Š” lower precision(FP16) ๊ณ„์‚ฐ์ด ์ง€์›๋˜๋ฉด์„œ ์†๋„์—์„œ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ FP16์œผ๋กœ precision์„ ์ค„์ด๋ฉด ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฒ”์œ„๊ฐ€ ์ค„์–ด๋“ค์–ด ํ•™์Šต ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค. Mixed Precision์€ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ํ•™์Šต ๊ณผ์ •์—์„œ ๋ถ€๋™์†Œ์ˆ˜์  ์—ฐ์‚ฐ์˜ ์ •๋ฐ€๋„๋ฅผ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ๋กœ, ํ•™์Šต ์†๋„๋ฅผ ๋†’์ด๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค. Mixed Precision์€ ๋Œ€๊ฐœ FP32(32๋น„ํŠธ ๋ถ€๋™์†Œ์ˆ˜์ )์™€ FP16(16๋น„ํŠธ ๋ถ€๋™์†Œ์ˆ˜์ )์„ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ฐ€์ค‘์น˜์™€ ๊ทธ๋ž˜๋””์–ธํŠธ๋Š” FP16๋กœ ์ €์žฅํ•˜.. 2022. 12. 20.
[pytorch] pytorch ๋ชจ๋ธ ๋กœ๋“œ ์ค‘ Missing key(s) in state_dict ์—๋Ÿฌ pytorch๋กœ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ Missing key(s) in state_dict ๋ผ๋Š” ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ๊ณผ ๋ถˆ๋Ÿฌ์˜จ ๋ชจ๋ธ ์›จ์ดํŠธ์˜ ํ‚ค๊ฐ’์ด ๋งž์ง€ ์•Š์•„์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์ธ๋ฐ, ๋ชจ๋ธ๊ณผ ๋ชจ๋ธ ์›จ์ดํŠธ๊ฐ€ ์„œ๋กœ ์ง์ด ์•„๋‹Œ ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•˜๊ณ  ๊ฐ„ํ˜น ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ํ•ด๋‹น ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ์šฐ๋ฆฌ๋ฅผ ๊ดด๋กญํžŒ๋‹ค... ใ…Ž ๊ทธ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด torch.load๋กœ ๋ชจ๋ธ์˜ state dict๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๋””๋ฒ„๊น…์„ ํ•ด์„œ state dict์˜ ํ‚ค๊ฐ’์„ ํ™•์ธํ•ด๋ณด๋ฉด ์ •ํ™•ํ•˜๊ฒŒ ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. model_path = './model.pth' model_state_dict = torch.load(model_path) ์œ„ ์ฒซ ๋ฒˆ์งธ ์บก์ฒ˜๋ฅผ ๋ณด๋ฉด ๋ชจ๋ธ state dict์— ๋ชจ๋ธ ์›จ์ดํŠธ.. 2022. 12. 15.
[pytorch] COCO Data Format ์ „์šฉ Custom Dataset ์ƒ์„ฑ Object Detection๊ณผ Segmentation ์—์„œ ํ”ํžˆ ์‚ฌ์šฉ๋˜๋Š” COCO dataformat ์ „์šฉ Customdataset์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•œ๋‹ค. ํ”ํžˆ ์•Œ๊ณ  ์žˆ๋Š” COCO ๋ฐ์ดํ„ฐ์…‹์ด ์žˆ๊ณ , ๋งŽ์€ ๋ฐ์ดํ„ฐ์…‹๋“ค์ด COCO data format ์„ ๋”ฐ๋ฅด๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ์…‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Customdataset์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ COCO API ์ธ Pycocotools ์‚ฌ์šฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค. COCO Data Format Detection task์—์„œ๋Š” Bounding box์˜ ์œ„์น˜์™€ class label์ด ํ•„์š”ํ•˜๊ณ  segmentation task ์—์„œ๋Š” segment mask ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด๋Ÿฌํ•œ annotation ์ •๋ณด๋“ค์€ json ํ˜•ํƒœ๋กœ ์ œ๊ณต๋˜๊ณ , JSON ํŒŒ์ผ์—๋Š” Info, Licen.. 2022. 6. 4.
728x90