demo
parameter
demo_names: ν΄λμ€ μ΄λ¦μ λ΄κ³ μλ λ¬Έμμ΄ λ°°μ΄
demo_alphabet: μ΄λ―Έμ§ μΆλ ₯ μ μ¬μ©λλ ν°νΈ μ΄λ―Έμ§ λ°°μ΄
demo_classes: ν΄λμ€μ κ°μ
net: λ₯λ¬λ λͺ¨λΈμ λ΄κ³ μλ λ€νΈμν¬ κ΅¬μ‘°μ²΄
buff: μΉ΄λ©λΌ λλ λΉλμ€ μ€νΈλ¦Όμμ μ½μ΄λ€μΈ μ΄λ―Έμ§λ₯Ό λ΄κ³ μλ μ΄λ―Έμ§ λ°°μ΄
buff_letter: μ΄λ―Έμ§ μΆλ ₯ μ μ¬μ©λλ κΈμ μ΄λ―Έμ§ λ°°μ΄
buff_index: νμ¬ μ¬μ© μ€μΈ μ΄λ―Έμ§ λ°°μ΄μ μΈλ±μ€
cap: μΉ΄λ©λΌ λλ λΉλμ€ μ€νΈλ¦Όμ λ΄κ³ μλ ν¬μΈν°
fps: νμ¬ νλ μ μλ
demo_thresh: κ°μ²΄ νμ§μ μ¬μ©λλ μκ³κ°
demo_hier: κ°μ²΄ νμ§ μ μ¬μ©λλ IoU μκ³κ°
running: νλ‘κ·Έλ¨μ΄ μ€ν μ€μΈμ§ λνλ΄λ νλκ·Έ
demo_frame: νμ¬ νλ μ μΈλ±μ€
demo_index: νμ¬ ν΄λμ€ μΈλ±μ€
predictions: λ€νΈμν¬κ° μμΈ‘ν κ°μ²΄μ μ 보λ₯Ό λ΄κ³ μλ μ΄μ°¨μ λ°°μ΄
avg: μμΈ‘ν κ°μ²΄ μ 보μ νκ· κ°
demo_done: κ°μ²΄ νμ§κ° μλ£λμλμ§ λνλ΄λ νλκ·Έ
demo_total: κ°μ²΄ νμ§λ μ 체 κ°μ
demo_time: κ°μ²΄ νμ§μ μμλ μκ°
ν¨μ μ΄λ¦: detection *get_network_boxes
μ λ ₯:
network *net : μ¬μ©ν λ€νΈμν¬
int w : μ΄λ―Έμ§μ κ°λ‘ ν¬κΈ°
int h : μ΄λ―Έμ§μ μΈλ‘ ν¬κΈ°
float thresh : κ°μ²΄ κ²μΆμ μν μ΅μ νλ₯ μκ³κ°
float hier : κ°μ²΄ κ²μΆμ μν μ΅μ IOU μκ³κ°
int *map : μ¬μ©νμ§ μμ
int relative : μ’ν κ³μ°μ μ¬μ©
int *num : κ²μΆλ κ°μ²΄μ μλ₯Ό μ μ₯ν ν¬μΈν°
size_network
ν¨μ μ΄λ¦: size_network
μ λ ₯:
network ꡬ쑰체 ν¬μΈν° (neural network λͺ¨λΈ)
λμ:
μ λ ₯μΌλ‘ λ°μ neural network λͺ¨λΈμμ YOLO, REGION, DETECTION λ μ΄μ΄μ μΆλ ₯ ν¬κΈ°λ₯Ό ν©μ°νμ¬ μ΄ μΆλ ₯ ν¬κΈ°λ₯Ό κ³μ°νλ€.
μ€λͺ :
μ΄ ν¨μλ neural network λͺ¨λΈμ μΆλ ₯ ν¬κΈ°λ₯Ό κ³μ°νλ ν¨μμ΄λ€.
μ λ ₯μΌλ‘ λ°μ λͺ¨λΈμ λͺ¨λ λ μ΄μ΄λ₯Ό μννλ©΄μ YOLO, REGION, DETECTION λ μ΄μ΄μ μΆλ ₯ ν¬κΈ°λ₯Ό ν©μ°νμ¬ λ°ννλ€.
μ΄ ν¨μλ μλ₯Ό λ€μ΄ λͺ¨λΈμ μΆλ ₯ ν¬κΈ°λ₯Ό κ³μ°νλ λ° μ¬μ©λ μ μμΌλ©°, μμΈ‘μ΄λ μΆλ‘ κ²°κ³Όλ₯Ό μ²λ¦¬νλ λ° μ μ©νκ² μ¬μ©λ μ μλ€.
remember_network
ν¨μ μ΄λ¦: remember_network
μ λ ₯:
network *net: λ΄λ΄ λ€νΈμν¬ κ΅¬μ‘°μ²΄ ν¬μΈν°
λμ:
λ€νΈμν¬μ μΆλ ₯ κ°μ μμΈ‘ κ°μΌλ‘ 볡μ¬νμ¬ κΈ°μ΅ν©λλ€.
μ΄ ν¨μλ YOLO, REGION λλ DETECTION λ μ΄μ΄μμ λμ¨ μΆλ ₯ κ°λ§ 볡μ¬ν©λλ€.
μ€λͺ :
λ΄λ΄ λ€νΈμν¬μμλ μ λ ₯ λ°μ΄ν°λ₯Ό μ΄μ©νμ¬ μΆλ ₯ κ°μ μμΈ‘ν©λλ€.
μ΄ ν¨μλ ν΄λΉ λ€νΈμν¬μ μμΈ‘ κ°μ 볡μ¬νμ¬ κΈ°μ΅ν©λλ€.
μ΄ κΈ°μ΅λ μμΈ‘ κ°μ λμ€μ λ€μν λͺ©μ μΌλ‘ μ¬μ©λ μ μμ΅λλ€.
μ΄ ν¨μλ demo_indexμ predictions λ°°μ΄μ μ¬μ©ν©λλ€.
demo_indexλ νμ¬ λ°λͺ¨μμ μ¬μ©λλ μ΄λ―Έμ§μ μΈλ±μ€λ₯Ό λνλ΄λ©°, predictions λ°°μ΄μ μμΈ‘ κ°μ κΈ°μ΅νκΈ° μν λ°°μ΄μ λλ€.
μ΄ ν¨μλ κ° λ μ΄μ΄μ μΆλ ₯ κ°μ ν¬κΈ°λ₯Ό count λ³μμ λμ νμ¬ predictions λ°°μ΄μ μ μ ν μμΉμ 볡μ¬ν©λλ€.
avg_predictions
ν¨μ μ΄λ¦: avg_predictions
μ λ ₯:
network *net: λ€νΈμν¬ λͺ¨λΈ
int *nboxes: κ°μ§λ bounding boxμ κ°μλ₯Ό λ΄μ ν¬μΈν° λ³μ
λμ:
μ΄μ μ μ μ₯λ μμΈ‘(predictions)μ μ΄μ©νμ¬ κ° ν΄λμ€μ λν νλ₯ κ°μ νκ· μ κ³μ°νλ€.
κ³μ°λ νκ· κ°μ μ΄μ©νμ¬ λ€μ λ€νΈμν¬λ₯Ό μ€ννκ³ , κ°μ§λ bounding boxλ₯Ό λ°ννλ€.
μ€λͺ :
μ΄μ μ μ μ₯λ predictionsμ remember_network ν¨μλ₯Ό ν΅ν΄ μ μ₯λ μμΈ‘κ°μ λ§νλ€.
μ΄ ν¨μμμλ μ μ₯λ μμΈ‘κ°λ€μ νκ· κ°μ κ³μ°νκ³ , μ΄λ₯Ό μ΄μ©νμ¬ λ€νΈμν¬λ₯Ό μ€ννλ€.
μ΄μ μμΈ‘κ°λ€μ νκ· μ μ΄μ©ν¨μΌλ‘μ¨ μΌμμ μΈ μμΈ‘κ°μ λ³λμ±μ μ€μ΄κ³ , λ³΄λ€ μμ μ μΈ μμΈ‘ κ²°κ³Όλ₯Ό μ»μ μ μλ€.
κ³μ°λ μμΈ‘κ°μ μ΄μ©νμ¬ get_network_boxes ν¨μλ₯Ό νΈμΆνμ¬ bounding boxλ₯Ό κ°μ§νκ³ , μ΄λ₯Ό λ°ννλ€.
detect_in_thread
ν¨μ μ΄λ¦: detect_in_thread
μ λ ₯:
void* ptr: ν¬μΈν° νμ μ μΈμ, μ¬μ©νμ§ μμ
λμ:
YOLO μ κ²½λ§μΌλ‘ κ°μ²΄λ₯Ό νμ§νκ³ , κ²°κ³Όλ₯Ό μΆλ ₯ μ΄λ―Έμ§μ νμνλ€.
νκ· μμΈ‘ κ°μ κ³μ°νκ³ , μ΄λ₯Ό λ°νμΌλ‘ κ°μ²΄λ₯Ό νμ§νκ³ , λΉμ΅λ μ΅μ (NMS)λ₯Ό μννλ€.
λ§μ§λ§μΌλ‘, νμ§λ κ°μ²΄λ€μ μ΄λ―Έμ§μ κ·Έλ¦¬κ³ μΆλ ₯νλ€.
μ€λͺ :
λ¨Όμ , running λ³μλ₯Ό 1λ‘ μ€μ νμ¬ μ€λ λκ° μ€νμ€μμ νμνλ€.
nms λ³μμ 0.4λ₯Ό ν λΉνμ¬ λΉμ΅λ μ΅μ μ μ¬μ©λ μκ³κ°μ μ€μ νλ€.
λ€μμΌλ‘, YOLO μ κ²½λ§μ μΆλ ₯μΈ΅(layer)μ κ°μ Έμμ, νμ¬ μ²λ¦¬ν μ΄λ―Έμ§ λ°μ΄ν°μΈ buff_letter[(buff_index+2)%3].dataλ₯Ό μ λ ₯κ°μΌλ‘ μ λ¬νμ¬ κ°μ²΄λ₯Ό μμΈ‘νλ€.
μμΈ‘λ κ²°κ³Όλ₯Ό νκ· μμΈ‘ κ°μΌλ‘ κΈ°μ΅νκ³ , avg_predictions() ν¨μλ₯Ό μ¬μ©νμ¬ νκ· μμΈ‘ κ°μ λ°νμΌλ‘ κ°μ²΄λ₯Ό νμ§νλ€.
λΉμ΅λ μ΅μ λ₯Ό μννμ¬ μ€λ³΅μΌλ‘ νμ§λ κ°μ²΄λ₯Ό μ κ±°νλ€.
λ§μ§λ§μΌλ‘, μΆλ ₯ μ΄λ―Έμ§μ νμ§λ κ°μ²΄λ€μ κ·Έλ¦¬κ³ μΆλ ₯νλ€. μ€λ λκ° μ€νμ μλ£νλ©΄ running λ³μλ₯Ό 0μΌλ‘ μ€μ νμ¬ μ€λ λκ° μ’ λ£λμμμ νμνλ€.
fetch_in_thread
ν¨μ μ΄λ¦: fetch_in_thread
μ λ ₯:
void *ptr: ν¬μΈν°
λμ:
μΉ΄λ©λΌλ‘λΆν° μ΄λ―Έμ§λ₯Ό κ°μ Έμμ ν΄λΉ μ΄λ―Έμ§λ₯Ό μ κ²½λ§ λͺ¨λΈμ μ λ ₯ ν¬κΈ°μ λ§κ² 리μ¬μ΄μ§νκ³ , μ΄μ μ΄λ―Έμ§λ₯Ό ν΄μ νκ³ μ μ΄λ―Έμ§λ‘ λ체ν¨.
μ€λͺ :
μ΄ ν¨μλ μ°λ λμμ μ€νλλ©°, μΉ΄λ©λΌ μ€νΈλ¦Όμμ μ΄λ―Έμ§λ₯Ό κ°μ Έμμ μ΄μ λ²νΌ μ΄λ―Έμ§λ₯Ό ν΄μ νκ³ , μ μ΄λ―Έμ§λ₯Ό μ κ²½λ§ λͺ¨λΈμ μ λ ₯ ν¬κΈ°μ λ§κ² 리μ¬μ΄μ§νμ¬ νμ¬ λ²νΌμ ν λΉνλ μν μ ν©λλ€.
μ΄μ μ ν λΉλ μ΄λ―Έμ§ λ©λͺ¨λ¦¬λ₯Ό ν΄μ νμ¬ λ©λͺ¨λ¦¬ λμλ₯Ό λ°©μ§ν©λλ€.
display_in_thread
ν¨μ μ΄λ¦: display_in_thread
μ λ ₯:
void *ptr: ν¬μΈν°
λμ:
νμ¬ λ²νΌ μ€ λ€μ λ λ²μ§Έ μ΄λ―Έμ§λ₯Ό νλ©΄μ νμνλ€.
ν€λ³΄λ μ λ ₯μ λ°μ ν΄λΉνλ κΈ°λ₯μ μννλ€. (ESC: μ’ λ£, R: detection μκ³κ° μ¦κ°, F: detection μκ³κ° κ°μ, T: hierarchy μκ³κ° μ¦κ°, G: hierarchy μκ³κ° κ°μ)
μ€λͺ :
λ₯λ¬λ λͺ¨λΈμ΄ μμΈ‘ν κ²°κ³Όλ₯Ό νλ©΄μ 보μ¬μ£Όλ μν μ λ΄λΉνλ ν¨μμ΄λ€.
λ²νΌ μ€ λ€μ λ λ²μ§Έ μ΄λ―Έμ§λ₯Ό νλ©΄μ νμνμ¬ μ€μκ°μΌλ‘ μμμ νμΈν μ μλλ‘ νλ€.
ν€λ³΄λ μ λ ₯μ λ°μ ν΄λΉνλ κΈ°λ₯μ μννλ€. ESCλ₯Ό λλ₯΄λ©΄ νλ‘κ·Έλ¨μ΄ μ’ λ£λκ³ , R, F, T, G ν€λ₯Ό λλ₯΄λ©΄ κ°κ° detection μκ³κ°μ μ¦κ°μν€κ±°λ κ°μμν€κ³ , hierarchy μκ³κ°μ μ¦κ°μν€κ±°λ κ°μμν¨λ€.
display_loop
ν¨μ μ΄λ¦: display_loop
μ λ ₯:
ptr: void ν¬μΈν°
λμ:
display_in_thread ν¨μλ₯Ό 무ν 루νλ‘ μ€ννμ¬ μμ μΆλ ₯ μ°½μ μ μ§μν€κ³ , μ¬μ©μ μ λ ₯μ λ°λΌ demo_threshμ demo_hier λ±μ λ³μ κ°μ λ³κ²½ν μ μλλ‘ νλ€.
μ€λͺ :
μ΄ ν¨μλ μ¬μ©μμκ² μμ μΆλ ₯ μ°½μ μ 곡νκ³ , μ¬μ©μ μ λ ₯μ λ°μλ€μ¬ λ³μ κ°λ€μ μ‘°μ ν μ μλλ‘ νλ€.
display_in_thread ν¨μλ μ΄ ν¨μ λ΄μμ 무νν λ°λ³΅λλ©°, μμ μΆλ ₯ μ°½μ΄ μ’ λ£λκ±°λ νλ‘κ·Έλ¨μ΄ μ’ λ£λ λκΉμ§ μ μ§λλ€.
μ΄ ν¨μλ μ°λ λλ‘ μ€νλκΈ° λλ¬Έμ, λ©μΈ νλ‘κ·Έλ¨κ³Ό λ³κ°λ‘ λμνλ©° μμ μΆλ ₯ μ°½μ΄ μ’ λ£λλλΌλ λ©μΈ νλ‘κ·Έλ¨μ κ³μν΄μ μ€νλ μ μλ€.
detect_loop
ν¨μ μ΄λ¦: detect_loop μ λ ₯:
ptr: void ν¬μΈν° (μ¬μ©νμ§ μμ)
λμ:
무ν 루νλ₯Ό λλ©΄μ detect_in_thread ν¨μλ₯Ό νΈμΆνμ¬ κ°μ²΄ νμ§λ₯Ό μν
μ€λͺ :
κ°μ²΄ νμ§ λ£¨νλ₯Ό λλ©° μμμμ κ°μ²΄λ₯Ό νμ§νκ³ , κ·Έ κ²°κ³Όλ₯Ό νλ©΄μ νμνλ ν¨μμ λλ€.
demo
ν¨μ μ΄λ¦: demo
μ λ ₯:
char *cfgfile: YOLO λͺ¨λΈμ μ€μ νμΌ κ²½λ‘
char *weightfile: νμ΅λ YOLO λͺ¨λΈμ κ°μ€μΉ νμΌ κ²½λ‘
float thresh: Object detection κ²°κ³Όμ μκ³κ°
int cam_index: μ¬μ©ν μΉμΊ μ μΈλ±μ€ (0λΆν° μμ)
const char *filename: Object detectionμ μνν λμμ νμΌ κ²½λ‘ (μΉμΊ μ μ¬μ©νμ§ μμ κ²½μ°μλ§ μ¬μ©)
char **names: Object detection λμ ν΄λμ€λͺ λ°°μ΄
int classes: Object detection λμ ν΄λμ€ μ
int delay: Object detection νλ μ κ°μ λλ μ΄
char *prefix: Object detection κ²°κ³Ό μ μ₯μ μ¬μ©ν νμΌ μ΄λ¦ prefix
int avg_frames: Object detection νλ μμ νκ· ν μ (μ΅κ·Ό λͺ κ°μ νλ μμ νκ· ννμ¬ Object detection μν)
float hier: YOLO λͺ¨λΈμ hier νλΌλ―Έν° κ°
int w: λμμ λλ μΉμΊ νλ μμ λλΉ
int h: λμμ λλ μΉμΊ νλ μμ λμ΄
int frames: Object detection μνν νλ μ μ (λμμμμ μ¬μ©)
int fullscreen: Object detection κ²°κ³Όλ₯Ό νμ€ν¬λ¦°μΌλ‘ νμν μ§ μ¬λΆ
λμ:
YOLO λͺ¨λΈμ λ‘λνκ³ , μΉμΊ λλ λμμμ μΊ‘μ²νκΈ° μν μ΄κΈ°ν μμ μ μννλ€.
Object detection κ²°κ³Όλ₯Ό μ μ₯νκΈ° μν λ°°μ΄κ³Ό λ³μλ₯Ό μ΄κΈ°ννλ€.
Object detectionμ μν fetch, detect, display μ€λ λλ₯Ό μμ±νκ³ , κ²°κ³Όλ₯Ό μΆλ ₯νλ€.
prefixκ° μ€μ λμ΄ μμΌλ©΄ Object detection κ²°κ³Όλ₯Ό μ΄λ―Έμ§ νμΌλ‘ μ μ₯νλ€.
demo_done νλκ·Έκ° μ€μ λλ©΄ νλ‘κ·Έλ¨μ μ’ λ£νλ€.
μ€λͺ :
μ΄ μ½λλ YOLO μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ object detectionμ μννλ λ°λͺ¨ νλ‘κ·Έλ¨μ΄λ€.
νλ‘κ·Έλ¨μ μΉμΊ λλ λμμμ μ λ ₯μΌλ‘ λ°μμ Object detectionμ μννκ³ , κ²°κ³Όλ₯Ό μ€μκ°μΌλ‘ μΆλ ₯νλ€.
νλ‘κ·Έλ¨μ fetch, detect, display μ€λ λλ₯Ό μμ±νμ¬ Object detection μ²λ¦¬λ₯Ό λ³λ ¬ννκ³ , μ΅μ νλ μ±λ₯μ 보μΈλ€.
νλ‘κ·Έλ¨μμ μ¬μ©νλ fetch_in_thread, detect_in_thread, display_in_thread ν¨μλ€μ κ°κ° fetch, detect, display μ€λ λμμ μ€νλλ ν¨μμ΄λ€.
demo ν¨μλ μ΄λ€ μ€λ λλ₯Ό μμ±νκ³ , Object detection κ²°κ³Όλ₯Ό μΆλ ₯νλ λ©μΈ 루ν μν μ μννλ€.
demo error
ν¨μ μ΄λ¦: demo
μ λ ₯:
char *cfgfile: YOLO λͺ¨λΈμ κ΅¬μ± νμΌ κ²½λ‘
char *weightfile: νμ΅λ YOLO λͺ¨λΈμ κ°μ€μΉ νμΌ κ²½λ‘
float thresh: κ°μ²΄ νμ§ μκ³κ°
int cam_index: μ¬μ©ν μΉ΄λ©λΌμ μΈλ±μ€
const char *filename: μ¬μ©ν λΉλμ€ νμΌ κ²½λ‘
char **names: ν΄λμ€ μ΄λ¦ λ°°μ΄
int classes: ν΄λμ€ μ
int delay: λΉλμ€ μ¬μ νλ μ κ° λλ μ΄ (λ°λ¦¬μ΄ λ¨μ)
char *prefix: κ²°κ³Ό μ΄λ―Έμ§ νμΌ μ΄λ¦μ prefix
int avg: YOLO λͺ¨λΈμμ μ¬μ©λλ νκ· ν νλ μ μ
float hier: YOLO λͺ¨λΈμμ μ¬μ©λλ Hierarchy μκ³κ°
int w: μ λ ₯ μ΄λ―Έμ§μ λλΉ
int h: μ λ ₯ μ΄λ―Έμ§μ λμ΄
int frames: λΉλμ€μμ μ½μ νλ μ μ
int fullscreen: μ 체 νλ©΄ λͺ¨λ μ¬λΆ
λμ:
YOLO λͺ¨λΈμ λ‘λνκ³ μ λ ₯ μ΄λ―Έμ§λ₯Ό μ²λ¦¬νλ©° κ°μ²΄ νμ§ κ²°κ³Όλ₯Ό νμνλ λ°λͺ¨λ₯Ό μννλ€.
OpenCVλ₯Ό μ¬μ©νμ¬ μΉμΊ λλ λΉλμ€ νμΌμμ μ λ ₯ μ΄λ―Έμ§λ₯Ό κ°μ Έμ¨λ€.
YOLO λͺ¨λΈμμ κ°μ²΄ νμ§λ₯Ό μν΄ fetch_in_thread λ° detect_in_thread ν¨μλ₯Ό μ€ννλ μ€λ λλ₯Ό μμ±νλ€.
display_in_thread ν¨μλ₯Ό μ¬μ©νμ¬ κ°μ²΄ νμ§ κ²°κ³Όλ₯Ό νλ©΄μ νμνλ€.
λΉλμ€μμ νλ μμ μ½κ³ μ΄λ―Έμ§λ₯Ό μ²λ¦¬ν ν κ²°κ³Ό μ΄λ―Έμ§λ₯Ό νμΌλ‘ μ μ₯ν μ μλ€.
νλ‘κ·Έλ¨ μ’ λ£ μ‘°κ±΄μΈ demo_doneμ΄ trueκ° λ λκΉμ§ 무ν 루νλ₯Ό μ€ννλ€.
μ€λͺ :
μ΄ ν¨μλ OpenCVλ₯Ό μ¬μ©νμ¬ μΉμΊ λλ λΉλμ€ νμΌμμ μ λ ₯ μ΄λ―Έμ§λ₯Ό κ°μ Έμ YOLO λͺ¨λΈμ μ¬μ©νμ¬ κ°μ²΄λ₯Ό νμ§νλ λ°λͺ¨λ₯Ό μννλ€.
λ§μ½ OpenCVκ° μ€μΉλμ΄ μμ§ μμ κ²½μ°μλ "Demo needs OpenCV for webcam images." λ©μμ§κ° μΆλ ₯λλ€.
μ΄ ν¨μμμλ fetch_in_thread λ° detect_in_thread ν¨μλ₯Ό μ€ννλ μ€λ λλ₯Ό μμ±νμ¬ κ°μ²΄ νμ§ μλλ₯Ό ν₯μμν€κ³ , display_in_thread ν¨μλ₯Ό μ¬μ©νμ¬ κ°μ²΄ νμ§ κ²°κ³Όλ₯Ό νλ©΄μ νμνλ€.
λν, λΉλμ€μμ νλ μμ μ½κ³ μ΄λ―Έμ§λ₯Ό μ²λ¦¬ν ν κ²°κ³Ό μ΄λ―Έμ§λ₯Ό νμΌλ‘ μ μ₯ν μ μλ€.
Last updated
Was this helpful?