์‹œ๊ฐ์  ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด Tulip Vision๊ณผ ํ•จ๊ป˜ Microsoft Azure CustomVision.ai ์‚ฌ์šฉ

Prev Next

Azure CustomVision.ai๋ฅผ Tulip Vision๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์›Œํฌ์Šคํ…Œ์ด์…˜๊ณผ ๊ทธ ์ด์ƒ์—์„œ ์ฝ”๋“œ ์—†์ด ์‰ฝ๊ฒŒ ์‹œ๊ฐ์  ๊ฒ€์‚ฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ์—์„œ๋Š” Tulip์œผ๋กœ ์‹œ๊ฐ์  ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด Microsoft Azure์˜ CustomVision.ai ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. CustomVision.ai ์„œ๋น„์Šค๋Š” ์‹œ๊ฐ์  ์ธ์‹ ์ž‘์—…์„ ์œ„ํ•œ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. Tulip์„ ์‚ฌ์šฉํ•˜๋ฉด CustomVision.ai๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋จธ์‹  ๋Ÿฌ๋‹ ๋ชจ๋ธ ํ•™์Šต์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œก์•ˆ ๊ฒ€์‚ฌ๋Š” ์ผ์„  ์ž‘์—…์—์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๊ณ ํ’ˆ์งˆ์˜ ์ œํ’ˆ๋งŒ ์ƒ์‚ฐ ๋ผ์ธ์—์„œ ์ถœ๊ณ ๋˜๋„๋ก ํ•˜๊ณ , ๋ฐ˜ํ’ˆ ๋ถ€ํ’ˆ๊ณผ ์žฌ์ž‘์—…์„ ์ค„์ด๋ฉฐ, ์‹ค์ œ ์ˆ˜์œจ์„ ๋†’์ด๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋™ ์œก์•ˆ ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์œก์•ˆ ๊ฒ€์‚ฌ์— ํˆฌ์ž…๋˜๋Š” ์ˆ˜์ž‘์—… ์ธ๋ ฅ์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์–ด ์ „์ฒด ๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๊ณ  ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋ ดํ•œ ์นด๋ฉ”๋ผ๋ฅผ ๊ธฐ์กด ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐํ•˜๊ณ  ๊ฒ€์‚ฌ์šฉ Tulip ์•ฑ์„ ๊ตฌ์ถ•ํ•˜๋ฉด ๋ชจ๋“  ์›Œํฌ์Šคํ…Œ์ด์…˜์— ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์œก์•ˆ ๊ฒ€์‚ฌ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์ œ ์กฐ๊ฑด

์œก์•ˆ ๊ฒ€์‚ฌ ์„ค์ • ์˜ˆ์‹œ

๊ฒ€์‚ฌ ์ด๋ฏธ์ง€๋ฅผ CustomVision.ai์— ์—…๋กœ๋“œํ•˜๊ธฐ

๋ฐ์ดํ„ฐ ์„ธํŠธ Tulip ํ…Œ์ด๋ธ”์—์„œ "๋ฐ์ดํ„ฐ ์„ธํŠธ ๋‹ค์šด๋กœ๋“œ"๋ฅผ ํด๋ฆญํ•˜๊ณ  ์ด๋ฏธ์ง€ ๋ฐ ์ฃผ์„์— ๋Œ€ํ•œ ๊ด€๋ จ ์—ด์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ธํŠธ .zip ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์ปดํ“จํ„ฐ์˜ ํด๋”์— ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ธํŠธ ํ…Œ์ด๋ธ”์˜ ์ฃผ์„์— ๋”ฐ๋ผ ๊ฐ ๊ฐ์ง€ ๋ฒ”์ฃผ๋ณ„๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•˜์œ„ ํด๋”๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Customvision.ai์—์„œ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค:

ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ  "๋ถ„๋ฅ˜" ํ”„๋กœ์ ํŠธ ์œ ํ˜•๊ณผ "๋ฉ€ํ‹ฐํด๋ž˜์Šค(์ด๋ฏธ์ง€๋‹น ๋‹จ์ผ ํƒœ๊ทธ)"๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋ถ„๋ฅ˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์œ ํ˜• ์˜ต์…˜: (์ด ์˜ต์…˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ ํƒ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.)

"์ด๋ฏธ์ง€ ์ถ”๊ฐ€"๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ปดํ“จํ„ฐ์—์„œ ์ˆ˜์—… ์ค‘ ํ•˜๋‚˜์— ๋Œ€ํ•œ ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํŠค๋ฆฝ ํ‘œ ์••์ถ•์„ ํ‘ผ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์—์„œ ๊ฐ€์ ธ์˜จ ํ•˜์œ„ ํด๋”์— ์žˆ๋Š” ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๊ฐ€ Customvision.ai์— ๋กœ๋“œ๋˜๋ฉด ๋ชจ๋“  ์ด๋ฏธ์ง€์— ํ•œ ๋ฒˆ์— ํƒœ๊ทธ๋ฅผ ์ ์šฉํ•˜์—ฌ ํ•˜๋‚˜์”ฉ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ชจ๋“  ์ด๋ฏธ์ง€๊ฐ€ ๋™์ผํ•œ ํด๋ž˜์Šค์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด๋ฏ€๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” ๋ชจ๋“  "์ผ๋ฐ˜" ํด๋ž˜์Šค ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ  ๋ชจ๋“  ์ด๋ฏธ์ง€์— ํƒœ๊ทธ(ํด๋ž˜์Šค)๋ฅผ ํ•œ ๋ฒˆ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค:

๋‹ค๋ฅธ ํด๋ž˜์Šค์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•œ ์—…๋กœ๋“œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ์  ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•œ ๋ชจ๋ธ ํ•™์Šต ๋ฐ ๊ฒŒ์‹œํ•˜๊ธฐ

ํ•™์Šต์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค€๋น„๋˜๋ฉด ๋ชจ๋ธ ํ•™์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์˜ 'ํ›ˆ๋ จ' ๋ชจ๋ธ์„ ํด๋ฆญํ•˜๋ฉด ํ›ˆ๋ จ ๋Œ€ํ™” ์ƒ์ž๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

ํ›ˆ๋ จ ๋ชจ๋“œ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋น ๋ฅด๊ฒŒ ์‹œํ—˜ ์‹คํ–‰ํ•˜๋ ค๋ฉด "๋น ๋ฅธ" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ตœ์ƒ์˜ ๋ถ„๋ฅ˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ๋ ค๋ฉด "๊ณ ๊ธ‰" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋ชจ๋ธ์ด ํ•™์Šต๋˜๋ฉด ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ API ํ˜ธ์ถœ์„ ํ†ตํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋ธ์„ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํผ๋ธ”๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ๊ฒŒ์‹œ๋œ ๋ชจ๋ธ์ด Tulip์˜ ์ถ”๋ก  ์š”์ฒญ์„ ์ˆ˜๋ฝํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณง Tulip์—์„œ ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ ๊ฒŒ์‹œ URL์„ ๋ฉ”๋ชจํ•ด ๋‘์„ธ์š”.

Using Microsoft Azure CustomVision.ai with Tulip Vision for Visual Inspection_490190230.png

๊ฒŒ์‹œ๋œ ๋ชจ๋ธ์— ์ถ”๋ก  ์š”์ฒญ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์œ„์ ฏ

์‚ฌ์šฉ์ž ์ง€์ • ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜์—ฌ Tulip์—์„œ Azure CustomVision.ai ์„œ๋น„์Šค์— ์ถ”๋ก  ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์ •์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์œ„์ ฏ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ์‚ฌ์šฉ์ž ์ง€์ • ์œ„์ ฏ์„ ๋งŒ๋“ค๊ณ  ๋‹ค์Œ ์ž…๋ ฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

์ฝ”๋“œ ๋ถ€๋ถ„์€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

HTML

<button class="button" type="button">์ด์ƒ ์ง•ํ›„ ๊ฐ์ง€</button>

JavaScript

์ฐธ๊ณ : ์—ฌ๊ธฐ์„œ CustomVision.ai ๊ฒŒ์‹œ๋œ ๋ชจ๋ธ์—์„œ URL๊ณผ ์˜ˆ์ธก ํ‚ค๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ b64toblob(image) {
const byteArray = Uint8Array.from(window.atob(image), c => c.charCodeAt(0));
return new Blob([byteArray], {type: 'application/octet-stream'});
}

๋น„๋™๊ธฐ ํ•จ์ˆ˜ detectAnomalies() { {
let image = getValue("imageBase64String");
const url = '<<< CustomVision.ai์˜ URL ์‚ฌ์šฉ>>';
.ajax({
url: url,
type: 'post',
data: b64toblob(image),
cache:false,
processData: false,
ํ—ค๋”: {
'์˜ˆ์ธก ํ‚ค': '<<< ์˜ˆ์ธก ํ‚ค ์‚ฌ์šฉ >>>',
'Content-Type': 'application/octet-stream'
},
์„ฑ๊ณต: (์‘๋‹ต) => {
setValue("์˜ˆ์ธก", response["์˜ˆ์ธก"]);
},
error: (err) => {
console.log(err);
},
async: false,
});
}```

CSS

.button {
background-color:

616161;

ํ…Œ๋‘๋ฆฌ: none;
์ƒ‰์ƒ: ํฐ์ƒ‰
padding: 15px 32px;
ํ…์ŠคํŠธ ์ •๋ ฌ: ๊ฐ€์šด๋ฐ
ํ…์ŠคํŠธ ์žฅ์‹: ์—†์Œ
ํ‘œ์‹œ: ์ธ๋ผ์ธ ๋ธ”๋ก;
๊ธ€๊ผด ํฌ๊ธฐ: 16px;
๋„ˆ๋น„: 100%;
}```

์‚ฌ์šฉ์ž ์ง€์ • ์œ„์ ฏ์—์„œ jQuery ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ์œ„์ ฏ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

ํŠค๋ฆฝ ์•ฑ์—์„œ ์˜ˆ์ธก ์œ„์ ฏ ์‚ฌ์šฉํ•˜๊ธฐ

์ด์ œ ์œ„์ ฏ์ด ์„ค์ •๋˜์—ˆ์œผ๋ฏ€๋กœ ์ถ”๋ก  ์š”์ฒญ์„ ์‹คํ–‰ํ•  ์•ฑ์— ์œ„์ ฏ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์•ฑ ๋‹จ๊ณ„๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

์ผ๋ฐ˜ ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์œก์•ˆ ๊ฒ€์‚ฌ ์นด๋ฉ”๋ผ์—์„œ ์Šค๋ƒ…์ƒท์„ ์ฐ๊ณ  ๋ณ€์ˆ˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค:

"์ด์ƒ ์ง•ํ›„ ๊ฐ์ง€" ์‚ฌ์šฉ์ž ์ง€์ • ์œ„์ ฏ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ƒ…์ƒท ์ด๋ฏธ์ง€ ๋ณ€์ˆ˜๋ฅผ base64 ๋ฌธ์ž์—ด๋กœ ๋ฐ›์•„๋“ค์ด๋„๋ก ์œ„์ ฏ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ถœ๋ ฅ์„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์•ฑ์—์„œ ์‹œ๊ฐ์  ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•œ ์ถ”๋ก  ์š”์ฒญ์„ ์‹คํ–‰ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ์  ๊ฒ€์‚ฌ ์•ฑ ์‹คํ–‰ํ•˜๊ธฐ

์•ฑ์ด ์ค€๋น„๋˜๋ฉด ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์— ์‚ฌ์šฉํ•œ ๊ฒ€์‚ฌ ์นด๋ฉ”๋ผ๊ฐ€ ์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด ๊ธฐ๊ธฐ์—์„œ ์•ฑ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๋ช…, ๊ฑฐ๋ฆฌ ๋˜๋Š” ๊ฐ๋„์˜ ์ฐจ์ด๋กœ ์ธํ•œ ์˜ค๋ฅ˜๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์— ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ƒํ™ฉ์„ ๊ฒ€์‚ฌ ์ถ”๋ก ์— ์žฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์‹คํ–‰ ์ค‘์ธ ์‹œ๊ฐ์  ๊ฒ€์‚ฌ ์•ฑ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค:

์ถ”๊ฐ€ ์ž๋ฃŒ