Tensorflow Object Dectection API๋ฅผ ์ฌ์ฉํด ํน์ ๊ฐ์ฒด ๊ฒ์ถ์ ํนํ๋ Detection ๋ชจ๋ธ์ ๋ง๋ค ์ ์๋ Tutorial์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ข ์ข ๋์ ์ ํ๋๋ฅผ ์กฐ๊ธ ์๋ณดํ๋๋ผ๋ ๋น ๋ฅด๊ณ (fast) ๊ฐ๋ฒผ์ด(light) Detection ๋ชจ๋ธ์ ์ํฉ๋๋ค. ๋ํ ์์ญ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๊ฒ์ถํ๊ธฐ ๋ณด๋จ, ํน์ ๊ฐ์ฒด ๋ช ๊ฐ๋ฅผ ์ ํํ๊ณ ๋น ๋ฅด๊ฒ ๊ฒ์ถํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋๋ก์์ ์ฐจ๋๊ณผ ์ฌ๋, ์ ํธ๋ฑ๋ง์ ๊ฒ์ถํ๊ธธ ์ํ๊ฑฐ๋ ์ ์ฉ ์นด๋์ ์ซ์๋ฅผ ๊ฒ์ถํ๋ ๋ชจ๋ธ์ ์ํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
์ด ํํ ๋ฆฌ์ผ์ Tensorflow Object Detection API๋ฅผ ์ฌ์ฉํด ์ฌ์ฉ์๊ฐ ์ํ๋ ํน์ ๊ฐ์ฒด๋ฅผ ๊ฒ์ถํ๋ ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ด ๋ชจ๋ธ์ ๋ง๋ค ์ ์๋๋ก ๋์์ค๋๋ค. ๊ทธ๋ผ์๋ ๋์ ์ ํ๋๋ฅผ ์ ์งํ ์ ์๋ ๋ฐฉ๋ฒ๋ ์๋ ค์ค๋๋ค.
๋ณธ ํํ ๋ฆฌ์ผ์ ์ ์ฉ ์นด๋ ์ซ์ ๊ฒ์ถ ๋ชจ๋ธ ์์ฑ์ ์์๋ก ์ค๋ช ์ ์งํํฉ๋๋ค.
๊ฐ๋ฐ ํ๊ฒฝ
- Ubuntu 16.04
- Python 3.6.6
- Tensorflow 1.9.0
- cuda 9.0
- Step 1. ํ์ต ๋ฐ์ดํฐ ์ค๋น
- Step 2. ๋ฐ์ดํฐ ๋ผ๋ฒจ๋ง
- Step 3. csv ํ์ผ ํตํฉ
- Step 4. TF Record ํ์ผ ์์ฑ
- Step 5. object-detection.pbtxt ํ์ผ ์์ฑ
Tensorflow Object Dectection API์ ์ ๋นํ ํด๋์ git cloneํ๊ณ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ค์น๋ฅผ ์๋ฃํฉ๋๋ค. ( COCO API installation์ ํ์ง ์์๋ ํํ ๋ฆฌ์ผ์ ์งํํ๋๋ฐ ๋ฌธ์ ๋ ์์ต๋๋ค. )
๋ณธ ํํ ๋ฆฌ์ผ์ ๋๋ถ๋ถ์ ์์ ๋ฐ ๋ช ๋ น์ด๋ models/research/object_detection์์ ์คํ๋ฉ๋๋ค. ๋ํ ์๋์ ๊ฐ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด ์๋์ ๊ฐ์ ์์๋๋ก ์งํํฉ๋๋ค.
- ๋ฐ์ดํฐ์ ๊ตฌ์ฑ
- ๋ชจ๋ธ ํ์ต
- ๋ชจ๋ธ ํ ์คํธ
ํ์ต์ ํ์ํ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ์ค๋นํฉ๋๋ค. object_detection/images ํด๋๋ฅผ ๋ง๋ค์ด ํ์ตํ๊ณ ์ ํ๋ ์ด๋ฏธ์ง๋ฅผ Google ๊ฒ์์ ํตํด ๋ค์ด๋ก๋ํ๊ฑฐ๋, ๊ฐ์ง๊ณ ์๋ ์ด๋ฏธ์ง ํ์ผ์ ์ ๊ฒฝ๋ก๋ก ์ ์ฅํด ์ค๋๋ค. ๋ํ ์ฌ๊ธฐ์์ ์ ์ ์๋ฏ์ด ํ์ต ์ ์ฌ์ฉํ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ RGB image๋ก jpeg๋ png ํฌ๋งท์ด์ด์ผ ํฉ๋๋ค.
๋ณธ ํํ ๋ฆฌ์ผ์์ ์ฌ์ฉํ ๋ฐ์ดํฐ์ ์ .png ํ์ผ๊ณผ .csv ํ์ผ์ด ํ ์ ์ฉ ์ด๋ฃจ๊ณ ์๋๋ฐ, ์ฌ๊ธฐ์ .png ํ์ผ์ ํ์ตํ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ด๋ฉฐ, .csv ํ์ผ์๋ ์ด๋ฏธ์ง์ ์กด์ฌํ๋ ๊ฐ์ฒด์ ๋ํ ์ ๋ณด( class, x, y, width, height )๊ฐ ์ ์ฅ๋์ด ์์ต๋๋ค.
๊ฐ์ฒด ์ ๋ณด(.csv ํ์ผ) ์์ฑ์ ๋ํ ์ค๋ช ์ Step 2. ๋ฐ์ดํฐ ๋ผ๋ฒจ๋ง ๋ชฉ๋ก์์ ์ด์ด์ ํ๊ฒ ๋ฉ๋๋ค.
- ํ์ต์ ์ฌ์ฉํ ๋ฐ์ดํฐ์ ๋ฆฌ์คํธ
- ํ์ต์ ์ฌ์ฉํ ์นด๋ ์ด๋ฏธ์ง
- ํ์ต์ ์ฌ์ฉํ ๋ฐ์ดํฐ์ ์ csv ํฌ๋งท( ์ผ์ชฝ๋ถํฐ ๊ฐ์ฒด์ class(์ซ์), x, y, width, height )
ํ์ตํ ์ด๋ฏธ์ง๊ฐ ์ค๋น๋์ผ๋ฉด Object Detection ๋ชจ๋ธ์ ํ์ตํ๊ธฐ ์ํด์ ์ด๋ฏธ์ง์ ์กด์ฌํ๋ ๊ฐ์ฒด์ ์์น์ ์ ๋ณด๋ฅผ Labelling์ ํ๋ ๊ณผ์ ์ด ํ์ํฉ๋๋ค. ์ด์ ๊ด๋ จํ ๋ง์ ํ๋ก๊ทธ๋จ์ด ์กด์ฌํ์ง๋ง ์ด ํํ ๋ฆฌ์ผ์์ github์ open source๋ก ๊ณต๊ฐ๋์ด ์๋ LabelImg๋ฅผ ์ฌ์ฉํ๊ธธ ์ถ์ฒํฉ๋๋ค.
๋ณธ ํํ ๋ฆฌ์ผ์์ ์ ๊ณต๋ฐ์๋ค๊ณ ๊ฐ์ ํ ๊ฐ์ฒด ์ ๋ณด๋ .csv ํ์ผ๋ก ์กด์ฌํ์ง๋ง, ์ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ฌ ๋ผ๋ฒจ๋ง์ ์งํํ์ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ๋ .xml ํ์์ผ๋ก ์ป๊ฒ๋ฉ๋๋ค. ์ด๋ datitran์ github์ ์๋ xml_to_csv.py ์์ค๋ฅผ ์ฌ์ฉํด ๊ฐ๋จํ๊ฒ ํ๋์ .csv ํ์ผ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅํฉ๋๋ค.
๋ง์ฝ ๋ณธ ํํ ๋ฆฌ์ผ์ฒ๋ผ ๋ผ๋ฒจ๋ง ๊ฒฐ๊ณผ๊ฐ class, x, y, width, height์ ์์๋๋ก ์ ์๋ .csv ํ์ผ๋ก ์ป๊ฒ๋๋ค๋ฉด ์๋ Step 3. csv ํ์ผ ํตํฉ ์ฝ๋๋ฅผ ์ด์ฉํด์ ์ ๋ง์ .csv ํ์ผ์ ํ๋๋ก ํตํฉํ ์ ์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ผ๋ฒจ๋งํ ํ ์ป๊ฒ๋๋ ์ค๋ธ์ ํธ์ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์๋ output์ด .csv ๋๋ .xml์ธ ๊ฒ์ ์ค์ํ์ง ์๊ณ ์ด๋ฏธ์ง์ ๊ฐ์ฒด ์ ๋ณด๋ค์ ํ๋์ TFRecord ํ์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ ์ํด ์ ํด์ง ํฌ๋งท์ ๋ง์ถฐ ํ๋์ .csv ํ์ผ๋ก ํตํฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค
xml_to_csv.py ์์ค๋ฅผ ์ฌ์ฉํด์ .xml ํ์ผ์ .csvํ์ผ๋ก ๋ง๋ค์๋ค๋ฉด ์ฝ๊ฐ์ ์์ค ์ฝ๋ ์์ ์ ํตํด TFRecord ํฌ๋งท์ ๋ง๋ ํ๋์ ํตํฉ๋ .csv์ ์ป๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ณธ ํํ ๋ฆฌ์ผ ๋ฐ์ดํฐ์ ์ฒ๋ผ ๊ฐ ์ด๋ฏธ์ง ํ์ผ๋ง๋ค .csv ํ์ผ์ ์ป๊ฒ ๋ ๊ฒฝ์ฐ, TFRecord ํ์ผ์ ์์ฑํ๊ธฐ ์ํด์ ์ด๋ฅผ ํ๋์ ํตํฉ๋ .csv ํ์ผ๋ก ๋ง๋ค์ด์ค์ผ ํฉ๋๋ค.
ํตํฉ๋ .csv ํ์ผ์ TFRecord ํ์ผ์ ์์ฑํ ๋ ์ด์ฉ๋๋๋ฐ, TFRecord ํ์ผ์ Detection ๋ชจ๋ธ ํ์ต์ ์ํด ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํ์ต์ ์๊ตฌ๋๋ ํฌ๋งท์ ๋ง์ถฐ์ .csv ํ์ผ์ ํตํฉํด์ค์ผ ํ๋๋ฐ ํฌ๋งท์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
( filename, width, height, class, xmin, ymin, xmax, ymax )
์ฌ๊ธฐ์ width์ height๋ image์ ์ฌ์ด์ฆ์ด๊ณ , Labelling์ ํตํด ์ป์ width์ height๋ bounding box์ ์ฌ์ด์ฆ์ด๋ฏ๋ก ํผ๋ํ์ง ์์์ผ ํฉ๋๋ค. ๋ณธ ํํ ๋ฆฌ์ผ์์ ์ ๊ณตํ๋ ์์ค์ฝ๋๋ฅผ ํตํด ๊ฐ๋จํ .csv ํ์ผ๋ค์ ํฌ๋งท์ ๋ง๊ฒ ํตํฉํ ์ ์์ต๋๋ค. ํตํฉ๋ ๋ชจ์ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Object Detection ๋ชจ๋ธ์ ํ์ต์ํฌ ๋๋ง๋ค ์ด๋ฏธ์ง์ .csv ํ์ผ์ ํ ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๊ณ ์ด์ฉํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๊ณ ๊ด๋ฆฌํ๊ธฐ์๋ ์ข์ง ์์ต๋๋ค. Tensorflow Object Detection API๋ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ฏธ์ง์ .csv ํ์ผ์ TFRecord๋ผ๋ ํ๋์ ํ์ผ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ต๋๋ค.
object_detection/data ํด๋์ ํตํฉ๋ train_labels.csv ์ ๋ฃ์ด์ค๋๋ค. ๊ทธ ํ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํด์ TFRecord ํ์ผ์ ์์ฑํฉ๋๋ค.
python3 generate_tfrecord.py --csv_input=data/train_labels.csv --output_path=data/train.record
์ด ๊ณผ์ ์ ์ ๊ณต๋๋ ์์ค์ฝ๋๋ฅผ object_detection ํด๋์ ๋ฃ์ ํ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ๋จ, ์๋์ ๊ฐ์ด ์ฌ์ฉ์ ๋ฐ์ดํฐ์ ์ ์ ํ๊ฒ class์ path๋ฅผ ์์ ํด์ผํฉ๋๋ค.
data ํด๋์ ์์ฑ๋ tfrecord ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
TFRecord์ ๋ํ ๋ ์์ธํ ์ค๋ช ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ๊ธธ ๋ฐ๋๋๋ค.
๋ณธ ํํ ๋ฆฌ์ผ์์๋ ์นด๋ ์ซ์ ๊ฒ์ถ์ ์ํด 0 ~ 9์ 10๊ฐ์ง ์ซ์๋ฅผ ๊ฒ์ถํด์ผํ class๋ก ์ง์ ํ์ต๋๋ค. TFRecord ํ์ผ์ .pb ํฌ๋งท์ผ๋ก ํ์ต ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์ค๋๋ฐ, ์ฌ๊ธฐ์ ๊ฐ์ฒด ์ ๋ณด์ ๋ํ label๋ .pbtxtํ์์ผ๋ก ์ฝ๊ฒ ๋ฉ๋๋ค. object_detection/training ํด๋๋ฅผ ์์ฑํด ์ด๊ฒ๊ณผ ๊ฐ์ object-detection.pbtxt ํ์ผ์ ๋ง๋ค์ด์ค์ผ ํฉ๋๋ค. ๋ชจ๋ธ ํ ์คํธ๋ฅผ ์ํ์ฌ ๊ฐ์ ํ์ผ์ object_detection/data ํด๋์๋ ๋ณต์ฌํ์ฌ ๋ฃ์ด์ค๋๋ค. ์ด 2๊ฐ์ ๋๊ฐ์ .pbtxt ํ์ผ์ด ์์ฑ๋์์ต๋๋ค.
์์ ๊ณผ์ ์ ํตํด์ ํ์ต์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ , ๋ผ๋ฒจ๋งํ๊ณ , TFRecord๋ก ๋ณํํ๋ ๊ณผ์ ์ ํตํด ๋ชจ๋ธ์ ํ์ตํ ์ค๋น๊ฐ ๋์์ต๋๋ค. ํ์ต์ ์์ Tensorflow Object Detection API๋ ์ฌ์ฉ์๊ฐ ๊ฐ๋จํ ํ์ต ํ๊ฒฝ์ ๋ณ๊ฒฝํ ์ ์๋๋ก object_detection/samples/configs์ .config ํ์ผ์ ์ฌ๋ฌ ๊ฐ ์ค๋นํด๋์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ข ๋ ๋น ๋ฅด๊ณ ์ ํํ ๋ชจ๋ธ์ ํ์ต์ํค๊ธฐ ์ํ์ฌ SSD(Single Shot Detector)์ MobileNet_V2๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ์ด๋ฅผ ์ํด์ ssd_mobilenet_v2_coco.config ํ์ผ์ ๋ณต์ฌํ์ฌ training ํด๋์ ๋ฃ์ด์ฃผ๋๋ก ํฉ์๋ค.
์ด ๋, ๋ชจ๋ธ์ ์ฒ์๋ถํฐ ํ์ต์ํค๊ธฐ ์ํด์๋ ๋งค์ฐ ๋ง์ ์๊ฐ์ด ํ์ํ๊ฒ ๋๋ฏ๋ก COCO dataset์ผ๋ก ๋ฏธ๋ฆฌ ํ์ต๋ ๋ชจ๋ธ(Pretrained Model)์ ์ฌ์ฉํด ์ฐ๋ฆฌ ๋ชจ๋ธ์ Transfer learning์ ์ํค๋๋ก ํฉ์๋ค. ๋ํ ์ฐ๋ฆฌ๊ฐ data ํด๋์ ์์ฑํ train.record์ object-detection.pbtxt์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ ํ์ต์ํค๊ธฐ ์ํด .config ํ์ผ์ ์๋์ ๊ฐ์ด ์์ ํฉ๋๋ค. .config ํ์ผ์ ๋ํ ์์ธํ ์ค๋ช ์ Extras๋ฅผ ์ฐธ๊ณ ํ์ธ์.
9
num_classes: 909 num_classes: 10
156
fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED/model.ckpt"156 fine_tune_checkpoint: "ssd_mobilenet_v2_coco_2018_03_29/model.ckpt"
175
input_path: "PATH_TO_BE_CONFIGURED/mscoco_train.record-?????-of-00100"175 input_path: "data/train.record"
177
label_map_path: "PATH_TO_BE_CONFIGURED/mscoco_label_map.pbtxt"177 label_map_path: "data/object-detection.pbtxt"
Pretrained ๋ชจ๋ธ ๋ค์ด๋ก๋์ ๊ฐ ๋ชจ๋ธ๊ฐ์ ์๋ ๋น๊ต๋ ์ฌ๊ธฐ์์ ํ ์ ์์ต๋๋ค. ssd_mobilenet_v2_coco ๋ชจ๋ธ์ ๋ค์ด๋ก๋ ๋ฐ์ object_detection ํด๋์ ๋ฃ๋๋ก ํฉ์๋ค. ๊ทธ ํ object_detection ๋๋ ํ ๋ฆฌ์์ ์๋์ ๊ฐ์ ๋ช ๋ น์ ์คํํ์ฌ ํ์ต์ ์์ํฉ๋๋ค.
python3 train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/ssd_mobilenet_v2_coco.config
ํ์ต์ด ์ ์์ ์ผ๋ก ์์๋๋ฉด ์๋์ ๊ฐ์ด ๋์ํฉ๋๋ค.
๊ฐ step๋ง๋ค loss ๊ฐ์ด ์ถ๋ ฅ๋๊ณ ์ ํ์ต๋๋ ๊ฒฝ์ฐ loss๋ 0์ ์๋ ดํฉ๋๋ค. ์ ๋นํ loss๊ฐ 0 ~ 2 ์ ๋๋ก ์๋ ดํ๋ค ์ถ์ผ๋ฉด ํ์ต์ ์ข ๋ฃํ๊ณ ๋ชจ๋ธ์ ํ ์คํธํด๋ด ๋๋ค.
Tensorflow Object Detection API์์ ์ ๊ณตํ๋ .config ํ์ผ์ ์ฌ์ฉํด ๋ณธ ํ ์นด๋ ๋ฒํธ ๊ฒ์ถ์ ์ต์ ํํ .config ํ์ผ์ ์ฌ์ฉํด ๋ชจ๋ธ์ ํ์ต์์ผ๋ณด๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํด๋ณด๊ณ ์ถ๋ค๋ฉด ์ด๊ฒ์ ์ฌ์ฉํด ๋ณด์๊ธธ ๋ฐ๋๋๋ค.
๋ชจ๋ธ ํ ์คํธ๋ฅผ ์ํ์ฌ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ด ํ์ํฉ๋๋ค.
- ์ถ๋ก ๊ทธ๋ํ ์ถ์ถ
- ์ถ๋ก ๊ทธ๋ํ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฒ์ถ
์ฐ์ ์ถ๋ก ๊ทธ๋ํ ์ถ์ถ์ ์ํด ํ์ต์ ์ข ๋ฃํ๋ฉด training ํด๋์ ๋ง์ ํ์ผ๋ค์ด ์๊ธด ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๊ฐ์ฒด ๊ฒ์ถ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ถ๋ก ๊ทธ๋ํ๋ฅผ ์ถ์ถํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ object_detection ํด๋์์ ์คํํฉ๋๋ค.
python3 export_inference_graph.py
--input_type image_tensor
--pipeline_config_path training/ssd_mobilenet_v2_coco.config
--trained_checkpoint_prefix training/model.ckpt-xxxxx
--output_directory num_recognition
model.ckpt-xxxxx์ xxxxx๋ถ๋ถ์ ์ ์ฅ๋ ๋ชจ๋ธ ๋ฒํธ๋ฅผ ์ฐ๊ณ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด num_recognition ํด๋๊ฐ ์์ฑ๋๊ณ ํด๋์์ frozen_inference_graph.pb(์ถ๋ก ๊ทธ๋ํ)๊ฐ ์์ฑ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ถ๋ก ๊ทธ๋ํ ์ถ์ถ์ด ์๋ฃ๋์์ผ๋ฉด ํ์ต๋ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ detectionํ๊ธฐ ์ํด object_detection/object_detection_tutorial.ipynb์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํฉ๋๋ค.
์ถ๋ก ๋ชจ๋ธ ์ถ์ถ ๊ฒฐ๊ณผ num_recognition ํ์ผ์ด ์์ฑ๋์๊ธฐ ๋๋ฌธ์ model_name์ num_recognition์ผ๋ก ๋ณ๊ฒฝํ๊ณ PAATH_TO_CKPT๋ ๋ฐ๋ ๋ชจ๋ธ ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝํฉ๋๋ค. PATH_TO_LABELS๋ ๋ ์ด๋ธ์ ์ฌ์ฉ๋๋ ๋ฌธ์์ฉ ๋ชฉ๋ก์ผ๋ก, ์์ ์ ์ํ object_detection.pbtxt๋ก ๋ณ๊ฒฝํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ์ฌ๊ธฐ์ ์ ์ํ ํด๋์ค๋ 10๊ฐ(0 ~ 9)์ด๋ฏ๋ก NUM_CLASSES์ ๊ฐ์ ์์ ํฉ๋๋ค.
ํ ์คํธ๋ฅผ ํ๊ธฐ ์ํด ํ ์คํธํ ์ด๋ฏธ์ง๋ฅผ object_detection/test_images ํด๋์ ์ ๋ก๋ํฉ๋๋ค. ์ด๋ฏธ์ง๋ค์ test_{} ํ์์ ๋ง์ถฐ ์ ๋ก๋ํ๋ฉด range์ ๋ฒ์์ ๋ฐ๋ผ ์์๋๋ก ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ต๋๋ค.
์ ๋ก๋ ํ object_detection_tutorial.ipynb๋ฅผ ์คํํ๋ฉด test_images ๋๋ ํ ๋ฆฌ์ ์ด๋ฏธ์ง์ ๋ํด num_recognition/frozen_inference_graph.pb์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ๊ฒ์ถ(์ถ๋ก )ํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
๋ณธ ํํ ๋ฆฌ์ผ์์ ์ฌ์ฉํ ์นด๋๊ฐ ์๋ test_images์ ์ด๋ฏธ์ง๋ค์ gray-scale๋ก 1channel์ธ ๋ฐ๋ฉด์ ๋ชจ๋ธ์ ํ์ต์ํค๊ธฐ ์ํด์๋ 3์ฑ๋๋ก ๋ฃ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๋ก 3์ฑ๋์ RGB ์ด๋ฏธ์ง ํ์ผ๋ก ๋ณํํด ์ค๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ํ์ต์ด ์ ๋์ด ์นด๋ ๋ฒํธ ๊ฒ์ถ์ด ์ ์ด๋ฃจ์ด์ง๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.