๐Ÿšญ ๊ธˆ์—ฐ๊ตฌ์—ญ ํก์—ฐ์ž ์‹๋ณ„ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๐ŸŽฏ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๐Ÿ–ฅ๏ธ ์‹คํ–‰ ํ๋ฆ„ ์š”์•ฝ

[์›น์บ  ์˜์ƒ ์ˆ˜์‹ ]
        โ†“
[YOLOv8๋กœ person/cigarette ํƒ์ง€]
        โ†“
[๋‹ด๋ฐฐ๊ฐ€ ์‚ฌ๋žŒ ๋ฐ•์Šค ๋‚ด๋ถ€? โ†’ YES]
        โ†“
[30 ํ”„๋ ˆ์ž„ ์ด์ƒ ์œ ์ง€? โ†’ YES]
        โ†“
[1ํšŒ ์นด์šดํŠธ ์ฆ๊ฐ€ + ์ด๋ฏธ์ง€ ์ €์žฅ + ๋นจ๊ฐ„ ํ™”๋ฉด + ๊ฒฝ๊ณ  ๋ฌธ๊ตฌ ์ถœ๋ ฅ]

๐Ÿง  ์ฃผ์š” ๊ธฐ๋Šฅ


๊ธฐ๋Šฅ์„ค๋ช…

๐Ÿšถ ๊ฐ์ฒด ํƒ์ง€ person, cigarette ํด๋ž˜์Šค YOLOv8 ๋ชจ๋ธ๋กœ ์‹ค์‹œ๊ฐ„ ํƒ์ง€
๐Ÿ“ฆ ํฌํ•จ ํŒ๋‹จ ๋‹ด๋ฐฐ ๋ฐ•์Šค๊ฐ€ ์‚ฌ๋žŒ ๋ฐ•์Šค ์•ˆ์— ํฌํ•จ๋˜๋ฉดย ํก์—ฐ ํ–‰์œ„๋กœ ํŒ๋‹จ
๐Ÿ–ผ๏ธ ํ”„๋ ˆ์ž„ ์ €์žฅ ํƒ์ง€๋œ ํก์—ฐ ์ด๋ฏธ์ง€ ์ž๋™ ์ €์žฅ (ํด๋” ๋ฐ static ๋””๋ ‰ํ† ๋ฆฌ)
๐Ÿšจ ๊ฒฝ๊ณ  ์ถœ๋ ฅ "Stop Smoking Please." ๋ฌธ๊ตฌ ๋ฐ ๋นจ๊ฐ„ ์˜ค๋ฒ„๋ ˆ์ด ์ฒ˜๋ฆฌ
๐ŸŒ ์›น ์ œ๊ณต Flask ์„œ๋ฒ„์—์„œ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ + ์ตœ๊ทผ ์ด๋ฏธ์ง€ ํ™•์ธ UI ์ œ๊ณต

์ด๋ฏธ์ง€ ์ €์žฅ ์กฐ๊ฑด ์ง€์† ์‹œ๊ฐ„ ์กฐ๊ฑด ๋งŒ์กฑ ์‹œ ํ•œ ๋ฒˆ๋งŒ ์ €์žฅ
์ค‘๋ณต ์ €์žฅ ๋ฐฉ์ง€ โœ… is_counted ํ”Œ๋ž˜๊ทธ๋กœ 1ํšŒ ์ €์žฅ ํ›„ ๋ฌด์‹œ
ํ”„๋ ˆ์ž„ ๊ธฐ๋ฐ˜ ์กฐ๊ฑด โœ… SMOKE_DETECT_THRESHOLD (๊ธฐ๋ณธ 30ํ”„๋ ˆ์ž„) ๋„์ž…
ํƒ์ง€ ์‹œ ์˜ค๋ฒ„๋ ˆ์ด ๋™์ผํ•˜๊ฒŒ ๋ถ‰์€ ๋ฐฐ๊ฒฝ + ํ…์ŠคํŠธ ์ถœ๋ ฅ ์œ ์ง€

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ๊ตฌ์„ฑ

ํ•ญ๋ชฉ์‚ฌ์šฉ ๊ธฐ์ˆ 

์›น ์„œ๋ฒ„ Flask
์˜์ƒ์ฒ˜๋ฆฌ OpenCV (cv2.VideoCapture, cv2.rectangle, cv2.imwrite)
๊ฐ์ฒดํƒ์ง€ YOLOv8 (ultralytics ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)
์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ multipart/x-mixed-replace MIME ํƒ€์ž… ์‚ฌ์šฉ
UI ํ…œํ”Œ๋ฆฟ index.html (์ตœ๊ทผ ๊ฐ์ง€ ์ด๋ฏธ์ง€์™€ ํก์—ฐ์ž ์ˆ˜ ํ‘œ์‹œ)

๐Ÿง  ํ•™์Šต ๊ณผ์ • ๊ฐœ์š”

โœ… ๋ฐ์ดํ„ฐ์…‹ ๊ตฌ์„ฑ

ํ•ญ๋ชฉ๋‚ด์šฉ

ํด๋ž˜์Šค person, cigarette
์ด ์ธ์Šคํ„ด์Šค ์ˆ˜ person: ์•ฝ 6,800๊ฐœ / cigarette: ์•ฝ 6,400๊ฐœ
์ด๋ฏธ์ง€ ๋‚ด ๊ฐ์ฒด ์œ„์น˜ ๋Œ€๋ถ€๋ถ„ ์ค‘์•™ ์ค‘์‹ฌ์— ๋ถ„ํฌ (center bias ์กด์žฌ)
๋ฐ”์šด๋”ฉ ๋ฐ•์Šค ํฌ๊ธฐ cigarette๋Š” ์ž‘๊ณ  compact, person์€ ์ƒ๋Œ€์ ์œผ๋กœ ํผ
๋ฐ์ดํ„ฐ ๋ถˆ๊ท ํ˜• ์—ฌ๋ถ€ ์‹ฌ๊ฐํ•œ imbalance๋Š” ์•„๋‹˜ (๋น„์Šทํ•œ ์ˆ˜์ค€)