๊ฐ์
YOLO(You Only Look Once) ์๋ฆฌ์ฆ๋ ์ปดํจํฐ ๋น์ ์์ ๊ฐ์ฒด ํ์ง(Object Detection)๋ฅผ ์ค์๊ฐ์ผ๋ก ์ํํ๋ ๋ํ์ ์ธ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์
๋๋ค.
๊ทธ์ค์์๋ YOLOv7์ 2022๋
7์, WongKinYiu ํ์ด ๋ฐํํ ๊ฐ์ฅ ๊ฐ๋ ฅํ๊ณ ๋น ๋ฅธ ๋ชจ๋ธ ์ค ํ๋๋ก,
์๋์ ์ ํ๋ ์์ชฝ ๋ชจ๋์์ SOTA(State of the Art) ๋ฅผ ๋ฌ์ฑํ์ต๋๋ค.
โYOLOv7์ YOLO ๊ณ์ด ์ค ๊ฐ์ฅ ์ ํํ๊ณ , ๊ฐ์ฅ ๋น ๋ฅธ ๊ฐ์ฒด ํ์ง ๋ชจ๋ธโ
โ ๋ ผ๋ฌธ โYOLOv7: Trainable Bag-of-Freebies Sets New State-of-the-Art for Real-Time Object Detectorsโ
YOLOv7์ ํต์ฌ ํน์ง
ํน์ง | ์ค๋ช |
---|---|
Anchor-free + anchor-based ๋ชจ๋ ํตํฉ๋ ๋ชจ๋ธ | |
Trainable bag-of-freebies ์ ๋ต | |
๋ณด์กฐ ํ์ต ํค๋๋ก ์ ํ๋ ํฅ์ | |
TensorRT/ONNX ์ต์ ํ ์ ์ค์๊ฐ ๋์ | |
YOLOv5 ๋๋น ๋น์ทํ ํฌ๊ธฐ์ ๋ ๋์ ์ ํ๋ |
YOLOv7 ๊ธฐ์ ๊ตฌ์กฐ
1. E-ELAN (Extended Efficient Layer Aggregation Network)
- ResNet ์คํ์ผ์ skip connection์ ๋ ํจ๊ณผ์ ์ผ๋ก ๋ฐฐ์น
- ๋ ๊น์ ๋คํธ์ํฌ๋ฅผ ํ๋ จ ์์ ์ฑ ์ ์งํ๋ฉฐ ํ์ฅ ๊ฐ๋ฅ
2. Model Re-parameterization
- ํ๋ จ ์์๋ ๋ณต์กํ ๋ถ๊ธฐ ๊ตฌ์กฐ๋ฅผ ์ ์ง
- ์ถ๋ก ์์๋ ๋จ์ผ ๊ฒฝ๋ก๋ก ์ฌ๊ตฌ์ฑํ์ฌ ์๋ ํฅ์
์ฆ, ํ์ต ์์๋ ๋ณต์กํ๊ฒ, ์ถ๋ก ์์๋ ๋จ์ํ๊ฒ โ ์ฑ๋ฅ๊ณผ ์๋ ๋ชจ๋ ํ๋ณด
3. Auxiliary Head ์ ์ฉ
- ๋ณด์กฐ ์ถ๋ ฅ์ผ๋ก ์ค๊ฐ ํผ์ฒ ํ์ต ์ง์
- ์ ๊ทํ ํจ๊ณผ์ ์ผ๋ฐํ ํฅ์
4. Coarse-to-Fine Lead Head
- ํฐ ๊ฐ์ฒด๋ถํฐ ์์ ๊ฐ์ฒด๊น์ง ๋จ๊ณ์ ์ผ๋ก ํ์ต
- ๋ฌผ์ฒด ํฌ๊ธฐ ๋ณํ์ ๊ฐ์ธํจ
์ฑ๋ฅ ๋น๊ต (COCO ๊ธฐ์ค)
๋ชจ๋ธ | AP (์ ํ๋) | FPS (์๋) | ํ๋ผ๋ฏธํฐ |
---|---|---|---|
YOLOv5-L | 49.0 | 95 | 46M |
YOLOv6 | 51.1 | 80 | 43M |
YOLOv7 | 51.4 | 160+ | 37M |
YOLOX | 50.0 | 60 | 54M |
YOLOv7์ ๋ ์์ ํ๋ผ๋ฏธํฐ ์๋ก ๋ ๋์ ์ ํ๋์ ์๋๋ฅผ ๋ฌ์ฑํจ
์ค์ ๊ตฌํ ์
YOLOv7์ GitHub์์ PyTorch ๊ธฐ๋ฐ์ผ๋ก ์คํ์์ค๊ฐ ์ ๊ณต๋ฉ๋๋ค.
bashgit clone https://github.com/WongKinYiu/yolov7
cd yolov7
python detect.py --weights yolov7.pt --source test.jpg
์ ๋ ฅ
- ์ด๋ฏธ์ง, ์์, ์น์บ ๊ฐ๋ฅ
- ๋ค์ํ ํด์๋ ์ง์
์ถ๋ ฅ
- ๋ฐ์ด๋ฉ ๋ฐ์ค, ํด๋์ค, confidence score ์๊ฐํ ๊ฐ๋ฅ
detect.py
โ ์ค์๊ฐ ํ์ง ํ ์คํธ์ ์ ํฉ
ํ์ฉ ์ฌ๋ก
๋ถ์ผ | ํ์ฉ ์์ |
---|---|
์ค๋งํธ ํฉํ ๋ฆฌ | ์ฌ๋ ๋ฐ ์ฅ๋น ์ํ ํ์ง, ๊ณต์ ์ด์ ํ์ง |
์์จ์ฃผํ | ๋ณดํ์/์ฐจ๋ ์ธ์, ๋๋ก ํ์ง ํ์ง |
๋ณด์/๊ฐ์ | ์นจ์ ํ์ง, ์ค์๊ฐ ์ด๋ฒคํธ ์๋ฆผ |
๋ฆฌํ ์ผ ๋ถ์ | ์ฌ๋ ์ ์นด์ดํธ, ๋์ ๋ถ์ |
๋์ /ํ๊ฒฝ | ์๋ฌผ ์ํ ํ์ธ, ๋๋ฌผ ์๋ณ, ์ฐ๋ ๊ธฐ ๋ถ๋ฅ |
YOLOv7๊ณผ YOLO ๊ณ์ด ๋น๊ต
ํญ๋ชฉ | YOLOv4 | YOLOv5 | YOLOv6 | YOLOv7 |
---|---|---|---|---|
์ถ์ฒ | Alexey Bochkovskiy | Ultralytics | Meituan | WongKinYiu |
์ธ์ด | Darknet | PyTorch | PyTorch | PyTorch |
๊ณต๊ฐ ์์ | 2020 | 2020 | 2022 | 2022 |
์ฑ๋ฅ | โ โ โ | โ โ โ โ | โ โ โ โ โ | โ โ โ โ โ |
ํ๊ณ ๋ฐ ์ ์์
- ์ต์ Transformer ๊ธฐ๋ฐ ํ์ง ๋ชจ๋ธ(DETR ๋ฑ)์๋ ์ผ๋ถ ์์ ์์ ๋ฐ๋ฆด ์ ์์
- ์ถ๋ก ์๋๋ ํ๋์จ์ด(GPU, CPU) ์ต์ ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง
- ๋ณต์กํ ์ค๋ธ์ ํธ๊ฐ ๋ง์ ์ฅ๋ฉด์์ false detection ๋ฐ์ ๊ฐ๋ฅ์ฑ ์กด์ฌ
๊ฒฐ๋ก
YOLOv7์ 2024๋ ํ์ฌ์๋ โ์ค์๊ฐ ํ์งโ ๊ธฐ์ค์์ ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ชจ๋ธ ์ค ํ๋๋ก ํ๊ฐ๋ฐ์ต๋๋ค.
- ์ ํ๋, ์๋, ๊ตฌํ ํธ์์ฑ ๋ชจ๋ ๊ฐ์ถ ์ค๋ฌด ์ต์ ํ ๋ชจ๋ธ
- PyTorch ๊ธฐ๋ฐ์ผ๋ก ์ปค์คํฐ๋ง์ด์ง๊ณผ ํ์ฅ์ฑ ์ฐ์
- Edge AI, IoT, ์ฐ์ AI ํ์ฅ์์๋ ์ ๊ทน ํ์ฉ ๊ฐ๋ฅ
โ๋น ๋ฅด๊ณ ์ ํํ ๊ฐ์ฒด ํ์ง๋ฅผ ์ํ๋ค๋ฉด, YOLOv7์ด ๊ฐ์ฅ ํฉ๋ฆฌ์ ์ธ ์ ํ์ด๋ค.โ
YOLOv7 ํตํฉ ํ์ดํ๋ผ์ธ: ํ์ต + ์ต์ ํ + CCTV ์ฐ๋ + ์๋ํ ์์คํ
YOLOv7 ํ์ต ํ์ดํ๋ผ์ธ ์ค๋ช
์ (Custom Dataset)
[๊ธฐ์กด ํ์ต ํ์ดํ๋ผ์ธ ๋ด์ฉ ์ ์งโฆ]
์ด๋ฉ์ผ ์๋ฆผ ์ฐ๋ (SMTP ๊ธฐ๋ฐ)
๊ธฐ๋ณธ ์ค์
- Gmail SMTP ์๋ฒ ์ฌ์ฉ
smtplib
,email.message
๋ชจ๋ ํ์
importsmtplib
fromemail.messageimportEmailMessage
defsend_email_alert(subject,body,to_email):
msg=EmailMessage()
msg.set_content(body)
msg[โSubjectโ]=subject
msg[โFromโ]=โyour_email@gmail.comโ
msg[โToโ]=to_email
withsmtplib.SMTP_SSL(โsmtp.gmail.comโ,465)assmtp:
smtp.login(โyour_email@gmail.comโ,โyour_app_passwordโ)
smtp.send_message(msg)
โ ์ฌ์ฉ ์: send_email_alert("[YOLOv7] ์ฌ๋ ๊ฐ์ง", "CCTV์ ์ฌ๋ ๋ฐ๊ฒฌ๋จ", "admin@domain.com")
์ฃผ์์ฌํญ
- Google ๊ณ์ โ ์ฑ ๋น๋ฐ๋ฒํธ ์์ฑ ํ์ (๋ณด์์ฑ ๊ฐํ)
์นด์นด์ค ์๋ฆผ ์ฐ๋ (์นด์นด์คํก ๋ฉ์์ง API)
์ค๋น
- Kakao Developers ์์ ์ฑ ๋ฑ๋ก
- ์ฌ์ฉ์ ๋์ ํ ํฐ ๋ฐ๊ธ
๋ฉ์์ง ์ ์ก ์์
importrequests
defsend_kakao_alert(msg):
url=โhttps://kapi.kakao.com/v2/api/talk/memo/default/sendโ
headers={โAuthorizationโ: โBearer YOUR_ACCESS_TOKENโ}
data={
โtemplate_objectโ: json.dumps({
โobject_typeโ: โtextโ,
โtextโ: msg,
โlinkโ: {โweb_urlโ: โhttp://your-cctv.comโ,โmobile_web_urlโ: โhttp://your-cctv.comโ}
})
}
requests.post(url,headers=headers,data=data)
โ ์ฌ์ฉ ์: send_kakao_alert("[๊ฒฝ๊ณ ] CCTV์ ์ฌ๋ ๊ฐ์ง!")
Google Sheets ์๊ฐํ ๋์๋ณด๋
Google Looker Studio ์ฐ๋
- Google Sheets๋ฅผ ๋ฐ์ดํฐ ์์ค๋ก ์ถ๊ฐ
- ์๊ฐ๋๋ณ ํ์ง ํ์, ํด๋์ค๋ณ ๋ถํฌ, ์๋ฆผ ํธ๋ ๋ ๊ตฌ์ฑ
- ํํฐ ์ถ๊ฐ (์๊ฐ, ํด๋์ค, ์นด๋ฉ๋ผ ์์น ๋ฑ)
์ถ์ฒ ์๊ฐํ ํญ๋ชฉ
ํญ๋ชฉ | ์๊ฐํ ํํ |
---|---|
๊ฐ์ง ํ์ ์๊ฐ๋๋ณ ๋ณํ | ์ ๊ทธ๋ํ |
ํด๋์ค๋ณ ๊ฐ์ง ๋น์จ | ์ํ ์ฐจํธ |
์๋ฆผ ํธ๋ฆฌ๊ฑฐ ํ์ | ๋ง๋๊ทธ๋ํ |
์ค์๊ฐ ๋ก๊ทธ ๋ณด๊ธฐ | ํ (์๋ ๊ฐฑ์ ) |
ํตํฉ ์๋ํ ์๋๋ฆฌ์ค ์์ฝ
์กฐ๊ฑด: ์ฌ๋์ด ๊ฐ์ง๋๋ฉด โ
- CCTV ํ๋ ์์ ๋ฐ์ด๋ฉ๋ฐ์ค ํ์
- Slack, Line, Kakao, Email ์๋ฆผ ๋ฐ์ก
- Google Sheets์ ๋ก๊ทธ ๊ธฐ๋ก
- ์น ๋์๋ณด๋ ์๋ ๋ฐ์
์ถ๊ฐ๋ ๊ธฐ๋ฅ ์์ฝ
- ์ด๋ฉ์ผ ์๋ฆผ (SMTP ๊ธฐ๋ฐ)
- ์ฌ๋ ๊ฐ์ง ์ ์ฆ์ ๊ด๋ฆฌ์ ์ด๋ฉ์ผ ๋ฐ์ก
- ์นด์นด์ค ์๋ฆผํก ์ฐ๋
- Kakao Developers API๋ฅผ ํตํด ๊ฒฝ๊ณ ๋ฉ์์ง ์ ์ก
- Google Sheets โ Looker Studio ์๊ฐํ
- ํ์ง ๋ก๊ทธ๋ฅผ ์๋ ์ฐจํธํํ์ฌ ์น ๋์๋ณด๋๋ก ์๊ฐํ
์ด๋ก์จ ํ์ง โ ์ค์๊ฐ ์๋ฆผ โ ๊ธฐ๋ก โ ์๊ฐํ ๋์๋ณด๋๊น์ง ์์ ํ ์๋ํ๋ AI ๋ชจ๋ํฐ๋ง ํ์ดํ๋ผ์ธ์ด ๊ตฌ์ถ๋ฉ๋๋ค.