π κ°μ
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 μ λ΅ |
π‘ Auxiliary Head | 보쑰 νμ΅ ν€λλ‘ μ νλ ν₯μ |
β‘ μλ | 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 μ°λ + μλν μμ€ν
1οΈβ£ YOLOv7 νμ΅ νμ΄νλΌμΈ μ€λͺ μ (Custom Dataset)
[κΈ°μ‘΄ νμ΅ νμ΄νλΌμΈ λ΄μ© μ μ§…]
7οΈβ£ μ΄λ©μΌ μλ¦Ό μ°λ (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 κ³μ β μ± λΉλ°λ²νΈ μμ± νμ (보μμ± κ°ν)
8οΈβ£ μΉ΄μΉ΄μ€ μλ¦Ό μ°λ (μΉ΄μΉ΄μ€ν‘ λ©μμ§ 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μ μ¬λ κ°μ§!")
9οΈβ£ Google Sheets μκ°ν λμ보λ
π Google Looker Studio μ°λ
- Google Sheetsλ₯Ό λ°μ΄ν° μμ€λ‘ μΆκ°
- μκ°λλ³ νμ§ νμ, ν΄λμ€λ³ λΆν¬, μλ¦Ό νΈλ λ ꡬμ±
- νν° μΆκ° (μκ°, ν΄λμ€, μΉ΄λ©λΌ μμΉ λ±)
π μΆμ² μκ°ν νλͺ©
νλͺ© | μκ°ν νν |
---|---|
κ°μ§ νμ μκ°λλ³ λ³ν | μ κ·Έλν |
ν΄λμ€λ³ κ°μ§ λΉμ¨ | μν μ°¨νΈ |
μλ¦Ό νΈλ¦¬κ±° νμ | λ§λκ·Έλν |
μ€μκ° λ‘κ·Έ 보기 | ν (μλ κ°±μ ) |
β ν΅ν© μλν μλλ¦¬μ€ μμ½
쑰건: μ¬λμ΄ κ°μ§λλ©΄ β
- CCTV νλ μμ λ°μ΄λ©λ°μ€ νμ
- Slack, Line, Kakao, Email μλ¦Ό λ°μ‘
- Google Sheetsμ λ‘κ·Έ κΈ°λ‘
- μΉ λμ보λ μλ λ°μ
β μΆκ°λ κΈ°λ₯ μμ½
- μ΄λ©μΌ μλ¦Ό (SMTP κΈ°λ°)
- μ¬λ κ°μ§ μ μ¦μ κ΄λ¦¬μ μ΄λ©μΌ λ°μ‘
- μΉ΄μΉ΄μ€ μλ¦Όν‘ μ°λ
- Kakao Developers APIλ₯Ό ν΅ν΄ κ²½κ³ λ©μμ§ μ μ‘
- Google Sheets β Looker Studio μκ°ν
- νμ§ λ‘κ·Έλ₯Ό μλ μ°¨νΈννμ¬ μΉ λμ보λλ‘ μκ°ν
μ΄λ‘μ¨ νμ§ β μ€μκ° μλ¦Ό β κΈ°λ‘ β μκ°ν λμ보λκΉμ§ μμ ν μλνλ AI λͺ¨λν°λ§ νμ΄νλΌμΈμ΄ ꡬμΆλ©λλ€.