├── .gitignore ├── LICENSE ├── README.md ├── convert_weight.py ├── core ├── common.py ├── convert_tfrecord.py ├── dataset.py ├── utils.py └── yolov3.py ├── data ├── coco.names ├── coco_Englist.names ├── coco_anchors.txt ├── font │ ├── FiraMono-Medium.otf │ └── HuaWenXinWei-1.ttf ├── raccoon.names ├── raccoon_anchors.txt └── train_dome_data │ ├── do_label.py │ ├── images │ ├── raccoon-1.jpg │ ├── raccoon-10.jpg │ ├── raccoon-100.jpg │ ├── raccoon-101.jpg │ ├── raccoon-102.jpg │ ├── raccoon-103.jpg │ ├── raccoon-104.jpg │ ├── raccoon-105.jpg │ ├── raccoon-106.jpg │ ├── raccoon-107.jpg │ ├── raccoon-108.jpg │ ├── raccoon-109.jpg │ ├── raccoon-11.jpg │ ├── raccoon-110.jpg │ ├── raccoon-111.jpg │ ├── raccoon-112.jpg │ ├── raccoon-113.jpg │ ├── raccoon-114.jpg │ ├── raccoon-115.jpg │ ├── raccoon-116.jpg │ ├── raccoon-117.jpg │ ├── raccoon-118.jpg │ ├── raccoon-119.jpg │ ├── raccoon-12.jpg │ ├── raccoon-120.jpg │ ├── raccoon-121.jpg │ ├── raccoon-122.jpg │ ├── raccoon-123.jpg │ ├── raccoon-124.jpg │ ├── raccoon-125.jpg │ ├── raccoon-126.jpg │ ├── raccoon-127.jpg │ ├── raccoon-128.jpg │ ├── raccoon-129.jpg │ ├── raccoon-13.jpg │ ├── raccoon-130.jpg │ ├── raccoon-131.jpg │ ├── raccoon-132.jpg │ ├── raccoon-133.jpg │ ├── raccoon-134.jpg │ ├── raccoon-135.jpg │ ├── raccoon-136.jpg │ ├── raccoon-137.jpg │ ├── raccoon-138.jpg │ ├── raccoon-139.jpg │ ├── raccoon-14.jpg │ ├── raccoon-140.jpg │ ├── raccoon-141.jpg │ ├── raccoon-142.jpg │ ├── raccoon-143.jpg │ ├── raccoon-144.jpg │ ├── raccoon-145.jpg │ ├── raccoon-146.jpg │ ├── raccoon-147.jpg │ ├── raccoon-148.jpg │ ├── raccoon-149.jpg │ ├── raccoon-15.jpg │ ├── raccoon-150.jpg │ ├── raccoon-151.jpg │ ├── raccoon-152.jpg │ ├── raccoon-153.jpg │ ├── raccoon-154.jpg │ ├── raccoon-155.jpg │ ├── raccoon-156.jpg │ ├── raccoon-157.jpg │ ├── raccoon-158.jpg │ ├── raccoon-159.jpg │ ├── raccoon-16.jpg │ ├── raccoon-160.jpg │ ├── raccoon-161.jpg │ ├── raccoon-162.jpg │ ├── raccoon-163.jpg │ ├── raccoon-164.jpg │ ├── raccoon-165.jpg │ ├── raccoon-166.jpg │ ├── raccoon-167.jpg │ ├── raccoon-168.jpg │ ├── raccoon-169.jpg │ ├── raccoon-17.jpg │ ├── raccoon-170.jpg │ ├── raccoon-171.jpg │ ├── raccoon-172.jpg │ ├── raccoon-173.jpg │ ├── raccoon-174.jpg │ ├── raccoon-175.jpg │ ├── raccoon-176.jpg │ ├── raccoon-177.jpg │ ├── raccoon-178.jpg │ ├── raccoon-179.jpg │ ├── raccoon-18.jpg │ ├── raccoon-180.jpg │ ├── raccoon-181.jpg │ ├── raccoon-182.jpg │ ├── raccoon-183.jpg │ ├── raccoon-184.jpg │ ├── raccoon-185.jpg │ ├── raccoon-186.jpg │ ├── raccoon-187.jpg │ ├── raccoon-188.jpg │ ├── raccoon-189.jpg │ ├── raccoon-19.jpg │ ├── raccoon-190.jpg │ ├── raccoon-191.jpg │ ├── raccoon-192.jpg │ ├── raccoon-193.jpg │ ├── raccoon-194.jpg │ ├── raccoon-195.jpg │ ├── raccoon-196.jpg │ ├── raccoon-197.jpg │ ├── raccoon-198.jpg │ ├── raccoon-199.jpg │ ├── raccoon-2.jpg │ ├── raccoon-20.jpg │ ├── raccoon-200.jpg │ ├── raccoon-21.jpg │ ├── raccoon-22.jpg │ ├── raccoon-23.jpg │ ├── raccoon-24.jpg │ ├── raccoon-25.jpg │ ├── raccoon-26.jpg │ ├── raccoon-27.jpg │ ├── raccoon-28.jpg │ ├── raccoon-29.jpg │ ├── raccoon-3.jpg │ ├── raccoon-30.jpg │ ├── raccoon-31.jpg │ ├── raccoon-32.jpg │ ├── raccoon-33.jpg │ ├── raccoon-34.jpg │ ├── raccoon-35.jpg │ ├── raccoon-36.jpg │ ├── raccoon-37.jpg │ ├── raccoon-38.jpg │ ├── raccoon-39.jpg │ ├── raccoon-4.jpg │ ├── raccoon-40.jpg │ ├── raccoon-41.jpg │ ├── raccoon-42.jpg │ ├── raccoon-43.jpg │ ├── raccoon-44.jpg │ ├── raccoon-45.jpg │ ├── raccoon-46.jpg │ ├── raccoon-47.jpg │ ├── raccoon-48.jpg │ ├── raccoon-49.jpg │ ├── raccoon-5.jpg │ ├── raccoon-50.jpg │ ├── raccoon-51.jpg │ ├── raccoon-52.jpg │ ├── raccoon-53.jpg │ ├── raccoon-54.jpg │ ├── raccoon-55.jpg │ ├── raccoon-56.jpg │ ├── raccoon-57.jpg │ ├── raccoon-58.jpg │ ├── raccoon-59.jpg │ ├── raccoon-6.jpg │ ├── raccoon-60.jpg │ ├── raccoon-61.jpg │ ├── raccoon-62.jpg │ ├── raccoon-63.jpg │ ├── raccoon-64.jpg │ ├── raccoon-65.jpg │ ├── raccoon-66.jpg │ ├── raccoon-67.jpg │ ├── raccoon-68.jpg │ ├── raccoon-69.jpg │ ├── raccoon-7.jpg │ ├── raccoon-70.jpg │ ├── raccoon-71.jpg │ ├── raccoon-72.jpg │ ├── raccoon-73.jpg │ ├── raccoon-74.jpg │ ├── raccoon-75.jpg │ ├── raccoon-76.jpg │ ├── raccoon-77.jpg │ ├── raccoon-78.jpg │ ├── raccoon-79.jpg │ ├── raccoon-8.jpg │ ├── raccoon-80.jpg │ ├── raccoon-81.jpg │ ├── raccoon-82.jpg │ ├── raccoon-83.jpg │ ├── raccoon-84.jpg │ ├── raccoon-85.jpg │ ├── raccoon-86.jpg │ ├── raccoon-87.jpg │ ├── raccoon-88.jpg │ ├── raccoon-89.jpg │ ├── raccoon-9.jpg │ ├── raccoon-90.jpg │ ├── raccoon-91.jpg │ ├── raccoon-92.jpg │ ├── raccoon-93.jpg │ ├── raccoon-94.jpg │ ├── raccoon-95.jpg │ ├── raccoon-96.jpg │ ├── raccoon-97.jpg │ ├── raccoon-98.jpg │ └── raccoon-99.jpg │ ├── labels.txt │ ├── new_labels.txt │ ├── new_test.txt │ ├── new_train.txt │ ├── test.txt │ └── train.txt ├── screenshot ├── frames_2019-03-29.jpg ├── raccoon-107.jpg └── raccoon-12.jpg ├── train_demo ├── pic │ ├── raccoon1.jpg │ └── raccoon2.jpg ├── pic_visu.py ├── quick_train.py ├── show_image_from_tfrecord.py └── show_trained_result.py └── video_dome.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Example user template template 3 | ### Example user template 4 | 5 | # IntelliJ project files 6 | .idea 7 | *.iml 8 | out 9 | gen### Python template 10 | # Byte-compiled / optimized / DLL files 11 | __pycache__/ 12 | *.py[cod] 13 | *$py.class 14 | 15 | # C extensions 16 | *.so 17 | 18 | # Distribution / packaging 19 | .Python 20 | build/ 21 | develop-eggs/ 22 | dist/ 23 | downloads/ 24 | eggs/ 25 | .eggs/ 26 | lib/ 27 | lib64/ 28 | parts/ 29 | sdist/ 30 | var/ 31 | wheels/ 32 | *.egg-info/ 33 | .installed.cfg 34 | *.egg 35 | MANIFEST 36 | 37 | # PyInstaller 38 | # Usually these files are written by a python script from a template 39 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 40 | *.manifest 41 | *.spec 42 | 43 | # Installer logs 44 | pip-log.txt 45 | pip-delete-this-directory.txt 46 | 47 | # Unit test / coverage reports 48 | htmlcov/ 49 | .tox/ 50 | .coverage 51 | .coverage.* 52 | .cache 53 | nosetests.xml 54 | coverage.xml 55 | *.cover 56 | .hypothesis/ 57 | .pytest_cache/ 58 | 59 | # Translations 60 | *.mo 61 | *.pot 62 | 63 | # Django stuff: 64 | *.log 65 | local_settings.py 66 | db.sqlite3 67 | 68 | # Flask stuff: 69 | instance/ 70 | .webassets-cache 71 | 72 | # Scrapy stuff: 73 | .scrapy 74 | 75 | # Sphinx documentation 76 | docs/_build/ 77 | 78 | # PyBuilder 79 | target/ 80 | 81 | # Jupyter Notebook 82 | .ipynb_checkpoints 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # celery beat schedule file 88 | celerybeat-schedule 89 | 90 | # SageMath parsed files 91 | *.sage.py 92 | 93 | # Environments 94 | .env 95 | .venv 96 | env/ 97 | venv/ 98 | ENV/ 99 | env.bak/ 100 | venv.bak/ 101 | 102 | # Spyder project settings 103 | .spyderproject 104 | .spyproject 105 | 106 | # Rope project settings 107 | .ropeproject 108 | 109 | # mkdocs documentation 110 | /site 111 | 112 | # mypy 113 | .mypy_cache/ 114 | /data/train_dome_data/images_train.tfrecords 115 | /data/train_dome_data/images_test.tfrecords 116 | /data/train_dome_data/model/* 117 | /data/train_dome_data/log/* 118 | /data/checkpoint/* 119 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 OpenSourceAI 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 简介 2 | 本项目是对[yolov3的tensorflow实现](https://github.com/YunYang1994/tensorflow-yolov3)项目的"整合"吧,做了一些细微的修改,添加大量的中文注释,帮助进行快速阅读理解. 基础好的可以直接阅读原代码. 3 | 4 | [yolov3的tensorflow实现](https://github.com/YunYang1994/tensorflow-yolov3)这个项目,应该是作为菜鸟的我到目前为止在原理和代码实现上最复杂的深度学习项目了. 项目代码量大,shape变换,维度广播,看着看着一不小心就迷失了,反反复复的看了好几遍,感觉才把整个项目代码的逻辑给拉通,整个过程反复调试,计算维度变换,运算的处理过程,总之收获巨大. 5 | 6 | 欢迎交流,指出错误等. 7 | # 开箱即用 8 | 9 | 下载[yolov3的tensorflow实现](https://github.com/YunYang1994/tensorflow-yolov3)中的模型[yolov3.weights](https://pan.baidu.com/s/1qAlZcbw0hB7c38ybKkbYUw),提取码:'dh94'放到`./data/checkpoint`中 10 | 11 | 运行 12 | ``` 13 | $ python convert_weight.py 14 | $ python video_dome.py # 默认使用0摄像头, 也可以通过局域网调用手机摄像头 15 | ``` 16 | ![](./screenshot/frames_2019-03-29.jpg) 17 | # 学习 18 | 19 | 通过快速训练[quick_train.py]()开始,阅读项目代码开始学习yolov3的细节. 在之前 20 | - 下载[raccoon](https://pan.baidu.com/s/1qAlZcbw0hB7c38ybKkbYUw),提取码:'dh94',使用浣熊数据集 21 | 22 | ![](./screenshot/raccoon-12.jpg) 23 | ![](./screenshot/raccoon-107.jpg) 24 | - [pic_vis.py](./train_demo/pic_visu.py) 可视化数据 25 | - 使用[core.convert_tfrecord.py](./core/convert_tfrecord.py),转换为tfrecord文件 26 | - [show_image_from_tfrecord.py](./train_demo/show_image_from_tfrecord.py),检查文件是否正常 27 | - [quick_train.py](./train_demo/quick_train.py)开始训练调试 28 | - [show_train_result.py](./train_demo/show_image_from_tfrecord.py) 检测所训练的模型效果. 29 | 30 | # 使用其他数据集进行训练 31 | 待更新.... 32 | 33 | >https://github.com/YunYang1994/tensorflow-yolov3 34 | 35 | 36 | **OpenSourceAI** 37 | 38 | 欢迎有兴趣的朋友加入我们,一个喜欢开源、热爱AI的团队。 39 | 40 | OpenSourceAI Org: 41 | https://github.com/opensourceai 42 | 43 | QQ Group: [584399282](https://shang.qq.com/wpa/qunwpa?idkey=46b645557bb6e6f118e0f786daacf61bd353b68a7b1ccba71b4e85b6d1b75b31) 44 | 45 | ![QQ Group:584399282](https://github.com/opensourceai/community/blob/master/img/qq-group-share.png) 46 | 47 | -------------------------------------------------------------------------------- /convert_weight.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import wget 4 | import time 5 | import argparse 6 | import tensorflow as tf 7 | from core import yolov3, utils 8 | 9 | 10 | class parser(argparse.ArgumentParser): 11 | 12 | def __init__(self, description): 13 | super(parser, self).__init__(description) 14 | 15 | self.add_argument( 16 | "--ckpt_file", "-cf", default='./checkpoint/yolov3.ckpt', type=str, 17 | help="[default: %(default)s] The checkpoint file ...", 18 | metavar="", 19 | ) 20 | 21 | self.add_argument( 22 | "--num_classes", "-nc", default=80, type=int, 23 | help="[default: %(default)s] The number of classes ...", 24 | metavar="", 25 | ) 26 | 27 | self.add_argument( 28 | "--anchors_path", "-ap", default="./data/coco_anchors.txt", type=str, 29 | help="[default: %(default)s] The path of anchors ...", 30 | metavar="", 31 | ) 32 | 33 | self.add_argument( 34 | "--weights_path", "-wp", default='./checkpoint/yolov3.weights', type=str, 35 | help="[default: %(default)s] Download binary file with desired weights", 36 | metavar="", 37 | ) 38 | 39 | self.add_argument( 40 | "--convert", "-cv", action='store_false', 41 | help="[default: %(default)s] Downloading yolov3 weights and convert them", 42 | ) 43 | 44 | self.add_argument( 45 | "--freeze", "-fz", action='store_false', 46 | help="[default: %(default)s] freeze the yolov3 graph to pb ...", 47 | ) 48 | 49 | self.add_argument( 50 | "--image_h", "-ih", default=416, type=int, 51 | help="[default: %(default)s] The height of image, 416 or 608", 52 | metavar="", 53 | ) 54 | 55 | self.add_argument( 56 | "--image_w", "-iw", default=416, type=int, 57 | help="[default: %(default)s] The width of image, 416 or 608", 58 | metavar="", 59 | ) 60 | 61 | self.add_argument( 62 | "--iou_threshold", "-it", default=0.5, type=float, 63 | help="[default: %(default)s] The iou_threshold for gpu nms", 64 | metavar="", 65 | ) 66 | 67 | self.add_argument( 68 | "--score_threshold", "-st", default=0.5, type=float, # 分数阈值 69 | help="[default: %(default)s] The score_threshold for gpu nms", 70 | metavar="", 71 | ) 72 | 73 | 74 | def main(argv): 75 | flags = parser(description="freeze yolov3 graph from checkpoint file").parse_args() 76 | print("=> the input image size is [%d, %d]" % (flags.image_h, flags.image_w)) 77 | anchors = utils.get_anchors(flags.anchors_path, flags.image_h, flags.image_w) 78 | # print(anchors) 79 | # exit() 80 | model = yolov3.yolov3(flags.num_classes, anchors) 81 | 82 | with tf.Graph().as_default() as graph: 83 | sess = tf.Session(graph=graph) 84 | inputs = tf.placeholder(tf.float32, [1, flags.image_h, flags.image_w, 3]) # placeholder for detector inputs 85 | print("=>", inputs) 86 | 87 | with tf.variable_scope('yolov3'): 88 | feature_map = model.forward(inputs, is_training=False) # 返回3个尺度的feature_map 89 | 90 | # 获取网络给出绝对boxes(左上角,右下角)信息, 未经过最大抑制去除多余boxes 91 | boxes, confs, probs = model.predict(feature_map) 92 | scores = confs * probs 93 | print("=>", boxes.name[:-2], scores.name[:-2]) 94 | # cpu 运行是恢复模型所需要的网络节点的名字 95 | cpu_out_node_names = [boxes.name[:-2], scores.name[:-2]] 96 | boxes, scores, labels = utils.gpu_nms(boxes, scores, flags.num_classes, 97 | score_thresh=flags.score_threshold, 98 | iou_thresh=flags.iou_threshold) 99 | print("=>", boxes.name[:-2], scores.name[:-2], labels.name[:-2]) 100 | # gpu 运行是恢复模型所需要的网络节点的名字 , 直接运算得出最终结果 101 | gpu_out_node_names = [boxes.name[:-2], scores.name[:-2], labels.name[:-2]] 102 | feature_map_1, feature_map_2, feature_map_3 = feature_map 103 | saver = tf.train.Saver(var_list=tf.global_variables(scope='yolov3')) 104 | if flags.convert: 105 | if not os.path.exists(flags.weights_path): 106 | url = 'https://github.com/YunYang1994/tensorflow-yolov3/releases/download/v1.0/yolov3.weights' 107 | for i in range(3): 108 | time.sleep(1) 109 | print("=> %s does not exists ! " % flags.weights_path) 110 | print("=> It will take a while to download it from %s" % url) 111 | print('=> Downloading yolov3 weights ... ') 112 | wget.download(url, flags.weights_path) 113 | 114 | load_ops = utils.load_weights(tf.global_variables(scope='yolov3'), flags.weights_path) 115 | sess.run(load_ops) 116 | save_path = saver.save(sess, save_path=flags.ckpt_file) 117 | print('=> model saved in path: {}'.format(save_path)) 118 | 119 | # print(flags.freeze) 120 | if flags.freeze: 121 | saver.restore(sess, flags.ckpt_file) 122 | print('=> checkpoint file restored from ', flags.ckpt_file) 123 | utils.freeze_graph(sess, './checkpoint/yolov3_cpu_nms.pb', cpu_out_node_names) 124 | utils.freeze_graph(sess, './checkpoint/yolov3_gpu_nms.pb', gpu_out_node_names) 125 | 126 | 127 | if __name__ == "__main__": main(sys.argv) 128 | -------------------------------------------------------------------------------- /core/common.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | 3 | # 构建模型的基本组件 4 | slim = tf.contrib.slim 5 | 6 | 7 | def _conv2d_fixed_padding(inputs, filters, kernel_size, strides=1): 8 | if strides > 1: inputs = _fixed_padding(inputs, kernel_size) 9 | inputs = slim.conv2d(inputs, filters, kernel_size, stride=strides, 10 | padding=('SAME' if strides == 1 else 'VALID')) 11 | return inputs 12 | 13 | 14 | @tf.contrib.framework.add_arg_scope 15 | def _fixed_padding(inputs, kernel_size, *args, mode='CONSTANT', **kwargs): 16 | """ 17 | 演空间维度填充输入,与输入大小无关, 只有与所使用的卷积核有关,左右两边进行填充 18 | 19 | Args: 20 | inputs: A tensor of size [batch, channels, height_in, width_in] or 21 | [batch, height_in, width_in, channels] depending on data_format. 22 | kernel_size: The kernel to be used in the conv2d or max_pool2d operation. 23 | Should be a positive integer. 24 | mode: The mode for tf.pad. 25 | 26 | Returns: 27 | A tensor with the same format as the input with the data either intact 28 | (if kernel_size == 1) or padded (if kernel_size > 1). 29 | """ 30 | # 使得kernel完整走过边缘 31 | pad_total = kernel_size - 1 32 | pad_beg = pad_total // 2 33 | pad_end = pad_total - pad_beg 34 | 35 | padded_inputs = tf.pad(inputs, [[0, 0], [pad_beg, pad_end], 36 | [pad_beg, pad_end], [0, 0]], mode=mode) 37 | return padded_inputs 38 | -------------------------------------------------------------------------------- /core/convert_tfrecord.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import argparse 3 | import numpy as np 4 | import tensorflow as tf 5 | 6 | 7 | # 将训练图片转换为tfrecord文件 8 | 9 | def main(argv): 10 | parser = argparse.ArgumentParser() 11 | # 物体映射表 , 图片地址, boxe , class_id 文件 12 | parser.add_argument("--dataset_txt", default='../data/train_dome_data/new_test.txt') 13 | parser.add_argument("--tfrecord_path_prefix", 14 | default='../data/train_dome_data/images') 15 | # default='./data/train_data/quick_train_data/tfrecords/quick_train_data') 16 | flags = parser.parse_args() 17 | 18 | dataset = {} 19 | with open(flags.dataset_txt, 'r') as f: 20 | for line in f.readlines(): 21 | example = line.split(' ') 22 | image_path = example[0] 23 | boxes_num = len(example[1:]) // 5 # boxs数量 24 | boxes = np.zeros([boxes_num, 5], dtype=np.float32) 25 | for i in range(boxes_num): 26 | boxes[i] = example[1 + i * 5:6 + i * 5] 27 | # print(boxes[i]) 28 | dataset[image_path] = boxes 29 | 30 | image_paths = list(dataset.keys()) 31 | images_num = len(image_paths) 32 | print(">> Processing %d images" % images_num) 33 | 34 | tfrecord_file = flags.tfrecord_path_prefix + "_" + flags.dataset_txt.split("_")[-1].split(".")[0] + ".tfrecords" 35 | with tf.python_io.TFRecordWriter(tfrecord_file) as record_writer: 36 | for i in range(images_num): 37 | image = tf.gfile.FastGFile(image_paths[i], 'rb').read() # 读取除二进制文件 38 | boxes = dataset[image_paths[i]] # 得到图片的boxes 39 | boxes = boxes.tostring() # 转出string 40 | 41 | example = tf.train.Example(features=tf.train.Features( 42 | feature={ 43 | 'image': tf.train.Feature(bytes_list=tf.train.BytesList(value=[image])), 44 | 'boxes': tf.train.Feature(bytes_list=tf.train.BytesList(value=[boxes])), 45 | } 46 | )) 47 | sys.stdout.write("\r>> %d / %d" % (i + 1, images_num)) 48 | sys.stdout.flush() 49 | record_writer.write(example.SerializeToString()) 50 | print(">> Saving %d images in %s" % (images_num, tfrecord_file)) 51 | 52 | 53 | if __name__ == "__main__": main(sys.argv[1:]) 54 | -------------------------------------------------------------------------------- /core/dataset.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | from core import utils 4 | import tensorflow as tf 5 | 6 | 7 | # 用于解析的类, 解析tfrecord文件,数据增强(对比度调整,翻转,剪裁....) 8 | class Parser(object): 9 | def __init__(self, image_h, image_w, anchors, num_classes, debug=False): 10 | 11 | self.anchors = anchors 12 | self.num_classes = num_classes 13 | self.image_h = image_h 14 | self.image_w = image_w 15 | self.debug = debug 16 | 17 | def flip_left_right(self, image, gt_boxes): 18 | 19 | w = tf.cast(tf.shape(image)[1], tf.float32) # 得到图像shape 20 | image = tf.image.flip_left_right(image) 21 | 22 | xmin, ymin, xmax, ymax, label = tf.unstack(gt_boxes, axis=1) 23 | xmin, ymin, xmax, ymax = w - xmax, ymin, w - xmin, ymax 24 | gt_boxes = tf.stack([xmin, ymin, xmax, ymax, label], axis=1) 25 | 26 | return image, gt_boxes 27 | 28 | def random_distort_color(self, image, gt_boxes): 29 | 30 | image = tf.image.random_brightness(image, max_delta=32. / 255.) 31 | image = tf.image.random_saturation(image, lower=0.8, upper=1.2) 32 | image = tf.image.random_hue(image, max_delta=0.2) 33 | image = tf.image.random_contrast(image, lower=0.8, upper=1.2) 34 | 35 | return image, gt_boxes 36 | 37 | def random_blur(self, image, gt_boxes): 38 | 39 | gaussian_blur = lambda image: cv2.GaussianBlur(image, (5, 5), 0) 40 | h, w = image.shape.as_list()[:2] 41 | image = tf.py_func(gaussian_blur, [image], tf.uint8) 42 | image.set_shape([h, w, 3]) 43 | 44 | return image, gt_boxes 45 | 46 | def random_crop(self, image, gt_boxes, min_object_covered=0.8, aspect_ratio_range=[0.8, 1.2], 47 | area_range=[0.5, 1.0]): 48 | 49 | # h,w = tf.cast(tf.shape(image)[:2], tf.float32) 50 | h, w = tf.cast(tf.shape(image)[0], tf.float32), tf.cast(tf.shape(image)[1], tf.float32) 51 | xmin, ymin, xmax, ymax, label = tf.unstack(gt_boxes, axis=1) 52 | bboxes = tf.stack([ymin / h, xmin / w, ymax / h, xmax / w], axis=1) 53 | bboxes = tf.clip_by_value(bboxes, 0, 1) 54 | begin, size, dist_boxes = tf.image.sample_distorted_bounding_box( 55 | tf.shape(image), 56 | bounding_boxes=tf.expand_dims(bboxes, axis=0), 57 | min_object_covered=min_object_covered, 58 | aspect_ratio_range=aspect_ratio_range, 59 | area_range=area_range) 60 | # NOTE dist_boxes with shape: [ymin, xmin, ymax, xmax] and in values in range(0, 1) 61 | # Employ the bounding box to distort the image. 62 | croped_box = [dist_boxes[0, 0, 1] * w, dist_boxes[0, 0, 0] * h, dist_boxes[0, 0, 3] * w, 63 | dist_boxes[0, 0, 2] * h] 64 | 65 | croped_xmin = tf.clip_by_value(xmin, croped_box[0], croped_box[2]) - croped_box[0] 66 | croped_ymin = tf.clip_by_value(ymin, croped_box[1], croped_box[3]) - croped_box[1] 67 | croped_xmax = tf.clip_by_value(xmax, croped_box[0], croped_box[2]) - croped_box[0] 68 | croped_ymax = tf.clip_by_value(ymax, croped_box[1], croped_box[3]) - croped_box[1] 69 | 70 | image = tf.slice(image, begin, size) 71 | gt_boxes = tf.stack([croped_xmin, croped_ymin, croped_xmax, croped_ymax, label], axis=1) 72 | 73 | return image, gt_boxes 74 | 75 | def preprocess(self, image, gt_boxes): 76 | image, gt_boxes = utils.resize_image_correct_bbox(image, gt_boxes, self.image_h, self.image_w) 77 | 78 | if self.debug: return image, gt_boxes 79 | 80 | y_true_13, y_true_26, y_true_52 = tf.py_func(self.preprocess_true_boxes, inp=[gt_boxes], 81 | Tout=[tf.float32, tf.float32, tf.float32]) 82 | image = image / 255. 83 | # image , cellxcellx3x(4+1+class_id) 84 | return image, y_true_13, y_true_26, y_true_52 85 | 86 | ''' 87 | 函数接受5维box(张量,左上角坐标,右下角坐标,class id). 一张图片中含有n个检测目标,则张量shape=(n,5) 88 | 转化为中心坐标, 89 | 计算该存在目标的box,与9个anchor的IOU(交并比) 90 | 得到最大的IOU最大的anchor 91 | 根据检测目标的5维信息,找到检测目标在那个feature_map, 属于那个格子, 那个anchor, class id 92 | ''' 93 | 94 | def preprocess_true_boxes(self, gt_boxes): 95 | """ 96 | 将boxes处理成网络训练的格式 97 | Preprocess true boxes to training input format 98 | Parameters: 99 | ----------- 100 | :param gt_boxes: numpy.ndarray of shape [T, 4] 101 | T: the number of boxes in each image.每个图片含有的boxes数量 102 | 4: coordinate => x_min, y_min, x_max, y_max 坐标:左上角坐标,右下角坐标 103 | :param true_labels: class id 104 | :param input_shape: the shape of input image to the yolov3 network, [416, 416] 输入shape 105 | :param anchors: array, shape=[9,2], 9: the number of anchors, 2: width, height 数量x长与宽 106 | :param num_classes: integer, for coco dataset, it is 80 总共能够检测的class数量 107 | Returns: 108 | ---------- 109 | y_true: list(3 array), shape like yolo_outputs, [13, 13, 3, 85] 110 | 13:cell szie, 3:number of anchors 111 | 85: box_centers, box_sizes, confidence, probability 112 | 中心坐标2,长宽2,存在目标的概率1,属于哪一类class的概率80 113 | """ 114 | num_layers = len(self.anchors) // 3 # 每个特征图使用3个anchor, 得到feature_map的数量 115 | # anchor_mask:anchor box的索引数组,3个1组倒序排序,678对应13x13,345对应26x26,123对应52x52; 116 | # 即[[6, 7, 8], [3, 4, 5], [0, 1, 2]]; 如果只有2个feature_map 117 | anchor_mask = [[6, 7, 8], [3, 4, 5], [0, 1, 2]] if num_layers == 3 else [[3, 4, 5], [1, 2, 3]] 118 | 119 | # 最终的feature_map: 13x13,26x26,52x52; 120 | grid_sizes = [[self.image_h // x, self.image_w // x] for x in (32, 16, 8)] 121 | 122 | box_centers = (gt_boxes[:, 0:2] + gt_boxes[:, 2:4]) / 2 # the center of box boxes 获取box中心坐标 123 | box_sizes = gt_boxes[:, 2:4] - gt_boxes[:, 0:2] # the height and width of box 得到box的长和宽 124 | 125 | # 将box坐标替换成中心点,长度和宽度 126 | gt_boxes[:, 0:2] = box_centers 127 | gt_boxes[:, 2:4] = box_sizes 128 | 129 | # 不同尺度下进行的标签的处理 cell x cell x anchors_number x (5(box_centers, box_sizes, confidence) + class_number) 130 | y_true_13 = np.zeros(shape=[grid_sizes[0][0], grid_sizes[0][1], 3, 5 + self.num_classes], dtype=np.float32) 131 | y_true_26 = np.zeros(shape=[grid_sizes[1][0], grid_sizes[1][1], 3, 5 + self.num_classes], dtype=np.float32) 132 | y_true_52 = np.zeros(shape=[grid_sizes[2][0], grid_sizes[2][1], 3, 5 + self.num_classes], dtype=np.float32) 133 | 134 | y_true = [y_true_13, y_true_26, y_true_52] 135 | 136 | # 将anchors转换为中心坐标, 方便计算boxes和anchors的IOU 137 | anchors_max = self.anchors / 2. 138 | anchors_min = -anchors_max 139 | valid_mask = box_sizes[:, 0] > 0 140 | # 丢弃size为0boxes,即不存在的boxes 141 | gt_boxes = gt_boxes[valid_mask] 142 | wh = box_sizes[valid_mask] 143 | wh = np.expand_dims(wh, -2) # 使得能够进行np.maximum(boxes_min, anchors_min)广播https://zhuanlan.zhihu.com/p/35010592 144 | boxes_max = wh / 2. 145 | boxes_min = -boxes_max 146 | # 计算交并比 147 | # https://zhuanlan.zhihu.com/p/51336725 148 | intersect_mins = np.maximum(boxes_min, anchors_min) 149 | intersect_maxs = np.minimum(boxes_max, anchors_max) 150 | intersect_wh = np.maximum(intersect_maxs - intersect_mins, 0.) 151 | intersect_area = intersect_wh[..., 0] * intersect_wh[..., 1] 152 | box_area = wh[..., 0] * wh[..., 1] 153 | 154 | anchor_area = self.anchors[:, 0] * self.anchors[:, 1] 155 | # 计算书交并比 156 | iou = intersect_area / (box_area + anchor_area - intersect_area) 157 | iou = np.expand_dims(iou, -2) 158 | 159 | best_anchor = np.argmax(iou, axis=-1) # 返回索引,(9个anchor中最大的) (n,9) 160 | 161 | # 最大 anchor在图中的坐标 162 | for t, n in enumerate(best_anchor): 163 | for l in range(num_layers): # 判断所存在feature_map中 164 | if n not in anchor_mask[l]: continue # 不在该特征图的anchor 165 | 166 | # (box_x / image_w) * grid_sizes_x 167 | # i 和j 表示对应着feature map的元素来负责预测这个边框(这个边框的中心落在那) 168 | i = np.floor(gt_boxes[t, 0] / self.image_w * grid_sizes[l][1]).astype('int32') # 向下取整 169 | j = np.floor(gt_boxes[t, 1] / self.image_h * grid_sizes[l][0]).astype('int32') # 在格子中相对位置 170 | 171 | k = anchor_mask[l].index(n) # 最佳anchor 172 | c = gt_boxes[t, 4].astype('int32') # 得到class id 173 | 174 | y_true[l][j, i, k, 0:4] = gt_boxes[t, 0:4] # box坐标,大小 175 | y_true[l][j, i, k, 4] = 1. # 概率 176 | y_true[l][j, i, k, 5 + c] = 1. # 类别 177 | 178 | return y_true_13, y_true_26, y_true_52 179 | 180 | def parser_example(self, serialized_example): 181 | 182 | features = tf.parse_single_example( 183 | serialized_example, 184 | features={ 185 | 'image': tf.FixedLenFeature([], dtype=tf.string), 186 | 'boxes': tf.FixedLenFeature([], dtype=tf.string), 187 | } 188 | ) 189 | 190 | image = tf.image.decode_jpeg(features['image'], channels=3) # 还原为图片 191 | image = tf.image.convert_image_dtype(image, tf.uint8) # 还原为图片格式 192 | 193 | gt_boxes = tf.decode_raw(features['boxes'], tf.float32) 194 | gt_boxes = tf.reshape(gt_boxes, shape=[-1, 5]) # 5维 坐标, 长度, 属于3个anchor中的哪一个anchor 195 | 196 | return self.preprocess(image, gt_boxes) 197 | 198 | 199 | class dataset(object): 200 | def __init__(self, parser, tfrecords_path, batch_size, shuffle=None, repeat=True): 201 | self.parser = parser 202 | self.filenames = tf.gfile.Glob(tfrecords_path) # 张`正则路径下所有的文件 203 | self.batch_size = batch_size 204 | self.shuffle = shuffle 205 | self.repeat = repeat 206 | self._buildup() 207 | 208 | def _buildup(self): 209 | try: 210 | self._TFRecordDataset = tf.data.TFRecordDataset(self.filenames) # 读取tfrecord文件 211 | except: 212 | raise NotImplementedError("No tfrecords found!") 213 | 214 | self._TFRecordDataset = self._TFRecordDataset.map(map_func=self.parser.parser_example, # 解析 215 | num_parallel_calls=10) 216 | self._TFRecordDataset = self._TFRecordDataset.repeat() if self.repeat else self._TFRecordDataset 217 | 218 | if self.shuffle is not None: 219 | self._TFRecordDataset = self._TFRecordDataset.shuffle(self.shuffle) 220 | 221 | self._TFRecordDataset = self._TFRecordDataset.batch(self.batch_size).prefetch(self.batch_size) # 用于缓存元素 222 | self._iterator = self._TFRecordDataset.make_one_shot_iterator() 223 | 224 | def get_next(self): 225 | return self._iterator.get_next() 226 | -------------------------------------------------------------------------------- /core/utils.py: -------------------------------------------------------------------------------- 1 | import colorsys 2 | import numpy as np 3 | import tensorflow as tf 4 | from collections import Counter 5 | from PIL import ImageFont, ImageDraw 6 | 7 | 8 | # Discard all boxes with low scores and high IOU 丢弃所有低分和高IOU的盒子,和自身iou高的boxe 9 | def gpu_nms(boxes, scores, num_classes, max_boxes=50, score_thresh=0.3, iou_thresh=0.5): 10 | """ 11 | /*----------------------------------- NMS(非最大抑制) on gpu ---------------------------------------*/ 12 | 13 | Arguments: 14 | boxes -- tensor of shape [1, 10647, 4] # 10647 boxes 15 | scores -- tensor of shape [1, 10647, num_classes], scores of boxes 16 | classes -- the return value of function `read_coco_names` 17 | Note:Applies Non-max suppression (NMS) to set of boxes. Prunes away boxes that have high 18 | intersection-over-union (IOU) overlap with previously selected boxes. 19 | 20 | max_boxes -- integer, maximum number of predicted boxes you'd like, default is 20 你想要的最大预测宽数 21 | score_thresh -- real value, if [ highest class probability score < score_threshold] 22 | then get rid of the corresponding box # 舍弃相应的box 23 | iou_thresh -- real value, "intersection over union" threshold used for NMS filtering 24 | """ 25 | 26 | boxes_list, label_list, score_list = [], [], [] 27 | max_boxes = tf.constant(max_boxes, dtype='int32') 28 | 29 | # since we do nms for single image, then reshape it 30 | boxes = tf.reshape(boxes, [-1, 4]) # '-1' means we don't konw the exact number of boxes 31 | # confs = tf.reshape(confs, [-1,1]) 32 | score = tf.reshape(scores, [-1, num_classes]) # 10647x80 33 | # print(score) 34 | 35 | # Step 1: Create a filtering mask based on "box_class_scores" by using "threshold". 36 | mask = tf.greater_equal(score, tf.constant(score_thresh)) # score大于等于0.3 37 | # print("mask==> : ", mask) 38 | # Step 2: Do non_max_suppression for each class 39 | for i in range(num_classes): 40 | # Step 3: Apply the mask to scores, boxes and pick them out 41 | filter_boxes = tf.boolean_mask(boxes, mask[:, i]) # 选出有第i类的boxes的张量信息 42 | # print(boxes, mask) 43 | # exit() 44 | filter_score = tf.boolean_mask(score[:, i], mask[:, i]) # 选出有第i类的分数的张量信息 45 | # 这是个超级赞的方法, 进过non_max_suppression挑选索引 46 | nms_indices = tf.image.non_max_suppression(boxes=filter_boxes, 47 | scores=filter_score, 48 | max_output_size=max_boxes, 49 | iou_threshold=iou_thresh, name='nms_indices') 50 | # 转换为标签 51 | label_list.append(tf.ones_like(tf.gather(filter_score, nms_indices), 'int32') * i) 52 | boxes_list.append(tf.gather(filter_boxes, nms_indices)) # 第几个c(c∈10647)中含有第i类box(4维张量) 53 | score_list.append(tf.gather(filter_score, nms_indices)) # 第几个c(c∈10647)中含有第i类预测列表(80维张量,包含所有的种类的预测的各类概率) 54 | # print(len(label_list)) 55 | boxes = tf.concat(boxes_list, axis=0) 56 | score = tf.concat(score_list, axis=0) 57 | label = tf.concat(label_list, axis=0) 58 | 59 | return boxes, score, label 60 | 61 | 62 | def py_nms(boxes, scores, max_boxes=50, iou_thresh=0.5): 63 | """ 64 | 按照分数排序,选出最多50个,大于0.5阈值的方框 65 | Pure Python NMS baseline. 66 | 67 | Arguments: boxes => shape of [-1, 4], the value of '-1' means that dont know the 68 | exact number of boxes 69 | scores => shape of [-1,] 70 | max_boxes => representing the maximum of boxes to be selected by non_max_suppression 最大框数 71 | iou_thresh => representing iou_threshold for deciding to keep boxes 72 | """ 73 | assert boxes.shape[1] == 4 and len(scores.shape) == 1 74 | 75 | # 左下角坐标,右上角坐标 76 | x1 = boxes[:, 0] 77 | y1 = boxes[:, 1] 78 | x2 = boxes[:, 2] 79 | y2 = boxes[:, 3] 80 | 81 | areas = (x2 - x1 + 1) * (y2 - y1 + 1) 82 | order = scores.argsort()[::-1] # 从大到小排序, order保存排序好的原位置的索引 83 | 84 | keep = [] # 保存index 85 | while order.size > 0: # 检测order中是否还有元素 86 | i = order[0] # 获取最高分 87 | keep.append(i) # 保存最高分数index 88 | xx1 = np.maximum(x1[i], x1[order[1:]]) # 除本身外的其他,x坐标,计算最大值 ,还能带广播 89 | yy1 = np.maximum(y1[i], y1[order[1:]]) 90 | xx2 = np.minimum(x2[i], x2[order[1:]]) 91 | yy2 = np.minimum(y2[i], y2[order[1:]]) 92 | 93 | w = np.maximum(0.0, xx2 - xx1 + 1) 94 | h = np.maximum(0.0, yy2 - yy1 + 1) 95 | inter = w * h 96 | ovr = inter / (areas[i] + areas[order[1:]] - inter) # 6得一匹 97 | # 挑选除 iou小于阈值的方框 ---> 找出不是同一个目标的anchor 98 | inds = np.where(ovr <= iou_thresh)[0] # np.where 返回元组,元组中保存一个列表,列表中保存排序后的值的索引 99 | order = order[inds + 1] 100 | 101 | return keep[:max_boxes] 102 | 103 | 104 | def cpu_nms(boxes, scores, num_classes, max_boxes=50, score_thresh=0.3, iou_thresh=0.5): 105 | """ 106 | /*----------------------------------- NMS on cpu ---------------------------------------*/ 107 | Arguments: 108 | boxes ==> shape [1, 10647, 4] 109 | scores ==> shape [1, 10647, num_classes] prods * confs 110 | """ 111 | 112 | # 删去第一维度 113 | boxes = boxes.reshape(-1, 4) 114 | scores = scores.reshape(-1, num_classes) # [10647,num_class] 115 | # Picked bounding boxes 116 | picked_boxes, picked_score, picked_label = [], [], [] 117 | 118 | for i in range(num_classes): 119 | # 条件判断 120 | indices = np.where(scores[:, i] >= score_thresh) # 第几个anchor的第i类的分数是否大于阈值 121 | filter_boxes = boxes[indices] # 根据index找到该boxes 122 | filter_scores = scores[:, i][indices] 123 | if len(filter_boxes) == 0: continue # 如果没有该boxes跳过 124 | # do non_max_suppression on the cpu 挑选出进过非最大抑制的方框 125 | indices = py_nms(filter_boxes, filter_scores, # 返回index 126 | max_boxes=max_boxes, iou_thresh=iou_thresh) 127 | picked_boxes.append(filter_boxes[indices]) 128 | picked_score.append(filter_scores[indices]) 129 | picked_label.append(np.ones(len(indices), dtype='int32') * i) # 类别index 130 | if len(picked_boxes) == 0: return None, None, None 131 | 132 | # (num,4), (num,1),(num,) 133 | boxes = np.concatenate(picked_boxes, axis=0) 134 | score = np.concatenate(picked_score, axis=0) 135 | label = np.concatenate(picked_label, axis=0) 136 | 137 | return boxes, score, label 138 | 139 | 140 | def resize_image_correct_bbox(image, boxes, image_h, image_w): 141 | origin_image_size = tf.to_float(tf.shape(image)[0:2]) 142 | image = tf.image.resize_images(image, size=[image_h, image_w]) # 图片缩放 143 | 144 | # correct bbox 边框修正 145 | xx1 = boxes[:, 0] * image_w / origin_image_size[1] 146 | yy1 = boxes[:, 1] * image_h / origin_image_size[0] 147 | xx2 = boxes[:, 2] * image_w / origin_image_size[1] 148 | yy2 = boxes[:, 3] * image_h / origin_image_size[0] 149 | idx = boxes[:, 4] 150 | 151 | boxes = tf.stack([xx1, yy1, xx2, yy2, idx], axis=1) 152 | return image, boxes 153 | 154 | 155 | def draw_boxes(image, boxes, scores, labels, classes, detection_size, 156 | font='data/font/HuaWenXinWei-1.ttf', show=True): 157 | """ 158 | :param boxes, shape of [num, 4] 159 | :param scores, shape of [num, ] 160 | :param labels, shape of [num, ] 161 | :param image, 162 | :param classes, the return list from the function `read_coco_names` 163 | """ 164 | if boxes is None: return image 165 | draw = ImageDraw.Draw(image) 166 | # draw settings 167 | font = ImageFont.truetype(font=font, size=np.floor(2e-2 * image.size[1]).astype('int32')) 168 | hsv_tuples = [(x / len(classes), 0.9, 1.0) for x in range(len(classes))] 169 | colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples)) 170 | colors = list(map(lambda x: (int(x[0] * 255), int(x[1] * 255), int(x[2] * 255)), colors)) 171 | for i in range(len(labels)): # for each bounding box, do: 172 | bbox, score, label = boxes[i], scores[i], classes[labels[i]] 173 | bbox_text = "%s %.2f" % (label, score) 174 | text_size = draw.textsize(bbox_text, font) 175 | # convert_to_original_size 176 | detection_size, original_size = np.array(detection_size), np.array(image.size) 177 | ratio = original_size / detection_size 178 | bbox = list((bbox.reshape(2, 2) * ratio).reshape(-1)) 179 | # 画框(bbox左上角的点,右上角的点) 180 | draw.rectangle(bbox, outline=colors[labels[i]], width=3) 181 | # 计算文本框的坐标左上角的点 182 | text_origin = bbox[:2] - np.array([0, text_size[1]]) 183 | # 画出文本框的 184 | draw.rectangle([tuple(text_origin), tuple(text_origin + text_size)], fill=colors[labels[i]]) 185 | # 在文本框中填入文字 186 | draw.text(tuple(text_origin), bbox_text, fill=(0, 0, 0), font=font) 187 | 188 | image.show() if show else None 189 | return image 190 | 191 | 192 | def draw_Chinese(image, txt, coordinate, font='data/font/HuaWenXinWei-1.ttf'): 193 | draw = ImageDraw.Draw(image) 194 | font = ImageFont.truetype(font=font, size=np.floor(3e-2 * image.size[1]).astype('int32')) 195 | draw.text(coordinate, txt, fill=(255, 255, 0), font=font) 196 | return image 197 | 198 | 199 | def read_coco_names(class_file_name): 200 | names = {} 201 | with open(class_file_name, 'r') as data: # 直接读取所有文件内容 202 | for ID, name in enumerate(data): # 按列进行读取 203 | names[ID] = name.strip('\n') # 去除换行符号 204 | return names 205 | 206 | 207 | # 讲模型转换为一个模型文件 208 | def freeze_graph(sess, output_file, output_node_names): 209 | output_graph_def = tf.graph_util.convert_variables_to_constants( # 讲变量转化为常量 210 | sess, 211 | sess.graph.as_graph_def(), 212 | output_node_names, 213 | ) 214 | 215 | with tf.gfile.GFile(output_file, "wb") as f: 216 | f.write(output_graph_def.SerializeToString()) 217 | # .output_graph_def.node 图中所有的节点 218 | print("=> {} ops written to {}.".format(len(output_graph_def.node), output_file)) 219 | 220 | 221 | # 读取模型 222 | def read_pb_return_tensors(graph, pb_file, return_elements): 223 | with tf.gfile.FastGFile(pb_file, 'rb') as f: 224 | frozen_graph_def = tf.GraphDef() 225 | frozen_graph_def.ParseFromString(f.read()) 226 | 227 | with graph.as_default(): 228 | return_elements = tf.import_graph_def(frozen_graph_def, 229 | return_elements=return_elements) 230 | input_tensor, output_tensors = return_elements[0], return_elements[1:] 231 | 232 | return input_tensor, output_tensors 233 | 234 | 235 | def load_weights(var_list, weights_file): 236 | """ 237 | Loads and converts pre-trained weights. 238 | :param var_list: list of network variables. 239 | :param weights_file: name of the binary file. 240 | :return: list of assign ops 241 | """ 242 | with open(weights_file, "rb") as fp: 243 | np.fromfile(fp, dtype=np.int32, count=5) # 读取前5个,(跳过前5个) 244 | # print(np.fromfile(fp, dtype=np.int32, count=-1)) 245 | # print(fp) 246 | # exit() 247 | weights = np.fromfile(fp, dtype=np.float32) # 读取所有 248 | 249 | ptr = 0 250 | i = 0 251 | assign_ops = [] 252 | # for var in var_list: 253 | # print(var) 254 | # exit() 255 | while i < len(var_list) - 1: 256 | var1 = var_list[i] 257 | print("=> loading ", var1.name) 258 | var2 = var_list[i + 1] 259 | print("=> loading ", var2.name) 260 | # do something only if we process conv layer 261 | if 'Conv' in var1.name.split('/')[-2]: 262 | # check type of next layer 263 | if 'BatchNorm' in var2.name.split('/')[-2]: 264 | # load batch norm params 265 | gamma, beta, mean, var = var_list[i + 1:i + 5] 266 | batch_norm_vars = [beta, gamma, mean, var] 267 | for var in batch_norm_vars: 268 | shape = var.shape.as_list() 269 | num_params = np.prod(shape) # 计算BN层的参数量 270 | # 读取相对应的参数量 271 | var_weights = weights[ptr:ptr + num_params].reshape(shape) # 恢复shape 272 | ptr += num_params 273 | assign_ops.append(tf.assign(var, var_weights, validate_shape=True)) 274 | # we move the pointer by 4, because we loaded 4 variables 275 | i += 4 276 | elif 'Conv' in var2.name.split('/')[-2]: 277 | # load biases 278 | bias = var2 279 | bias_shape = bias.shape.as_list() 280 | bias_params = np.prod(bias_shape) 281 | bias_weights = weights[ptr:ptr + bias_params].reshape(bias_shape) 282 | ptr += bias_params 283 | assign_ops.append(tf.assign(bias, bias_weights, validate_shape=True)) 284 | # we loaded 1 variable 285 | i += 1 286 | # we can load weights of conv layer 287 | shape = var1.shape.as_list() 288 | num_params = np.prod(shape) 289 | 290 | # 这是什么沙雕模型文件需要这种加载方式 291 | var_weights = weights[ptr:ptr + num_params].reshape( 292 | (shape[3], shape[2], shape[0], shape[1])) # 沙雕模型文件 293 | # remember to transpose to column-major 维度交换 294 | var_weights = np.transpose(var_weights, (2, 3, 1, 0)) 295 | ptr += num_params 296 | assign_ops.append( 297 | tf.assign(var1, var_weights, validate_shape=True)) 298 | i += 1 299 | 300 | return assign_ops 301 | 302 | 303 | def get_anchors(anchors_path, image_h, image_w): 304 | '''loads the anchors from a file,从的文件中载入anchors''' 305 | with open(anchors_path) as f: 306 | anchors = f.readline() 307 | # print(anchors) 308 | anchors = np.array(anchors.split(), dtype=np.float32) 309 | anchors = anchors.reshape(-1, 2) 310 | # print(anchors) 311 | ''' 312 | [[108 152] 313 | [146 174] 314 | [157 240] 315 | [192 342] 316 | [240 357] 317 | [307 286] 318 | [283 402] 319 | [397 348] 320 | [357 394]] 321 | ''' 322 | anchors[:, 1] = anchors[:, 1] * image_h 323 | anchors[:, 0] = anchors[:, 0] * image_w 324 | return anchors.astype(np.int32) 325 | 326 | 327 | def bbox_iou(A, B): 328 | intersect_mins = np.maximum(A[:, 0:2], B[:, 0:2]) 329 | intersect_maxs = np.minimum(A[:, 2:4], B[:, 2:4]) 330 | intersect_wh = np.maximum(intersect_maxs - intersect_mins, 0.) 331 | intersect_area = intersect_wh[..., 0] * intersect_wh[..., 1] 332 | 333 | # 给定axis 上的乘积 334 | A_area = np.prod(A[:, 2:4] - A[:, 0:2], axis=1) 335 | B_area = np.prod(B[:, 2:4] - B[:, 0:2], axis=1) 336 | 337 | iou = intersect_area / (A_area + B_area - intersect_area) 338 | 339 | return iou 340 | 341 | 342 | def evaluate(y_pred, y_true, iou_thresh=0.5, score_thresh=0.3): 343 | num_images = y_true[0].shape[0] # 检查的图片数量 Batch_size(8) 344 | num_classes = y_true[0][0][..., 5:].shape[-1] 345 | # 以为class_id 初始化字典 346 | true_labels_dict = {i: 0 for i in range(num_classes)} # {class: count} 347 | pred_labels_dict = {i: 0 for i in range(num_classes)} 348 | true_positive_dict = {i: 0 for i in range(num_classes)} 349 | 350 | # 循环每张图片 351 | for i in range(num_images): 352 | true_labels_list, true_boxes_list = [], [] 353 | for j in range(3): # three feature maps 3个feature map 354 | # y_true : [feature_map_1(Batch_size,....), .....] 355 | true_probs_temp = y_true[j][i][..., 5:] # 各个类别预测的概率 356 | true_boxes_temp = y_true[j][i][..., 0:4] # boxes信息 357 | 358 | # 去除y_true中没有目标的anchor 359 | object_mask = true_probs_temp.sum(axis=-1) > 0 360 | 361 | # 取出feature_map中,只含有目标的单元 362 | true_probs_temp = true_probs_temp[object_mask] # shape(13x13x3,class_id) 363 | true_boxes_temp = true_boxes_temp[object_mask] # shape(13x13x3,boxes) 364 | 365 | true_labels_list += np.argmax(true_probs_temp, axis=-1).tolist() # 存在目标的cell中, 366 | true_boxes_list += true_boxes_temp.tolist() 367 | 368 | # 计算每张张图片的,各个class的数量, 369 | if len(true_labels_list) != 0: 370 | # 计算每张图片的中各个class的数量 371 | for cls, count in Counter(true_labels_list).items(): true_labels_dict[cls] += count 372 | 373 | # y_pred : [boxes , confs , probs ] 374 | pred_boxes = y_pred[0][i:i + 1] # [Batch_size,10647,4] 375 | pred_confs = y_pred[1][i:i + 1] # [Batch_size,10647,1] 376 | pred_probs = y_pred[2][i:i + 1] # [Batch_size,10647,class_num] 377 | 378 | # 进过非最大抑制处理后得到最终的 379 | pred_boxes, pred_scores, pred_labels = cpu_nms(pred_boxes, pred_confs * pred_probs, num_classes, 380 | score_thresh=score_thresh, iou_thresh=iou_thresh) 381 | 382 | # 所有有效的存在真实值的 boxes 383 | true_boxes = np.array(true_boxes_list) 384 | box_centers, box_sizes = true_boxes[:, 0:2], true_boxes[:, 2:4] 385 | 386 | # 坐标转换 387 | true_boxes[:, 0:2] = box_centers - box_sizes / 2. # 左上角坐标 388 | true_boxes[:, 2:4] = true_boxes[:, 0:2] + box_sizes # 右下角坐标 389 | pred_labels_list = [] if pred_labels is None else pred_labels.tolist() 390 | 391 | # 统计pre中每个class出现的次数 392 | if len(pred_labels_list) != 0: 393 | for cls, count in Counter(pred_labels_list).items(): pred_labels_dict[cls] += count 394 | else: 395 | continue 396 | 397 | detected = [] 398 | for k in range(len(pred_labels_list)): 399 | # 计算每个pre_box 与 所有ture_boxes的IOU, pre的第K个对应 true中第M个 400 | iou = bbox_iou(pred_boxes[k:k + 1], true_boxes) 401 | # 提取最大的iou的iou 402 | m = np.argmax(iou) # Extract index of largest overlap 403 | # 当前iou大于阈值, and pre的class第k等于true的第m个最大的iou. and m 还没有被使用过 404 | if iou[m] >= iou_thresh and pred_labels_list[k] == true_labels_list[m] and m not in detected: 405 | true_positive_dict[true_labels_list[m]] += 1 406 | detected.append(m) 407 | 408 | # 召回率(查全率) 409 | recall = sum(true_positive_dict.values()) / (sum(true_labels_dict.values()) + 1e-6) 410 | # 精确度 411 | precision = sum(true_positive_dict.values()) / (sum(pred_labels_dict.values()) + 1e-6) 412 | 413 | return recall, precision 414 | 415 | 416 | def compute_ap(recall, precision): 417 | """ Compute the average precision, given the recall and precision curves. 418 | Code originally from https://github.com/rbgirshick/py-faster-rcnn. 419 | # Arguments 420 | recall: The recall curve (list). 421 | precision: The precision curve (list). 422 | # Returns 423 | The average precision as computed in py-faster-rcnn. 424 | """ 425 | # correct AP calculation 426 | # first append sentinel values at the end 427 | mrec = np.concatenate(([0.0], recall, [1.0])) 428 | mpre = np.concatenate(([0.0], precision, [0.0])) 429 | 430 | # compute the precision envelope 431 | for i in range(mpre.size - 1, 0, -1): 432 | mpre[i - 1] = np.maximum(mpre[i - 1], mpre[i]) 433 | 434 | # to calculate area under PR curve, look for points 435 | # where X axis (recall) changes value 436 | i = np.where(mrec[1:] != mrec[:-1])[0] 437 | 438 | # and sum (\Delta recall) * prec 439 | ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1]) 440 | return ap 441 | -------------------------------------------------------------------------------- /core/yolov3.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | 3 | from core import common 4 | 5 | slim = tf.contrib.slim 6 | 7 | 8 | class darknet53(object): 9 | """用于执行特征提取的网络 10 | https://images2018.cnblogs.com/blog/606386/201803/606386-20180327004340505-1572852891.png 11 | """ 12 | 13 | def __init__(self, inputs): 14 | self.outputs = self.forward(inputs) 15 | 16 | def _darknet53_block(self, inputs, filters): 17 | """ 18 | implement residuals block in darknet53 19 | """ 20 | shortcut = inputs 21 | inputs = common._conv2d_fixed_padding(inputs, filters * 1, 1) 22 | inputs = common._conv2d_fixed_padding(inputs, filters * 2, 3) 23 | 24 | inputs = inputs + shortcut 25 | return inputs 26 | 27 | def forward(self, inputs): 28 | 29 | inputs = common._conv2d_fixed_padding(inputs, 32, 3, strides=1) 30 | inputs = common._conv2d_fixed_padding(inputs, 64, 3, strides=2) # 208 31 | inputs = self._darknet53_block(inputs, 32) # 32 | inputs = common._conv2d_fixed_padding(inputs, 128, 3, strides=2) # 104 33 | 34 | for i in range(2): 35 | inputs = self._darknet53_block(inputs, 64) 36 | 37 | inputs = common._conv2d_fixed_padding(inputs, 256, 3, strides=2) # 52 38 | 39 | for i in range(8): 40 | inputs = self._darknet53_block(inputs, 128) 41 | 42 | route_1 = inputs 43 | inputs = common._conv2d_fixed_padding(inputs, 512, 3, strides=2) # 26 44 | 45 | for i in range(8): 46 | inputs = self._darknet53_block(inputs, 256) 47 | 48 | route_2 = inputs 49 | inputs = common._conv2d_fixed_padding(inputs, 1024, 3, strides=2) # 13 50 | 51 | for i in range(4): 52 | inputs = self._darknet53_block(inputs, 512) 53 | 54 | return route_1, route_2, inputs 55 | 56 | 57 | class yolov3(object): 58 | 59 | def __init__(self, num_classes, anchors, 60 | batch_norm_decay=0.9, leaky_relu=0.1): 61 | ''' 62 | :param num_classes: class 63 | :param anchors: number of anchors 列表 64 | :param batch_norm_decay: 65 | :param leaky_relu: 66 | ''' 67 | # self._ANCHORS = 68 | # [[10 ,13], [16 , 30], [33 , 23], 69 | # [30 ,61], [62 , 45], [59 ,119], 70 | # [116,90], [156,198], [373,326]] 71 | self._ANCHORS = anchors 72 | self._BATCH_NORM_DECAY = batch_norm_decay 73 | self._LEAKY_RELU = leaky_relu 74 | self._NUM_CLASSES = num_classes 75 | self.feature_maps = [] # [[None, 13, 13, 255], [None, 26, 26, 255], [None, 52, 52, 255]] 76 | 77 | def _yolo_block(self, inputs, filters): 78 | # if stride > 1 , padding 79 | inputs = common._conv2d_fixed_padding(inputs, filters * 1, 1) 80 | inputs = common._conv2d_fixed_padding(inputs, filters * 2, 3) 81 | inputs = common._conv2d_fixed_padding(inputs, filters * 1, 1) 82 | inputs = common._conv2d_fixed_padding(inputs, filters * 2, 3) 83 | inputs = common._conv2d_fixed_padding(inputs, filters * 1, 1) 84 | route = inputs 85 | inputs = common._conv2d_fixed_padding(inputs, filters * 2, 3) 86 | return route, inputs 87 | 88 | # 目标识别的层, 转换到合适的深度,以满足不同class_num数据的分类 89 | def _detection_layer(self, inputs, anchors): 90 | num_anchors = len(anchors) 91 | feature_map = slim.conv2d(inputs, num_anchors * (5 + self._NUM_CLASSES), 1, 92 | stride=1, normalizer_fn=None, 93 | activation_fn=None, 94 | biases_initializer=tf.zeros_initializer()) 95 | return feature_map 96 | 97 | # 讲网络计算的的缩放量和偏移量与anchors,网格位置结合,得到在原图中的绝对位置与大小 98 | def _reorg_layer(self, feature_map, anchors): 99 | # 将张量转换为适合的格式 100 | num_anchors = len(anchors) # num_anchors=3 101 | grid_size = feature_map.shape.as_list()[1:3] # 网格数 102 | # the downscale image in height and weight 103 | stride = tf.cast(self.img_size // grid_size, tf.float32) # [h,w] -> [y,x] 平均每个网络多少个像素值 104 | # 讲anchors 与 目标信息拆开 (batch_size, cell, cell , anchor_num * (5 + class_num)) --> 105 | # (batch_size, cell, cell , anchor_num ,5 + class_num) 106 | feature_map = tf.reshape(feature_map, 107 | [-1, grid_size[0], grid_size[1], num_anchors, 5 + self._NUM_CLASSES]) # 特征图 108 | 109 | box_centers, box_sizes, conf_logits, prob_logits = tf.split( 110 | feature_map, [2, 2, 1, self._NUM_CLASSES], axis=-1) # 分离各个值,在最后一个维度进行 111 | 112 | box_centers = tf.nn.sigmoid(box_centers) # 使得偏移量变为非负,且在0~1之间, 超过1之后,中心点就偏移到了其他的单元中 113 | 114 | grid_x = tf.range(grid_size[1], dtype=tf.int32) 115 | grid_y = tf.range(grid_size[0], dtype=tf.int32) 116 | 117 | a, b = tf.meshgrid(grid_x, grid_y) # 构建网格 https://blog.csdn.net/MOU_IT/article/details/82083984 118 | ''' 119 | a=[0,5,10] 120 | b=[0,5,15,20,25] 121 | A,B=tf.meshgrid(a,b) 122 | with tf.Session() as sess: 123 | print (A.eval()) 124 | print (B.eval()) 125 | 126 | 结果: 127 | [[ 0 5 10] 128 | [ 0 5 10] 129 | [ 0 5 10] 130 | [ 0 5 10] 131 | [ 0 5 10]] 132 | [[ 0 0 0] 133 | [ 5 5 5] 134 | [15 15 15] 135 | [20 20 20] 136 | [25 25 25]] 137 | ''' 138 | x_offset = tf.reshape(a, (-1, 1)) 139 | y_offset = tf.reshape(b, (-1, 1)) 140 | x_y_offset = tf.concat([x_offset, y_offset], axis=-1) # 组合生产每个单元格左上角的坐标, 排列组合 141 | ''' 142 | [0,0] 143 | [0,1] 144 | [0,2] 145 | ..... 146 | [1,0] 147 | [1,1] 148 | ..... 149 | [12,12] 150 | ''' 151 | x_y_offset = tf.reshape(x_y_offset, [grid_size[0], grid_size[1], 1, 2]) # 回复成5x5x1x2 的张量 152 | 153 | x_y_offset = tf.cast(x_y_offset, tf.float32) 154 | 155 | box_centers = box_centers + x_y_offset # 物体的中心坐标 156 | box_centers = box_centers * stride[::-1] # 在原图的坐标位置,反归一化 [h,w] -> [y,x] 157 | 158 | # tf.exp(box_sizes) 避免缩放出现负数, box_size[13,13,3,2], anchor[3,2] 159 | box_sizes = tf.exp(box_sizes) * anchors # anchors -> [w, h] 使用网络计算出的缩放量对anchors进行缩放 160 | boxes = tf.concat([box_centers, box_sizes], axis=-1) # 计算除所有的方框在原图中的位置 161 | return x_y_offset, boxes, conf_logits, prob_logits 162 | 163 | @staticmethod # 静态静态方法不睡和类和实例进行绑定 164 | def _upsample(inputs, out_shape): # 上采样, 放大图片 165 | new_height, new_width = out_shape[1], out_shape[2] 166 | inputs = tf.image.resize_nearest_neighbor(inputs, (new_height, new_width)) # 使用最近邻改变图像大小 167 | inputs = tf.identity(inputs, name='upsampled') 168 | 169 | return inputs 170 | 171 | # @staticmethod 172 | # def _upsample(inputs, out_shape): 173 | # """ 174 | # replace resize_nearest_neighbor with conv2d_transpose To support TensorRT 5 optimization 175 | # """ 176 | # new_height, new_width = out_shape[1], out_shape[2] 177 | # filters = 256 if (new_height == 26 and new_width==26) else 128 178 | # inputs = tf.layers.conv2d_transpose(inputs, filters, kernel_size=3, padding='same', 179 | # strides=(2,2), kernel_initializer=tf.ones_initializer()) 180 | # return inputs 181 | 182 | # 前向传播,得到3个feature_map 183 | def forward(self, inputs, is_training=False, reuse=False): 184 | """ 185 | Creates YOLO v3 model. 186 | 187 | :param inputs: a 4-D tensor of size [batch_size, height, width, channels]. 188 | Dimension batch_size may be undefined. The channel order is RGB. 189 | :param is_training: whether is training or not. 190 | :param reuse: whether or not the network and its variables should be reused. 191 | :return: 192 | """ 193 | # it will be needed later on 他在稍后将被需要 194 | self.img_size = tf.shape(inputs)[1:3] 195 | # set batch norm params 196 | batch_norm_params = { 197 | 'decay': self._BATCH_NORM_DECAY, # https://www.cnblogs.com/hellcat/p/8058092.html 198 | 'epsilon': 1e-05, 199 | 'scale': True, 200 | 'is_training': is_training, 201 | 'fused': None, # Use fused batch norm if possible. 202 | } 203 | 204 | # Set activation_fn and parameters for conv2d, batch_norm. 205 | with slim.arg_scope([slim.conv2d, slim.batch_norm, common._fixed_padding], reuse=reuse): 206 | with slim.arg_scope([slim.conv2d], normalizer_fn=slim.batch_norm, 207 | # 给定list(slim.conv2d)中的值设置默认值(normlizer,biase.....) 208 | normalizer_params=batch_norm_params, 209 | biases_initializer=None, 210 | activation_fn=lambda x: tf.nn.leaky_relu(x, alpha=self._LEAKY_RELU)): 211 | with tf.variable_scope('darknet-53'): 212 | route_1, route_2, inputs = darknet53(inputs).outputs # 得到图片张量 213 | # route_1 : 52x52x256 214 | # route_2 : 26x26x512 215 | # inputs : 13x13x1024 216 | 217 | with tf.variable_scope('yolo-v3'): 218 | # https://github.com/YunYang1994/tensorflow-yolov3/raw/master/docs/images/levio.jpeg 219 | # https://images2018.cnblogs.com/blog/606386/201803/606386-20180327004340505-1572852891.png 220 | # feature_map1 13x13x1024 --> 13x13x[3x(5+class_num)] 221 | route, inputs = self._yolo_block(inputs, 512) 222 | feature_map_1 = self._detection_layer(inputs, self._ANCHORS[6:9]) 223 | feature_map_1 = tf.identity(feature_map_1, name='feature_map_1') 224 | 225 | # feature_map2 26x26x512 --> 26x26x[3x(5+class_num)] 226 | inputs = common._conv2d_fixed_padding(route, 256, 1) 227 | upsample_size = route_2.get_shape().as_list() 228 | # 52x52 --> 26x26 229 | inputs = self._upsample(inputs, upsample_size) # 通过直接放大进行上采样 230 | inputs = tf.concat([inputs, route_2], axis=3) # 在axis=3 进行连接, 231 | route, inputs = self._yolo_block(inputs, 256) 232 | feature_map_2 = self._detection_layer(inputs, self._ANCHORS[3:6]) 233 | feature_map_2 = tf.identity(feature_map_2, name='feature_map_2') 234 | 235 | # feature_map3 52x52x256 --> 52x52x[3x(5+class_num)] 236 | inputs = common._conv2d_fixed_padding(route, 128, 1) 237 | upsample_size = route_1.get_shape().as_list() 238 | # 26x26 --> 52x52 239 | inputs = self._upsample(inputs, upsample_size) 240 | inputs = tf.concat([inputs, route_1], axis=3) 241 | route, inputs = self._yolo_block(inputs, 128) 242 | feature_map_3 = self._detection_layer(inputs, self._ANCHORS[0:3]) 243 | feature_map_3 = tf.identity(feature_map_3, name='feature_map_3') 244 | 245 | return feature_map_1, feature_map_2, feature_map_3 246 | 247 | def _reshape(self, x_y_offset, boxes, confs, probs): 248 | # 构成一个(batch_size, cell*cell*len(anchors) , boxes) 249 | grid_size = x_y_offset.shape.as_list()[:2] # 网格数 250 | boxes = tf.reshape(boxes, [-1, grid_size[0] * grid_size[1] * 3, 4]) # 3个anchor 251 | confs = tf.reshape(confs, [-1, grid_size[0] * grid_size[1] * 3, 1]) # 3个anchor分别对应概率 252 | probs = tf.reshape(probs, [-1, grid_size[0] * grid_size[1] * 3, self._NUM_CLASSES]) # 类别概率 253 | # print(boxes, confs, probs) 254 | 255 | return boxes, confs, probs 256 | 257 | # 给出在原图的位置 258 | def predict(self, feature_maps): 259 | """ 260 | Note: given by feature_maps, compute the receptive field 261 | 由给出的feature map 计算 262 | and get boxes, confs and class_probs 263 | input_argument: feature_maps -> [None, 13, 13, 255], 264 | [None, 26, 26, 255], 265 | [None, 52, 52, 255], 266 | """ 267 | feature_map_1, feature_map_2, feature_map_3 = feature_maps 268 | feature_map_anchors = [(feature_map_1, self._ANCHORS[6:9]), 269 | (feature_map_2, self._ANCHORS[3:6]), 270 | (feature_map_3, self._ANCHORS[0:3])] 271 | 272 | # boxe 的相对位置转换为绝对位置 273 | results = [self._reorg_layer(feature_map, anchors) for (feature_map, anchors) in feature_map_anchors] 274 | boxes_list, confs_list, probs_list = [], [], [] 275 | 276 | for result in results: 277 | # *result = x_y_offset, boxes, confs, probs 278 | boxes, conf_logits, prob_logits = self._reshape(*result) 279 | # --> (batch_size, cell*cell*anchor_num, boxes/conf/prob) 280 | 281 | confs = tf.sigmoid(conf_logits) # 转化成概率 282 | probs = tf.sigmoid(prob_logits) # 转化成概率,每种类和不在为0 283 | 284 | boxes_list.append(boxes) 285 | confs_list.append(confs) 286 | probs_list.append(probs) 287 | 288 | # 将3个feature_map中所有的信息,整合到一个张量 289 | # shape : [Batch_size,10647,4] 10647 = 13x13x3 + 26x26x3 + 52x52x3 290 | boxes = tf.concat(boxes_list, axis=1) # [Batch_size,10647,4] 291 | confs = tf.concat(confs_list, axis=1) # [Batch_size,10647,1] 292 | probs = tf.concat(probs_list, axis=1) # [Batch_size,10647,class_num] 293 | 294 | # 坐标转化:中心坐标转化为 左上角作案表,右下角坐标 --> 方便计算矩形框 295 | center_x, center_y, width, height = tf.split(boxes, [1, 1, 1, 1], axis=-1) 296 | x0 = center_x - width / 2. 297 | y0 = center_y - height / 2. 298 | x1 = center_x + width / 2. 299 | y1 = center_y + height / 2. 300 | 301 | boxes = tf.concat([x0, y0, x1, y1], axis=-1) 302 | return boxes, confs, probs 303 | 304 | def compute_loss(self, pred_feature_map, y_true, ignore_thresh=0.5, max_box_per_image=8): 305 | """ 306 | :param pred_feature_map: list [feature_map_1,feature_map_2,feature_map3] 307 | feature_map_1[13,13,3,(5 + self._NUM_CLASSES)] 308 | :param y_true: list [y_true_13, y_true_26, y_true_52] 309 | y_true_13 [13,13,3,(5 + self._NUM_CLASSES)] 只有含有目标的网格中存在信息,其余均为0. 310 | :param ignore_thresh: 0.5 311 | :param max_box_per_image: 312 | :return: 313 | """ 314 | loss_xy, loss_wh, loss_conf, loss_class = 0., 0., 0., 0. 315 | total_loss = 0. 316 | # total_loss, rec_50, rec_75, avg_iou = 0., 0., 0., 0. 317 | _ANCHORS = [self._ANCHORS[6:9], self._ANCHORS[3:6], self._ANCHORS[0:3]] 318 | 319 | # 计算每个featurn_map的损失 320 | for i in range(len(pred_feature_map)): 321 | result = self.loss_layer(pred_feature_map[i], y_true[i], _ANCHORS[i]) 322 | loss_xy += result[0] 323 | loss_wh += result[1] 324 | loss_conf += result[2] 325 | loss_class += result[3] 326 | 327 | total_loss = loss_xy + loss_wh + loss_conf + loss_class 328 | return [total_loss, loss_xy, loss_wh, loss_conf, loss_class] 329 | 330 | def loss_layer(self, feature_map_i, y_true, anchors): 331 | # y_ture [13,13,3,5+class_id] 332 | # size in [h, w] format! don't get messed up! 333 | grid_size = tf.shape(feature_map_i)[1:3] # cellxcell 334 | grid_size_ = feature_map_i.shape.as_list()[1:3] 335 | 336 | # 本身具有[-1, grid_size_[0], grid_size_[1], 3, 5 + self._NUM_CLASSES]的shape, 337 | # 但在进过tf.py_func方法时丢失shape信息,使用reshape重新赋予shape 338 | y_true = tf.reshape(y_true, [-1, grid_size_[0], grid_size_[1], 3, 5 + self._NUM_CLASSES]) 339 | 340 | # the downscale ratio in height and weight 341 | ratio = tf.cast(self.img_size / grid_size, tf.float32) 342 | # N: batch_size 343 | N = tf.cast(tf.shape(feature_map_i)[0], tf.float32) 344 | 345 | # 进过self._reorg_layer后会boxe会被换成绝对位置, 会使用ratio进行换算到cellxcell上 346 | x_y_offset, pred_boxes, pred_conf_logits, pred_prob_logits = self._reorg_layer(feature_map_i, anchors) 347 | 348 | # shape: take 416x416 input image and 13*13 feature_map for example: 349 | # [N, 13, 13, 3, 1] 350 | object_mask = y_true[..., 4:5] # 该feature_map下所有的目标,有目标的为1,无目标的为0 351 | 352 | # shape: [N, 13, 13, 3, 4] & [N, 13, 13, 3] ==> [V, 4] 353 | # V: num of true gt box, 该feature_map下所有检测目标的数量 354 | valid_true_boxes = tf.boolean_mask(y_true[..., 0:4], 355 | tf.cast(object_mask[..., 0], 'bool')) # 获取有每个(3个)anchor的中心坐标,长宽 356 | 357 | # shape: [V, 2] 358 | valid_true_box_xy = valid_true_boxes[:, 0:2] 359 | valid_true_box_wh = valid_true_boxes[:, 2:4] 360 | # shape: [N, 13, 13, 3, 2] 361 | pred_box_xy = pred_boxes[..., 0:2] 362 | pred_box_wh = pred_boxes[..., 2:4] 363 | 364 | # calc iou 计算每个pre_boxe与所有true_boxe的交并比. 365 | # true:[V,2],[V,2] 366 | # pre : [13,13,3,2] 367 | # out_shape: [N, 13, 13, 3, V], 368 | iou = self._broadcast_iou(valid_true_box_xy, valid_true_box_wh, pred_box_xy, pred_box_wh) 369 | 370 | # iou_shape : [N,13,13,3,V] 每个单元下每个anchor与所有的true_boxes的交并比 371 | best_iou = tf.reduce_max(iou, axis=-1) # 选择每个anchor中iou最大的那个. 372 | # out_shape : [N,13,13,3] 373 | 374 | # get_ignore_mask 375 | ignore_mask = tf.cast(best_iou < 0.5, tf.float32) # 如果iou低于0.5将会丢弃此anchor\ 376 | # out_shape : [N,13,13,3] 0,1张量 377 | 378 | ignore_mask = tf.expand_dims(ignore_mask, -1) 379 | # out_shape: [N, 13, 13, 3, 1] 0,1张量 380 | 381 | # get xy coordinates in one cell from the feature_map 382 | # numerical range: 0 ~ 1 383 | # shape: [N, 13, 13, 3, 2] # 坐标反归一化 384 | true_xy = y_true[..., 0:2] / ratio[::-1] - x_y_offset # 绝对(image_size * image_size)信息 转换为 单元(cellxcell)相对信息 385 | pred_xy = pred_box_xy / ratio[::-1] - x_y_offset # 获取网络真实输出值 386 | 387 | # get_tw_th, numerical range: 0 ~ 1 388 | # shape: [N, 13, 13, 3, 2], 389 | true_tw_th = y_true[..., 2:4] / anchors # 缩放量 390 | pred_tw_th = pred_box_wh / anchors 391 | # for numerical stability 稳定训练, 为0时不对anchors进行缩放, 在模型输出值特别小是e^out_put为0 392 | true_tw_th = tf.where(condition=tf.equal(true_tw_th, 0), 393 | x=tf.ones_like(true_tw_th), y=true_tw_th) 394 | pred_tw_th = tf.where(condition=tf.equal(pred_tw_th, 0), 395 | x=tf.ones_like(pred_tw_th), y=pred_tw_th) 396 | # 还原网络最原始的输出值(有正负的) 397 | true_tw_th = tf.log(tf.clip_by_value(true_tw_th, 1e-9, 1e9)) 398 | pred_tw_th = tf.log(tf.clip_by_value(pred_tw_th, 1e-9, 1e9)) 399 | 400 | # box size punishment: 401 | # box with smaller area has bigger weight. This is taken from the yolo darknet C source code. 402 | # 较小的面接的box有较大的权重 403 | # shape: [N, 13, 13, 3, 1] 2. - 面积 为1时表示保持原始权重 404 | box_loss_scale = 2. - (y_true[..., 2:3] / tf.cast(self.img_size[1], tf.float32)) * ( 405 | y_true[..., 3:4] / tf.cast(self.img_size[0], tf.float32)) 406 | 407 | # shape: [N, 13, 13, 3, 1] 方框损失值, 中心坐标均方差损失 * mask[N, 13, 13, 3, 1] 408 | # 仅仅计算有目标单元的loss, 不计算那些错误预测的boxes, 在预测是首先会排除那些conf,iou底的单元 409 | xy_loss = tf.reduce_sum(tf.square(true_xy - pred_xy) * object_mask * box_loss_scale) / N # N:batch_size 410 | wh_loss = tf.reduce_sum(tf.square(true_tw_th - pred_tw_th) * object_mask * box_loss_scale) / N 411 | 412 | # shape: [N, 13, 13, 3, 1] 413 | conf_pos_mask = object_mask # 只要存在目标的boxe 414 | conf_neg_mask = (1 - object_mask) * ignore_mask # 选择不存在目标,同时iou小于阈值(0.5), 415 | 416 | # 分离正样本和负样本 417 | # 正样本损失 418 | conf_loss_pos = conf_pos_mask * tf.nn.sigmoid_cross_entropy_with_logits(labels=object_mask, 419 | logits=pred_conf_logits) 420 | # 处理后的负样本损失,只计算那些是单元格中没有目标,同时IOU小于0.5的单元, 421 | # 只惩罚IOU<0.5,而不惩罚IOU>0.5 的原因是可能该单元内是有目标的,仅仅只是目标中心点却没有落在该单元中.所以不计算该loss 422 | conf_loss_neg = conf_neg_mask * tf.nn.sigmoid_cross_entropy_with_logits(labels=object_mask, 423 | logits=pred_conf_logits) 424 | conf_loss = tf.reduce_sum(conf_loss_pos + conf_loss_neg) / N # 平均交叉熵,同时提高正确分类,压低错误分类 425 | 426 | # shape: [N, 13, 13, 3, 1], 分类loss 427 | # boject_mask 只看与anchors相匹配的anchors 428 | class_loss = object_mask * tf.nn.sigmoid_cross_entropy_with_logits(labels=y_true[..., 5:], 429 | logits=pred_prob_logits) 430 | class_loss = tf.reduce_sum(class_loss) / N 431 | 432 | return xy_loss, wh_loss, conf_loss, class_loss 433 | 434 | def _broadcast_iou(self, true_box_xy, true_box_wh, pred_box_xy, pred_box_wh): 435 | ''' 436 | maintain an efficient way to calculate the ios matrix between ground truth true boxes and the predicted boxes 437 | note: here we only care about the size match 只关心大小的匹配 438 | ''' 439 | # shape: 440 | # true_box_??: [V, 2] V:目标数量 441 | # pred_box_??: [N, 13, 13, 3, 2] 442 | 443 | # shape: [N, 13, 13, 3, 1, 2] , 扩张维度方便进行维度广播 444 | pred_box_xy = tf.expand_dims(pred_box_xy, -2) 445 | pred_box_wh = tf.expand_dims(pred_box_wh, -2) 446 | 447 | # shape: [1, V, 2] V:该尺度下分feature_map 下所有的目标是目标数量 448 | true_box_xy = tf.expand_dims(true_box_xy, 0) 449 | true_box_wh = tf.expand_dims(true_box_wh, 0) 450 | 451 | # [N, 13, 13, 3, 1, 2] --> [N, 13, 13, 3, V, 2] & [1, V, 2] ==> [N, 13, 13, 3, V, 2] 维度广播 452 | # 真boxe,左上角,右下角, 假boxe的左上角,右小角, 453 | intersect_mins = tf.maximum(pred_box_xy - pred_box_wh / + 2., # 取最靠右的左上角 454 | true_box_xy - true_box_wh / 2.) 455 | intersect_maxs = tf.minimum(pred_box_xy + pred_box_wh / 2., # 取最靠左的右下角 456 | true_box_xy + true_box_wh / 2.) 457 | # tf.maximun 去除那些没有面积交叉的矩形框, 置0 458 | intersect_wh = tf.maximum(intersect_maxs - intersect_mins, 0.) # 得到重合区域的长和宽 459 | 460 | # shape: [N, 13, 13, 3, V] 461 | intersect_area = intersect_wh[..., 0] * intersect_wh[..., 1] # 重合部分面积 462 | # shape: [N, 13, 13, 3, 1] 463 | pred_box_area = pred_box_wh[..., 0] * pred_box_wh[..., 1] # 预测区域面积 464 | # shape: [1, V] 465 | true_box_area = true_box_wh[..., 0] * true_box_wh[..., 1] # 真实区域面积 466 | # [N, 13, 13, 3, V] 467 | iou = intersect_area / (pred_box_area + true_box_area - intersect_area) 468 | 469 | return iou 470 | -------------------------------------------------------------------------------- /data/coco.names: -------------------------------------------------------------------------------- 1 | 人 2 | 自行车 3 | 汽车 4 | 摩托车 5 | 飞机 6 | 总线 7 | 培养 8 | 卡车 9 | 船 10 | 红绿灯 11 | 消防栓 12 | 停止标志 13 | 停车收费表 14 | 长凳 15 | 鸟 16 | 猫 17 | 狗 18 | 马 19 | 羊 20 | 牛 21 | 象 22 | 熊 23 | 斑马 24 | 长颈鹿 25 | 背包 26 | 雨伞 27 | 手提包 28 | 领带 29 | 手提箱 30 | 飞盘 31 | 滑雪板 32 | 单板滑雪 33 | 运动球 34 | 风筝 35 | 棒球棒 36 | 棒球手套 37 | 滑板 38 | 冲浪板 39 | 网球拍 40 | 瓶子 41 | 红酒杯 42 | 杯子 43 | 叉子 44 | 刀 45 | 勺 46 | 碗 47 | 香蕉 48 | 苹果 49 | 三明治 50 | 橙子 51 | 西兰花 52 | 胡萝卜 53 | 热狗 54 | 比萨 55 | 甜甜圈 56 | 蛋糕 57 | 椅子 58 | 沙发 59 | 盆栽 60 | 床 61 | 餐桌 62 | 厕所 63 | 显示器 64 | 笔记本电脑 65 | 鼠标 66 | 远程 67 | 键盘 68 | 手机 69 | 微波 70 | 烤箱 71 | 烤面包机 72 | 水槽 73 | 冰箱 74 | 书 75 | 时钟 76 | 花瓶 77 | 剪刀 78 | 泰迪熊 79 | 吹风机 80 | 牙刷 -------------------------------------------------------------------------------- /data/coco_Englist.names: -------------------------------------------------------------------------------- 1 | person 2 | bicycle 3 | car 4 | motorbike 5 | aeroplane 6 | bus 7 | train 8 | truck 9 | boat 10 | traffic light 11 | fire hydrant 12 | stop sign 13 | parking meter 14 | bench 15 | bird 16 | cat 17 | dog 18 | horse 19 | sheep 20 | cow 21 | elephant 22 | bear 23 | zebra 24 | giraffe 25 | backpack 26 | umbrella 27 | handbag 28 | tie 29 | suitcase 30 | frisbee 31 | skis 32 | snowboard 33 | sports ball 34 | kite 35 | baseball bat 36 | baseball glove 37 | skateboard 38 | surfboard 39 | tennis racket 40 | bottle 41 | wine glass 42 | cup 43 | fork 44 | knife 45 | spoon 46 | bowl 47 | banana 48 | apple 49 | sandwich 50 | orange 51 | broccoli 52 | carrot 53 | hot dog 54 | pizza 55 | donut 56 | cake 57 | chair 58 | sofa 59 | pottedplant 60 | bed 61 | diningtable 62 | toilet 63 | tvmonitor 64 | laptop 65 | mouse 66 | remote 67 | keyboard 68 | cell phone 69 | microwave 70 | oven 71 | toaster 72 | sink 73 | refrigerator 74 | book 75 | clock 76 | vase 77 | scissors 78 | teddy bear 79 | hair drier 80 | toothbrush 81 | -------------------------------------------------------------------------------- /data/coco_anchors.txt: -------------------------------------------------------------------------------- 1 | 0.02403846153846154 0.03125 0.038461538461538464 0.07211538461538461 0.07932692307692307 0.055288461538461536 0.07211538461538461 0.1466346153846154 0.14903846153846154 0.10817307692307693 0.14182692307692307 0.2860576923076923 0.27884615384615385 0.21634615384615385 0.375 0.47596153846153844 0.8966346153846154 0.7836538461538461 -------------------------------------------------------------------------------- /data/font/FiraMono-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/font/FiraMono-Medium.otf -------------------------------------------------------------------------------- /data/font/HuaWenXinWei-1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/font/HuaWenXinWei-1.ttf -------------------------------------------------------------------------------- /data/raccoon.names: -------------------------------------------------------------------------------- 1 | raccoon -------------------------------------------------------------------------------- /data/raccoon_anchors.txt: -------------------------------------------------------------------------------- 1 | 0.26156250000000003 0.3675555555555555 0.352 0.4205607476635514 0.37875 0.577922077922078 0.4637223974763407 0.822429906542056 0.5781931757541514 0.8601034458656602 0.7391304347826086 0.6888888888888889 0.68203125 0.967551622418879 0.9550664451827242 0.837808828444353 0.8592682926829268 0.9490718440846271 -------------------------------------------------------------------------------- /data/train_dome_data/do_label.py: -------------------------------------------------------------------------------- 1 | 2 | for txt in ["labels.txt", "test.txt", "train.txt"]: 3 | new_txt = open("new_" + txt, "w") 4 | for line in open(txt).readlines(): 5 | new_line = line.replace("./raccoon_dataset/", "../data/train_dome_data/") 6 | new_txt.write(new_line) 7 | -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-1.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-10.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-100.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-101.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-101.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-102.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-102.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-103.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-103.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-104.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-104.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-105.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-105.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-106.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-106.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-107.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-107.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-108.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-108.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-109.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-109.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-11.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-110.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-110.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-111.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-111.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-112.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-112.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-113.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-113.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-114.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-114.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-115.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-115.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-116.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-116.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-117.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-117.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-118.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-118.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-119.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-119.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-12.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-120.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-120.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-121.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-121.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-122.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-122.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-123.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-123.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-124.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-124.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-125.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-125.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-126.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-126.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-127.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-127.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-128.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-129.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-129.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-13.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-130.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-130.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-131.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-131.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-132.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-132.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-133.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-133.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-134.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-134.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-135.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-135.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-136.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-136.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-137.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-137.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-138.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-138.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-139.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-139.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-14.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-140.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-140.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-141.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-141.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-142.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-142.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-143.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-143.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-144.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-144.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-145.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-145.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-146.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-146.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-147.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-147.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-148.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-148.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-149.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-149.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-15.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-150.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-150.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-151.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-151.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-152.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-152.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-153.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-153.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-154.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-154.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-155.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-155.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-156.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-156.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-157.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-157.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-158.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-158.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-159.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-159.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-16.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-160.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-160.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-161.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-161.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-162.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-162.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-163.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-163.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-164.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-164.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-165.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-165.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-166.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-166.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-167.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-167.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-168.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-168.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-169.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-169.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-17.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-170.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-170.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-171.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-171.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-172.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-172.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-173.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-173.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-174.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-174.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-175.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-175.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-176.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-176.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-177.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-177.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-178.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-178.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-179.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-179.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-18.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-180.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-180.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-181.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-181.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-182.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-182.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-183.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-183.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-184.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-184.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-185.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-185.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-186.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-186.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-187.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-187.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-188.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-188.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-189.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-189.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-19.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-190.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-190.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-191.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-191.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-192.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-192.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-193.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-193.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-194.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-194.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-195.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-195.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-196.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-196.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-197.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-197.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-198.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-198.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-199.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-199.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-2.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-20.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-200.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-200.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-21.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-22.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-23.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-24.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-25.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-26.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-27.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-28.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-29.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-3.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-30.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-31.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-32.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-32.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-33.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-33.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-34.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-34.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-35.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-35.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-36.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-36.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-37.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-37.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-38.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-38.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-39.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-39.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-4.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-40.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-41.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-41.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-42.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-42.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-43.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-43.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-44.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-44.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-45.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-45.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-46.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-46.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-47.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-47.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-48.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-48.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-49.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-49.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-5.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-50.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-50.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-51.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-51.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-52.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-52.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-53.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-53.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-54.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-54.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-55.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-56.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-56.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-57.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-57.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-58.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-58.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-59.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-59.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-6.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-60.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-60.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-61.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-61.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-62.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-62.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-63.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-63.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-64.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-64.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-65.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-65.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-66.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-66.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-67.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-67.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-68.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-68.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-69.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-69.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-7.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-70.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-70.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-71.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-71.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-72.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-72.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-73.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-73.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-74.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-74.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-75.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-75.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-76.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-76.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-77.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-77.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-78.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-78.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-79.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-79.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-8.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-80.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-80.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-81.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-81.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-82.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-82.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-83.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-83.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-84.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-84.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-85.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-85.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-86.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-86.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-87.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-87.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-88.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-88.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-89.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-89.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-9.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-90.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-90.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-91.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-91.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-92.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-92.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-93.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-93.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-94.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-94.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-95.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-95.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-96.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-96.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-97.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-97.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-98.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-98.jpg -------------------------------------------------------------------------------- /data/train_dome_data/images/raccoon-99.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/data/train_dome_data/images/raccoon-99.jpg -------------------------------------------------------------------------------- /data/train_dome_data/labels.txt: -------------------------------------------------------------------------------- 1 | ./raccoon_dataset/images/raccoon-163.jpg 6 7 240 157 0 2 | ./raccoon_dataset/images/raccoon-165.jpg 27 11 194 228 0 3 | ./raccoon_dataset/images/raccoon-90.jpg 44 90 577 426 0 4 | ./raccoon_dataset/images/raccoon-53.jpg 71 45 197 171 0 5 | ./raccoon_dataset/images/raccoon-160.jpg 7 42 162 197 0 6 | ./raccoon_dataset/images/raccoon-154.jpg 148 56 517 346 0 7 | ./raccoon_dataset/images/raccoon-49.jpg 162 36 611 395 0 8 | ./raccoon_dataset/images/raccoon-10.jpg 130 2 446 488 0 9 | ./raccoon_dataset/images/raccoon-21.jpg 59 2 216 171 0 10 | ./raccoon_dataset/images/raccoon-2.jpg 60 51 462 499 0 11 | ./raccoon_dataset/images/raccoon-52.jpg 105 10 502 501 0 12 | ./raccoon_dataset/images/raccoon-22.jpg 252 76 466 335 0 13 | ./raccoon_dataset/images/raccoon-131.jpg 1 1 199 184 0 14 | ./raccoon_dataset/images/raccoon-12.jpg 28 21 126 181 0 85 33 235 193 0 15 | ./raccoon_dataset/images/raccoon-35.jpg 1 1 164 183 0 16 | ./raccoon_dataset/images/raccoon-151.jpg 42 94 108 224 0 17 | ./raccoon_dataset/images/raccoon-140.jpg 6 17 202 231 0 18 | ./raccoon_dataset/images/raccoon-183.jpg 358 21 1354 1119 0 19 | ./raccoon_dataset/images/raccoon-146.jpg 4 4 271 180 0 20 | ./raccoon_dataset/images/raccoon-150.jpg 80 62 187 169 0 21 | ./raccoon_dataset/images/raccoon-136.jpg 51 24 198 192 0 22 | ./raccoon_dataset/images/raccoon-145.jpg 3 36 345 450 0 260 41 569 449 0 23 | ./raccoon_dataset/images/raccoon-105.jpg 250 49 714 869 0 24 | ./raccoon_dataset/images/raccoon-50.jpg 36 2 174 172 0 25 | ./raccoon_dataset/images/raccoon-11.jpg 3 1 461 431 0 26 | ./raccoon_dataset/images/raccoon-158.jpg 23 23 262 177 0 27 | ./raccoon_dataset/images/raccoon-134.jpg 125 87 194 169 0 28 | ./raccoon_dataset/images/raccoon-168.jpg 98 88 374 303 0 173 1 471 309 0 29 | ./raccoon_dataset/images/raccoon-34.jpg 1 2 227 194 0 30 | ./raccoon_dataset/images/raccoon-138.jpg 56 54 226 150 0 31 | ./raccoon_dataset/images/raccoon-23.jpg 108 1 258 194 0 32 | ./raccoon_dataset/images/raccoon-189.jpg 19 2 508 438 0 33 | ./raccoon_dataset/images/raccoon-156.jpg 27 27 139 243 0 34 | ./raccoon_dataset/images/raccoon-152.jpg 41 60 223 155 0 35 | ./raccoon_dataset/images/raccoon-88.jpg 116 41 526 436 0 36 | ./raccoon_dataset/images/raccoon-144.jpg 117 42 387 390 0 37 | ./raccoon_dataset/images/raccoon-79.jpg 120 1 568 425 0 38 | ./raccoon_dataset/images/raccoon-81.jpg 4 54 574 410 0 39 | ./raccoon_dataset/images/raccoon-116.jpg 3 1 436 430 0 40 | ./raccoon_dataset/images/raccoon-87.jpg 1 3 206 191 0 41 | ./raccoon_dataset/images/raccoon-4.jpg 21 11 200 183 0 42 | ./raccoon_dataset/images/raccoon-148.jpg 32 177 174 316 0 309 172 428 315 0 43 | ./raccoon_dataset/images/raccoon-193.jpg 23 215 440 831 0 44 | ./raccoon_dataset/images/raccoon-149.jpg 132 50 305 246 0 45 | ./raccoon_dataset/images/raccoon-94.jpg 155 10 543 445 0 46 | ./raccoon_dataset/images/raccoon-15.jpg 313 61 614 360 0 47 | ./raccoon_dataset/images/raccoon-153.jpg 10 1 612 700 0 48 | ./raccoon_dataset/images/raccoon-25.jpg 31 82 325 641 0 49 | ./raccoon_dataset/images/raccoon-99.jpg 15 40 132 226 0 50 | ./raccoon_dataset/images/raccoon-62.jpg 73 19 632 407 0 51 | ./raccoon_dataset/images/raccoon-14.jpg 163 81 546 438 0 52 | ./raccoon_dataset/images/raccoon-84.jpg 31 6 197 163 0 53 | ./raccoon_dataset/images/raccoon-85.jpg 236 87 598 429 0 54 | ./raccoon_dataset/images/raccoon-171.jpg 108 21 180 115 0 55 | ./raccoon_dataset/images/raccoon-172.jpg 183 53 399 302 0 56 | ./raccoon_dataset/images/raccoon-82.jpg 6 1 632 500 0 57 | ./raccoon_dataset/images/raccoon-9.jpg 10 7 347 471 0 58 | ./raccoon_dataset/images/raccoon-200.jpg 107 10 249 166 0 59 | ./raccoon_dataset/images/raccoon-178.jpg 59 12 242 180 0 60 | ./raccoon_dataset/images/raccoon-80.jpg 21 27 177 182 0 61 | ./raccoon_dataset/images/raccoon-20.jpg 2 29 720 503 0 62 | ./raccoon_dataset/images/raccoon-127.jpg 125 59 212 165 0 63 | ./raccoon_dataset/images/raccoon-36.jpg 113 27 468 428 0 64 | ./raccoon_dataset/images/raccoon-143.jpg 17 29 238 162 0 65 | ./raccoon_dataset/images/raccoon-71.jpg 129 51 628 373 0 66 | ./raccoon_dataset/images/raccoon-38.jpg 7 17 257 180 0 67 | ./raccoon_dataset/images/raccoon-59.jpg 1 2 449 432 0 68 | ./raccoon_dataset/images/raccoon-18.jpg 32 25 201 130 0 69 | ./raccoon_dataset/images/raccoon-180.jpg 119 21 368 399 0 70 | ./raccoon_dataset/images/raccoon-147.jpg 13 1 426 486 0 71 | ./raccoon_dataset/images/raccoon-164.jpg 10 27 178 184 0 72 | ./raccoon_dataset/images/raccoon-109.jpg 9 1 177 252 0 73 | ./raccoon_dataset/images/raccoon-3.jpg 1 1 720 476 0 74 | ./raccoon_dataset/images/raccoon-113.jpg 1 1 384 436 0 75 | ./raccoon_dataset/images/raccoon-55.jpg 6 49 250 320 0 274 27 563 410 0 76 | ./raccoon_dataset/images/raccoon-39.jpg 54 12 250 166 0 77 | ./raccoon_dataset/images/raccoon-54.jpg 78 5 517 333 0 78 | ./raccoon_dataset/images/raccoon-139.jpg 20 6 177 167 0 79 | ./raccoon_dataset/images/raccoon-27.jpg 14 38 592 373 0 80 | ./raccoon_dataset/images/raccoon-56.jpg 20 6 224 201 0 81 | ./raccoon_dataset/images/raccoon-60.jpg 58 33 197 127 0 82 | ./raccoon_dataset/images/raccoon-115.jpg 51 130 351 556 0 83 | ./raccoon_dataset/images/raccoon-117.jpg 100 124 266 324 0 342 101 570 297 0 84 | ./raccoon_dataset/images/raccoon-194.jpg 1 63 885 1042 0 85 | ./raccoon_dataset/images/raccoon-107.jpg 165 51 496 590 0 86 | ./raccoon_dataset/images/raccoon-170.jpg 53 27 254 173 0 87 | ./raccoon_dataset/images/raccoon-104.jpg 189 41 340 249 0 88 | ./raccoon_dataset/images/raccoon-137.jpg 71 8 304 233 0 89 | ./raccoon_dataset/images/raccoon-78.jpg 28 15 221 216 0 90 | ./raccoon_dataset/images/raccoon-97.jpg 1 32 343 307 0 91 | ./raccoon_dataset/images/raccoon-47.jpg 34 4 233 193 0 92 | ./raccoon_dataset/images/raccoon-31.jpg 82 21 187 197 0 11 55 80 145 0 93 | ./raccoon_dataset/images/raccoon-24.jpg 77 48 179 156 0 139 77 202 145 0 94 | ./raccoon_dataset/images/raccoon-83.jpg 104 3 509 369 0 95 | ./raccoon_dataset/images/raccoon-5.jpg 3 3 260 179 0 96 | ./raccoon_dataset/images/raccoon-198.jpg 57 21 158 184 0 112 32 199 158 0 97 | ./raccoon_dataset/images/raccoon-186.jpg 34 40 536 387 0 98 | ./raccoon_dataset/images/raccoon-169.jpg 194 1 549 409 0 99 | ./raccoon_dataset/images/raccoon-123.jpg 280 42 550 392 0 100 | ./raccoon_dataset/images/raccoon-126.jpg 5 5 246 192 0 101 | ./raccoon_dataset/images/raccoon-195.jpg 25 111 197 225 0 102 | ./raccoon_dataset/images/raccoon-58.jpg 2 1 199 221 0 103 | ./raccoon_dataset/images/raccoon-73.jpg 56 16 274 166 0 104 | ./raccoon_dataset/images/raccoon-46.jpg 145 2 423 318 0 105 | ./raccoon_dataset/images/raccoon-42.jpg 121 206 410 767 0 106 | ./raccoon_dataset/images/raccoon-48.jpg 43 28 240 176 0 107 | ./raccoon_dataset/images/raccoon-196.jpg 83 87 211 211 0 108 | ./raccoon_dataset/images/raccoon-112.jpg 131 174 775 563 0 109 | ./raccoon_dataset/images/raccoon-65.jpg 123 27 338 284 0 110 | ./raccoon_dataset/images/raccoon-7.jpg 92 79 271 264 0 111 | ./raccoon_dataset/images/raccoon-57.jpg 82 6 638 423 0 112 | ./raccoon_dataset/images/raccoon-188.jpg 26 71 366 334 0 113 | ./raccoon_dataset/images/raccoon-174.jpg 125 43 588 527 0 114 | ./raccoon_dataset/images/raccoon-28.jpg 93 80 601 452 0 115 | ./raccoon_dataset/images/raccoon-191.jpg 100 89 478 331 0 116 | ./raccoon_dataset/images/raccoon-159.jpg 14 11 223 221 0 117 | ./raccoon_dataset/images/raccoon-41.jpg 211 78 530 468 0 118 | ./raccoon_dataset/images/raccoon-179.jpg 1 176 270 427 0 119 | ./raccoon_dataset/images/raccoon-190.jpg 78 54 153 135 0 120 | ./raccoon_dataset/images/raccoon-162.jpg 45 34 161 184 0 121 | ./raccoon_dataset/images/raccoon-142.jpg 171 162 811 740 0 122 | ./raccoon_dataset/images/raccoon-93.jpg 66 29 233 190 0 123 | ./raccoon_dataset/images/raccoon-102.jpg 1 1 118 152 0 124 | ./raccoon_dataset/images/raccoon-45.jpg 140 6 454 370 0 125 | ./raccoon_dataset/images/raccoon-29.jpg 70 6 219 179 0 126 | ./raccoon_dataset/images/raccoon-135.jpg 99 8 605 404 0 127 | ./raccoon_dataset/images/raccoon-192.jpg 127 160 298 289 0 128 | ./raccoon_dataset/images/raccoon-72.jpg 219 195 446 375 0 98 34 284 336 0 129 | ./raccoon_dataset/images/raccoon-61.jpg 94 63 195 148 0 142 39 213 108 0 130 | ./raccoon_dataset/images/raccoon-68.jpg 1 24 517 423 0 131 | ./raccoon_dataset/images/raccoon-70.jpg 60 4 421 369 0 132 | ./raccoon_dataset/images/raccoon-51.jpg 315 105 772 540 0 133 | ./raccoon_dataset/images/raccoon-95.jpg 50 45 272 289 0 134 | ./raccoon_dataset/images/raccoon-197.jpg 114 35 987 653 0 135 | ./raccoon_dataset/images/raccoon-19.jpg 87 8 182 89 0 136 | ./raccoon_dataset/images/raccoon-110.jpg 23 2 166 262 0 137 | ./raccoon_dataset/images/raccoon-76.jpg 14 1 212 132 0 138 | ./raccoon_dataset/images/raccoon-103.jpg 92 54 460 545 0 139 | ./raccoon_dataset/images/raccoon-77.jpg 161 1 627 330 0 140 | ./raccoon_dataset/images/raccoon-176.jpg 308 90 611 426 0 103 1 314 189 0 141 | ./raccoon_dataset/images/raccoon-74.jpg 141 6 472 505 0 142 | ./raccoon_dataset/images/raccoon-69.jpg 12 11 188 240 0 143 | ./raccoon_dataset/images/raccoon-8.jpg 16 11 236 175 0 144 | ./raccoon_dataset/images/raccoon-91.jpg 22 14 216 308 0 145 | ./raccoon_dataset/images/raccoon-100.jpg 548 10 954 520 0 146 | ./raccoon_dataset/images/raccoon-26.jpg 114 5 306 337 0 147 | ./raccoon_dataset/images/raccoon-199.jpg 28 64 530 402 0 148 | ./raccoon_dataset/images/raccoon-89.jpg 18 6 225 176 0 149 | ./raccoon_dataset/images/raccoon-175.jpg 69 89 354 378 0 150 | ./raccoon_dataset/images/raccoon-6.jpg 1 44 307 316 0 151 | ./raccoon_dataset/images/raccoon-17.jpg 95 60 167 118 0 152 | ./raccoon_dataset/images/raccoon-129.jpg 142 24 442 276 0 153 | ./raccoon_dataset/images/raccoon-1.jpg 81 88 522 408 0 154 | ./raccoon_dataset/images/raccoon-118.jpg 109 31 307 297 0 155 | ./raccoon_dataset/images/raccoon-44.jpg 45 14 247 165 0 156 | ./raccoon_dataset/images/raccoon-133.jpg 8 6 476 631 0 157 | ./raccoon_dataset/images/raccoon-43.jpg 1 65 239 316 0 158 | ./raccoon_dataset/images/raccoon-16.jpg 51 178 355 632 0 159 | ./raccoon_dataset/images/raccoon-161.jpg 209 73 385 186 0 160 | ./raccoon_dataset/images/raccoon-37.jpg 13 1 500 592 0 161 | ./raccoon_dataset/images/raccoon-114.jpg 242 35 523 264 0 162 | ./raccoon_dataset/images/raccoon-64.jpg 1 1 247 194 0 163 | ./raccoon_dataset/images/raccoon-124.jpg 17 39 239 147 0 164 | ./raccoon_dataset/images/raccoon-184.jpg 81 77 567 617 0 165 | ./raccoon_dataset/images/raccoon-92.jpg 37 32 729 543 0 166 | ./raccoon_dataset/images/raccoon-173.jpg 202 21 515 387 0 167 | ./raccoon_dataset/images/raccoon-106.jpg 31 21 226 146 0 168 | ./raccoon_dataset/images/raccoon-157.jpg 1 1 144 209 0 169 | ./raccoon_dataset/images/raccoon-185.jpg 25 1 200 181 0 170 | ./raccoon_dataset/images/raccoon-155.jpg 46 91 143 169 0 171 | ./raccoon_dataset/images/raccoon-187.jpg 161 112 292 276 0 172 | ./raccoon_dataset/images/raccoon-141.jpg 1 1 154 176 0 173 | ./raccoon_dataset/images/raccoon-182.jpg 17 122 279 499 0 174 | ./raccoon_dataset/images/raccoon-121.jpg 55 34 416 377 0 175 | ./raccoon_dataset/images/raccoon-166.jpg 108 31 208 120 0 176 | ./raccoon_dataset/images/raccoon-98.jpg 108 31 351 308 0 177 | ./raccoon_dataset/images/raccoon-32.jpg 88 92 473 328 0 178 | ./raccoon_dataset/images/raccoon-132.jpg 6 2 240 131 0 179 | ./raccoon_dataset/images/raccoon-63.jpg 74 107 280 290 0 227 93 403 298 0 180 | ./raccoon_dataset/images/raccoon-101.jpg 86 53 400 356 0 181 | ./raccoon_dataset/images/raccoon-120.jpg 129 12 510 331 0 182 | ./raccoon_dataset/images/raccoon-96.jpg 28 25 203 175 0 183 | ./raccoon_dataset/images/raccoon-130.jpg 223 62 497 307 0 453 41 640 423 0 184 | ./raccoon_dataset/images/raccoon-13.jpg 55 28 393 313 0 185 | ./raccoon_dataset/images/raccoon-40.jpg 164 53 349 275 0 186 | ./raccoon_dataset/images/raccoon-66.jpg 220 37 697 440 0 187 | ./raccoon_dataset/images/raccoon-33.jpg 89 12 593 843 0 188 | ./raccoon_dataset/images/raccoon-30.jpg 78 25 182 177 0 189 | ./raccoon_dataset/images/raccoon-108.jpg 99 53 402 464 0 190 | ./raccoon_dataset/images/raccoon-86.jpg 129 34 475 401 0 191 | ./raccoon_dataset/images/raccoon-128.jpg 76 87 190 148 0 192 | ./raccoon_dataset/images/raccoon-122.jpg 7 7 174 198 0 193 | ./raccoon_dataset/images/raccoon-111.jpg 41 5 683 917 0 194 | ./raccoon_dataset/images/raccoon-177.jpg 8 18 157 178 0 146 13 263 146 0 195 | ./raccoon_dataset/images/raccoon-119.jpg 16 62 362 353 0 211 359 277 402 0 198 392 280 473 0 196 | ./raccoon_dataset/images/raccoon-67.jpg 18 17 224 168 0 197 | ./raccoon_dataset/images/raccoon-181.jpg 100 1 420 411 0 198 | ./raccoon_dataset/images/raccoon-75.jpg 1 1 640 459 0 199 | ./raccoon_dataset/images/raccoon-125.jpg 13 6 252 190 0 200 | ./raccoon_dataset/images/raccoon-167.jpg 1 5 175 195 0 201 | -------------------------------------------------------------------------------- /data/train_dome_data/new_labels.txt: -------------------------------------------------------------------------------- 1 | ../data/train_dome_data/images/raccoon-163.jpg 6 7 240 157 0 2 | ../data/train_dome_data/images/raccoon-165.jpg 27 11 194 228 0 3 | ../data/train_dome_data/images/raccoon-90.jpg 44 90 577 426 0 4 | ../data/train_dome_data/images/raccoon-53.jpg 71 45 197 171 0 5 | ../data/train_dome_data/images/raccoon-160.jpg 7 42 162 197 0 6 | ../data/train_dome_data/images/raccoon-154.jpg 148 56 517 346 0 7 | ../data/train_dome_data/images/raccoon-49.jpg 162 36 611 395 0 8 | ../data/train_dome_data/images/raccoon-10.jpg 130 2 446 488 0 9 | ../data/train_dome_data/images/raccoon-21.jpg 59 2 216 171 0 10 | ../data/train_dome_data/images/raccoon-2.jpg 60 51 462 499 0 11 | ../data/train_dome_data/images/raccoon-52.jpg 105 10 502 501 0 12 | ../data/train_dome_data/images/raccoon-22.jpg 252 76 466 335 0 13 | ../data/train_dome_data/images/raccoon-131.jpg 1 1 199 184 0 14 | ../data/train_dome_data/images/raccoon-12.jpg 28 21 126 181 0 85 33 235 193 0 15 | ../data/train_dome_data/images/raccoon-35.jpg 1 1 164 183 0 16 | ../data/train_dome_data/images/raccoon-151.jpg 42 94 108 224 0 17 | ../data/train_dome_data/images/raccoon-140.jpg 6 17 202 231 0 18 | ../data/train_dome_data/images/raccoon-183.jpg 358 21 1354 1119 0 19 | ../data/train_dome_data/images/raccoon-146.jpg 4 4 271 180 0 20 | ../data/train_dome_data/images/raccoon-150.jpg 80 62 187 169 0 21 | ../data/train_dome_data/images/raccoon-136.jpg 51 24 198 192 0 22 | ../data/train_dome_data/images/raccoon-145.jpg 3 36 345 450 0 260 41 569 449 0 23 | ../data/train_dome_data/images/raccoon-105.jpg 250 49 714 869 0 24 | ../data/train_dome_data/images/raccoon-50.jpg 36 2 174 172 0 25 | ../data/train_dome_data/images/raccoon-11.jpg 3 1 461 431 0 26 | ../data/train_dome_data/images/raccoon-158.jpg 23 23 262 177 0 27 | ../data/train_dome_data/images/raccoon-134.jpg 125 87 194 169 0 28 | ../data/train_dome_data/images/raccoon-168.jpg 98 88 374 303 0 173 1 471 309 0 29 | ../data/train_dome_data/images/raccoon-34.jpg 1 2 227 194 0 30 | ../data/train_dome_data/images/raccoon-138.jpg 56 54 226 150 0 31 | ../data/train_dome_data/images/raccoon-23.jpg 108 1 258 194 0 32 | ../data/train_dome_data/images/raccoon-189.jpg 19 2 508 438 0 33 | ../data/train_dome_data/images/raccoon-156.jpg 27 27 139 243 0 34 | ../data/train_dome_data/images/raccoon-152.jpg 41 60 223 155 0 35 | ../data/train_dome_data/images/raccoon-88.jpg 116 41 526 436 0 36 | ../data/train_dome_data/images/raccoon-144.jpg 117 42 387 390 0 37 | ../data/train_dome_data/images/raccoon-79.jpg 120 1 568 425 0 38 | ../data/train_dome_data/images/raccoon-81.jpg 4 54 574 410 0 39 | ../data/train_dome_data/images/raccoon-116.jpg 3 1 436 430 0 40 | ../data/train_dome_data/images/raccoon-87.jpg 1 3 206 191 0 41 | ../data/train_dome_data/images/raccoon-4.jpg 21 11 200 183 0 42 | ../data/train_dome_data/images/raccoon-148.jpg 32 177 174 316 0 309 172 428 315 0 43 | ../data/train_dome_data/images/raccoon-193.jpg 23 215 440 831 0 44 | ../data/train_dome_data/images/raccoon-149.jpg 132 50 305 246 0 45 | ../data/train_dome_data/images/raccoon-94.jpg 155 10 543 445 0 46 | ../data/train_dome_data/images/raccoon-15.jpg 313 61 614 360 0 47 | ../data/train_dome_data/images/raccoon-153.jpg 10 1 612 700 0 48 | ../data/train_dome_data/images/raccoon-25.jpg 31 82 325 641 0 49 | ../data/train_dome_data/images/raccoon-99.jpg 15 40 132 226 0 50 | ../data/train_dome_data/images/raccoon-62.jpg 73 19 632 407 0 51 | ../data/train_dome_data/images/raccoon-14.jpg 163 81 546 438 0 52 | ../data/train_dome_data/images/raccoon-84.jpg 31 6 197 163 0 53 | ../data/train_dome_data/images/raccoon-85.jpg 236 87 598 429 0 54 | ../data/train_dome_data/images/raccoon-171.jpg 108 21 180 115 0 55 | ../data/train_dome_data/images/raccoon-172.jpg 183 53 399 302 0 56 | ../data/train_dome_data/images/raccoon-82.jpg 6 1 632 500 0 57 | ../data/train_dome_data/images/raccoon-9.jpg 10 7 347 471 0 58 | ../data/train_dome_data/images/raccoon-200.jpg 107 10 249 166 0 59 | ../data/train_dome_data/images/raccoon-178.jpg 59 12 242 180 0 60 | ../data/train_dome_data/images/raccoon-80.jpg 21 27 177 182 0 61 | ../data/train_dome_data/images/raccoon-20.jpg 2 29 720 503 0 62 | ../data/train_dome_data/images/raccoon-127.jpg 125 59 212 165 0 63 | ../data/train_dome_data/images/raccoon-36.jpg 113 27 468 428 0 64 | ../data/train_dome_data/images/raccoon-143.jpg 17 29 238 162 0 65 | ../data/train_dome_data/images/raccoon-71.jpg 129 51 628 373 0 66 | ../data/train_dome_data/images/raccoon-38.jpg 7 17 257 180 0 67 | ../data/train_dome_data/images/raccoon-59.jpg 1 2 449 432 0 68 | ../data/train_dome_data/images/raccoon-18.jpg 32 25 201 130 0 69 | ../data/train_dome_data/images/raccoon-180.jpg 119 21 368 399 0 70 | ../data/train_dome_data/images/raccoon-147.jpg 13 1 426 486 0 71 | ../data/train_dome_data/images/raccoon-164.jpg 10 27 178 184 0 72 | ../data/train_dome_data/images/raccoon-109.jpg 9 1 177 252 0 73 | ../data/train_dome_data/images/raccoon-3.jpg 1 1 720 476 0 74 | ../data/train_dome_data/images/raccoon-113.jpg 1 1 384 436 0 75 | ../data/train_dome_data/images/raccoon-55.jpg 6 49 250 320 0 274 27 563 410 0 76 | ../data/train_dome_data/images/raccoon-39.jpg 54 12 250 166 0 77 | ../data/train_dome_data/images/raccoon-54.jpg 78 5 517 333 0 78 | ../data/train_dome_data/images/raccoon-139.jpg 20 6 177 167 0 79 | ../data/train_dome_data/images/raccoon-27.jpg 14 38 592 373 0 80 | ../data/train_dome_data/images/raccoon-56.jpg 20 6 224 201 0 81 | ../data/train_dome_data/images/raccoon-60.jpg 58 33 197 127 0 82 | ../data/train_dome_data/images/raccoon-115.jpg 51 130 351 556 0 83 | ../data/train_dome_data/images/raccoon-117.jpg 100 124 266 324 0 342 101 570 297 0 84 | ../data/train_dome_data/images/raccoon-194.jpg 1 63 885 1042 0 85 | ../data/train_dome_data/images/raccoon-107.jpg 165 51 496 590 0 86 | ../data/train_dome_data/images/raccoon-170.jpg 53 27 254 173 0 87 | ../data/train_dome_data/images/raccoon-104.jpg 189 41 340 249 0 88 | ../data/train_dome_data/images/raccoon-137.jpg 71 8 304 233 0 89 | ../data/train_dome_data/images/raccoon-78.jpg 28 15 221 216 0 90 | ../data/train_dome_data/images/raccoon-97.jpg 1 32 343 307 0 91 | ../data/train_dome_data/images/raccoon-47.jpg 34 4 233 193 0 92 | ../data/train_dome_data/images/raccoon-31.jpg 82 21 187 197 0 11 55 80 145 0 93 | ../data/train_dome_data/images/raccoon-24.jpg 77 48 179 156 0 139 77 202 145 0 94 | ../data/train_dome_data/images/raccoon-83.jpg 104 3 509 369 0 95 | ../data/train_dome_data/images/raccoon-5.jpg 3 3 260 179 0 96 | ../data/train_dome_data/images/raccoon-198.jpg 57 21 158 184 0 112 32 199 158 0 97 | ../data/train_dome_data/images/raccoon-186.jpg 34 40 536 387 0 98 | ../data/train_dome_data/images/raccoon-169.jpg 194 1 549 409 0 99 | ../data/train_dome_data/images/raccoon-123.jpg 280 42 550 392 0 100 | ../data/train_dome_data/images/raccoon-126.jpg 5 5 246 192 0 101 | ../data/train_dome_data/images/raccoon-195.jpg 25 111 197 225 0 102 | ../data/train_dome_data/images/raccoon-58.jpg 2 1 199 221 0 103 | ../data/train_dome_data/images/raccoon-73.jpg 56 16 274 166 0 104 | ../data/train_dome_data/images/raccoon-46.jpg 145 2 423 318 0 105 | ../data/train_dome_data/images/raccoon-42.jpg 121 206 410 767 0 106 | ../data/train_dome_data/images/raccoon-48.jpg 43 28 240 176 0 107 | ../data/train_dome_data/images/raccoon-196.jpg 83 87 211 211 0 108 | ../data/train_dome_data/images/raccoon-112.jpg 131 174 775 563 0 109 | ../data/train_dome_data/images/raccoon-65.jpg 123 27 338 284 0 110 | ../data/train_dome_data/images/raccoon-7.jpg 92 79 271 264 0 111 | ../data/train_dome_data/images/raccoon-57.jpg 82 6 638 423 0 112 | ../data/train_dome_data/images/raccoon-188.jpg 26 71 366 334 0 113 | ../data/train_dome_data/images/raccoon-174.jpg 125 43 588 527 0 114 | ../data/train_dome_data/images/raccoon-28.jpg 93 80 601 452 0 115 | ../data/train_dome_data/images/raccoon-191.jpg 100 89 478 331 0 116 | ../data/train_dome_data/images/raccoon-159.jpg 14 11 223 221 0 117 | ../data/train_dome_data/images/raccoon-41.jpg 211 78 530 468 0 118 | ../data/train_dome_data/images/raccoon-179.jpg 1 176 270 427 0 119 | ../data/train_dome_data/images/raccoon-190.jpg 78 54 153 135 0 120 | ../data/train_dome_data/images/raccoon-162.jpg 45 34 161 184 0 121 | ../data/train_dome_data/images/raccoon-142.jpg 171 162 811 740 0 122 | ../data/train_dome_data/images/raccoon-93.jpg 66 29 233 190 0 123 | ../data/train_dome_data/images/raccoon-102.jpg 1 1 118 152 0 124 | ../data/train_dome_data/images/raccoon-45.jpg 140 6 454 370 0 125 | ../data/train_dome_data/images/raccoon-29.jpg 70 6 219 179 0 126 | ../data/train_dome_data/images/raccoon-135.jpg 99 8 605 404 0 127 | ../data/train_dome_data/images/raccoon-192.jpg 127 160 298 289 0 128 | ../data/train_dome_data/images/raccoon-72.jpg 219 195 446 375 0 98 34 284 336 0 129 | ../data/train_dome_data/images/raccoon-61.jpg 94 63 195 148 0 142 39 213 108 0 130 | ../data/train_dome_data/images/raccoon-68.jpg 1 24 517 423 0 131 | ../data/train_dome_data/images/raccoon-70.jpg 60 4 421 369 0 132 | ../data/train_dome_data/images/raccoon-51.jpg 315 105 772 540 0 133 | ../data/train_dome_data/images/raccoon-95.jpg 50 45 272 289 0 134 | ../data/train_dome_data/images/raccoon-197.jpg 114 35 987 653 0 135 | ../data/train_dome_data/images/raccoon-19.jpg 87 8 182 89 0 136 | ../data/train_dome_data/images/raccoon-110.jpg 23 2 166 262 0 137 | ../data/train_dome_data/images/raccoon-76.jpg 14 1 212 132 0 138 | ../data/train_dome_data/images/raccoon-103.jpg 92 54 460 545 0 139 | ../data/train_dome_data/images/raccoon-77.jpg 161 1 627 330 0 140 | ../data/train_dome_data/images/raccoon-176.jpg 308 90 611 426 0 103 1 314 189 0 141 | ../data/train_dome_data/images/raccoon-74.jpg 141 6 472 505 0 142 | ../data/train_dome_data/images/raccoon-69.jpg 12 11 188 240 0 143 | ../data/train_dome_data/images/raccoon-8.jpg 16 11 236 175 0 144 | ../data/train_dome_data/images/raccoon-91.jpg 22 14 216 308 0 145 | ../data/train_dome_data/images/raccoon-100.jpg 548 10 954 520 0 146 | ../data/train_dome_data/images/raccoon-26.jpg 114 5 306 337 0 147 | ../data/train_dome_data/images/raccoon-199.jpg 28 64 530 402 0 148 | ../data/train_dome_data/images/raccoon-89.jpg 18 6 225 176 0 149 | ../data/train_dome_data/images/raccoon-175.jpg 69 89 354 378 0 150 | ../data/train_dome_data/images/raccoon-6.jpg 1 44 307 316 0 151 | ../data/train_dome_data/images/raccoon-17.jpg 95 60 167 118 0 152 | ../data/train_dome_data/images/raccoon-129.jpg 142 24 442 276 0 153 | ../data/train_dome_data/images/raccoon-1.jpg 81 88 522 408 0 154 | ../data/train_dome_data/images/raccoon-118.jpg 109 31 307 297 0 155 | ../data/train_dome_data/images/raccoon-44.jpg 45 14 247 165 0 156 | ../data/train_dome_data/images/raccoon-133.jpg 8 6 476 631 0 157 | ../data/train_dome_data/images/raccoon-43.jpg 1 65 239 316 0 158 | ../data/train_dome_data/images/raccoon-16.jpg 51 178 355 632 0 159 | ../data/train_dome_data/images/raccoon-161.jpg 209 73 385 186 0 160 | ../data/train_dome_data/images/raccoon-37.jpg 13 1 500 592 0 161 | ../data/train_dome_data/images/raccoon-114.jpg 242 35 523 264 0 162 | ../data/train_dome_data/images/raccoon-64.jpg 1 1 247 194 0 163 | ../data/train_dome_data/images/raccoon-124.jpg 17 39 239 147 0 164 | ../data/train_dome_data/images/raccoon-184.jpg 81 77 567 617 0 165 | ../data/train_dome_data/images/raccoon-92.jpg 37 32 729 543 0 166 | ../data/train_dome_data/images/raccoon-173.jpg 202 21 515 387 0 167 | ../data/train_dome_data/images/raccoon-106.jpg 31 21 226 146 0 168 | ../data/train_dome_data/images/raccoon-157.jpg 1 1 144 209 0 169 | ../data/train_dome_data/images/raccoon-185.jpg 25 1 200 181 0 170 | ../data/train_dome_data/images/raccoon-155.jpg 46 91 143 169 0 171 | ../data/train_dome_data/images/raccoon-187.jpg 161 112 292 276 0 172 | ../data/train_dome_data/images/raccoon-141.jpg 1 1 154 176 0 173 | ../data/train_dome_data/images/raccoon-182.jpg 17 122 279 499 0 174 | ../data/train_dome_data/images/raccoon-121.jpg 55 34 416 377 0 175 | ../data/train_dome_data/images/raccoon-166.jpg 108 31 208 120 0 176 | ../data/train_dome_data/images/raccoon-98.jpg 108 31 351 308 0 177 | ../data/train_dome_data/images/raccoon-32.jpg 88 92 473 328 0 178 | ../data/train_dome_data/images/raccoon-132.jpg 6 2 240 131 0 179 | ../data/train_dome_data/images/raccoon-63.jpg 74 107 280 290 0 227 93 403 298 0 180 | ../data/train_dome_data/images/raccoon-101.jpg 86 53 400 356 0 181 | ../data/train_dome_data/images/raccoon-120.jpg 129 12 510 331 0 182 | ../data/train_dome_data/images/raccoon-96.jpg 28 25 203 175 0 183 | ../data/train_dome_data/images/raccoon-130.jpg 223 62 497 307 0 453 41 640 423 0 184 | ../data/train_dome_data/images/raccoon-13.jpg 55 28 393 313 0 185 | ../data/train_dome_data/images/raccoon-40.jpg 164 53 349 275 0 186 | ../data/train_dome_data/images/raccoon-66.jpg 220 37 697 440 0 187 | ../data/train_dome_data/images/raccoon-33.jpg 89 12 593 843 0 188 | ../data/train_dome_data/images/raccoon-30.jpg 78 25 182 177 0 189 | ../data/train_dome_data/images/raccoon-108.jpg 99 53 402 464 0 190 | ../data/train_dome_data/images/raccoon-86.jpg 129 34 475 401 0 191 | ../data/train_dome_data/images/raccoon-128.jpg 76 87 190 148 0 192 | ../data/train_dome_data/images/raccoon-122.jpg 7 7 174 198 0 193 | ../data/train_dome_data/images/raccoon-111.jpg 41 5 683 917 0 194 | ../data/train_dome_data/images/raccoon-177.jpg 8 18 157 178 0 146 13 263 146 0 195 | ../data/train_dome_data/images/raccoon-119.jpg 16 62 362 353 0 211 359 277 402 0 198 392 280 473 0 196 | ../data/train_dome_data/images/raccoon-67.jpg 18 17 224 168 0 197 | ../data/train_dome_data/images/raccoon-181.jpg 100 1 420 411 0 198 | ../data/train_dome_data/images/raccoon-75.jpg 1 1 640 459 0 199 | ../data/train_dome_data/images/raccoon-125.jpg 13 6 252 190 0 200 | ../data/train_dome_data/images/raccoon-167.jpg 1 5 175 195 0 201 | -------------------------------------------------------------------------------- /data/train_dome_data/new_test.txt: -------------------------------------------------------------------------------- 1 | ../data/train_dome_data/images/raccoon-120.jpg 129 12 510 331 0 2 | ../data/train_dome_data/images/raccoon-96.jpg 28 25 203 175 0 3 | ../data/train_dome_data/images/raccoon-130.jpg 223 62 497 307 0 453 41 640 423 0 4 | ../data/train_dome_data/images/raccoon-13.jpg 55 28 393 313 0 5 | ../data/train_dome_data/images/raccoon-40.jpg 164 53 349 275 0 6 | ../data/train_dome_data/images/raccoon-66.jpg 220 37 697 440 0 7 | ../data/train_dome_data/images/raccoon-33.jpg 89 12 593 843 0 8 | ../data/train_dome_data/images/raccoon-30.jpg 78 25 182 177 0 9 | ../data/train_dome_data/images/raccoon-108.jpg 99 53 402 464 0 10 | ../data/train_dome_data/images/raccoon-86.jpg 129 34 475 401 0 11 | ../data/train_dome_data/images/raccoon-128.jpg 76 87 190 148 0 12 | ../data/train_dome_data/images/raccoon-122.jpg 7 7 174 198 0 13 | ../data/train_dome_data/images/raccoon-111.jpg 41 5 683 917 0 14 | ../data/train_dome_data/images/raccoon-177.jpg 8 18 157 178 0 146 13 263 146 0 15 | ../data/train_dome_data/images/raccoon-119.jpg 16 62 362 353 0 211 359 277 402 0 198 392 280 473 0 16 | ../data/train_dome_data/images/raccoon-67.jpg 18 17 224 168 0 17 | ../data/train_dome_data/images/raccoon-181.jpg 100 1 420 411 0 18 | ../data/train_dome_data/images/raccoon-75.jpg 1 1 640 459 0 19 | ../data/train_dome_data/images/raccoon-125.jpg 13 6 252 190 0 20 | ../data/train_dome_data/images/raccoon-167.jpg 1 5 175 195 0 -------------------------------------------------------------------------------- /data/train_dome_data/new_train.txt: -------------------------------------------------------------------------------- 1 | ../data/train_dome_data/images/raccoon-163.jpg 6 7 240 157 0 2 | ../data/train_dome_data/images/raccoon-165.jpg 27 11 194 228 0 3 | ../data/train_dome_data/images/raccoon-90.jpg 44 90 577 426 0 4 | ../data/train_dome_data/images/raccoon-53.jpg 71 45 197 171 0 5 | ../data/train_dome_data/images/raccoon-160.jpg 7 42 162 197 0 6 | ../data/train_dome_data/images/raccoon-154.jpg 148 56 517 346 0 7 | ../data/train_dome_data/images/raccoon-49.jpg 162 36 611 395 0 8 | ../data/train_dome_data/images/raccoon-10.jpg 130 2 446 488 0 9 | ../data/train_dome_data/images/raccoon-21.jpg 59 2 216 171 0 10 | ../data/train_dome_data/images/raccoon-2.jpg 60 51 462 499 0 11 | ../data/train_dome_data/images/raccoon-52.jpg 105 10 502 501 0 12 | ../data/train_dome_data/images/raccoon-22.jpg 252 76 466 335 0 13 | ../data/train_dome_data/images/raccoon-131.jpg 1 1 199 184 0 14 | ../data/train_dome_data/images/raccoon-12.jpg 28 21 126 181 0 85 33 235 193 0 15 | ../data/train_dome_data/images/raccoon-35.jpg 1 1 164 183 0 16 | ../data/train_dome_data/images/raccoon-151.jpg 42 94 108 224 0 17 | ../data/train_dome_data/images/raccoon-140.jpg 6 17 202 231 0 18 | ../data/train_dome_data/images/raccoon-183.jpg 358 21 1354 1119 0 19 | ../data/train_dome_data/images/raccoon-146.jpg 4 4 271 180 0 20 | ../data/train_dome_data/images/raccoon-150.jpg 80 62 187 169 0 21 | ../data/train_dome_data/images/raccoon-136.jpg 51 24 198 192 0 22 | ../data/train_dome_data/images/raccoon-145.jpg 3 36 345 450 0 260 41 569 449 0 23 | ../data/train_dome_data/images/raccoon-105.jpg 250 49 714 869 0 24 | ../data/train_dome_data/images/raccoon-50.jpg 36 2 174 172 0 25 | ../data/train_dome_data/images/raccoon-11.jpg 3 1 461 431 0 26 | ../data/train_dome_data/images/raccoon-158.jpg 23 23 262 177 0 27 | ../data/train_dome_data/images/raccoon-134.jpg 125 87 194 169 0 28 | ../data/train_dome_data/images/raccoon-168.jpg 98 88 374 303 0 173 1 471 309 0 29 | ../data/train_dome_data/images/raccoon-34.jpg 1 2 227 194 0 30 | ../data/train_dome_data/images/raccoon-138.jpg 56 54 226 150 0 31 | ../data/train_dome_data/images/raccoon-23.jpg 108 1 258 194 0 32 | ../data/train_dome_data/images/raccoon-189.jpg 19 2 508 438 0 33 | ../data/train_dome_data/images/raccoon-156.jpg 27 27 139 243 0 34 | ../data/train_dome_data/images/raccoon-152.jpg 41 60 223 155 0 35 | ../data/train_dome_data/images/raccoon-88.jpg 116 41 526 436 0 36 | ../data/train_dome_data/images/raccoon-144.jpg 117 42 387 390 0 37 | ../data/train_dome_data/images/raccoon-79.jpg 120 1 568 425 0 38 | ../data/train_dome_data/images/raccoon-81.jpg 4 54 574 410 0 39 | ../data/train_dome_data/images/raccoon-116.jpg 3 1 436 430 0 40 | ../data/train_dome_data/images/raccoon-87.jpg 1 3 206 191 0 41 | ../data/train_dome_data/images/raccoon-4.jpg 21 11 200 183 0 42 | ../data/train_dome_data/images/raccoon-148.jpg 32 177 174 316 0 309 172 428 315 0 43 | ../data/train_dome_data/images/raccoon-193.jpg 23 215 440 831 0 44 | ../data/train_dome_data/images/raccoon-149.jpg 132 50 305 246 0 45 | ../data/train_dome_data/images/raccoon-94.jpg 155 10 543 445 0 46 | ../data/train_dome_data/images/raccoon-15.jpg 313 61 614 360 0 47 | ../data/train_dome_data/images/raccoon-153.jpg 10 1 612 700 0 48 | ../data/train_dome_data/images/raccoon-25.jpg 31 82 325 641 0 49 | ../data/train_dome_data/images/raccoon-99.jpg 15 40 132 226 0 50 | ../data/train_dome_data/images/raccoon-62.jpg 73 19 632 407 0 51 | ../data/train_dome_data/images/raccoon-14.jpg 163 81 546 438 0 52 | ../data/train_dome_data/images/raccoon-84.jpg 31 6 197 163 0 53 | ../data/train_dome_data/images/raccoon-85.jpg 236 87 598 429 0 54 | ../data/train_dome_data/images/raccoon-171.jpg 108 21 180 115 0 55 | ../data/train_dome_data/images/raccoon-172.jpg 183 53 399 302 0 56 | ../data/train_dome_data/images/raccoon-82.jpg 6 1 632 500 0 57 | ../data/train_dome_data/images/raccoon-9.jpg 10 7 347 471 0 58 | ../data/train_dome_data/images/raccoon-200.jpg 107 10 249 166 0 59 | ../data/train_dome_data/images/raccoon-178.jpg 59 12 242 180 0 60 | ../data/train_dome_data/images/raccoon-80.jpg 21 27 177 182 0 61 | ../data/train_dome_data/images/raccoon-20.jpg 2 29 720 503 0 62 | ../data/train_dome_data/images/raccoon-127.jpg 125 59 212 165 0 63 | ../data/train_dome_data/images/raccoon-36.jpg 113 27 468 428 0 64 | ../data/train_dome_data/images/raccoon-143.jpg 17 29 238 162 0 65 | ../data/train_dome_data/images/raccoon-71.jpg 129 51 628 373 0 66 | ../data/train_dome_data/images/raccoon-38.jpg 7 17 257 180 0 67 | ../data/train_dome_data/images/raccoon-59.jpg 1 2 449 432 0 68 | ../data/train_dome_data/images/raccoon-18.jpg 32 25 201 130 0 69 | ../data/train_dome_data/images/raccoon-180.jpg 119 21 368 399 0 70 | ../data/train_dome_data/images/raccoon-147.jpg 13 1 426 486 0 71 | ../data/train_dome_data/images/raccoon-164.jpg 10 27 178 184 0 72 | ../data/train_dome_data/images/raccoon-109.jpg 9 1 177 252 0 73 | ../data/train_dome_data/images/raccoon-3.jpg 1 1 720 476 0 74 | ../data/train_dome_data/images/raccoon-113.jpg 1 1 384 436 0 75 | ../data/train_dome_data/images/raccoon-55.jpg 6 49 250 320 0 274 27 563 410 0 76 | ../data/train_dome_data/images/raccoon-39.jpg 54 12 250 166 0 77 | ../data/train_dome_data/images/raccoon-54.jpg 78 5 517 333 0 78 | ../data/train_dome_data/images/raccoon-139.jpg 20 6 177 167 0 79 | ../data/train_dome_data/images/raccoon-27.jpg 14 38 592 373 0 80 | ../data/train_dome_data/images/raccoon-56.jpg 20 6 224 201 0 81 | ../data/train_dome_data/images/raccoon-60.jpg 58 33 197 127 0 82 | ../data/train_dome_data/images/raccoon-115.jpg 51 130 351 556 0 83 | ../data/train_dome_data/images/raccoon-117.jpg 100 124 266 324 0 342 101 570 297 0 84 | ../data/train_dome_data/images/raccoon-194.jpg 1 63 885 1042 0 85 | ../data/train_dome_data/images/raccoon-107.jpg 165 51 496 590 0 86 | ../data/train_dome_data/images/raccoon-170.jpg 53 27 254 173 0 87 | ../data/train_dome_data/images/raccoon-104.jpg 189 41 340 249 0 88 | ../data/train_dome_data/images/raccoon-137.jpg 71 8 304 233 0 89 | ../data/train_dome_data/images/raccoon-78.jpg 28 15 221 216 0 90 | ../data/train_dome_data/images/raccoon-97.jpg 1 32 343 307 0 91 | ../data/train_dome_data/images/raccoon-47.jpg 34 4 233 193 0 92 | ../data/train_dome_data/images/raccoon-31.jpg 82 21 187 197 0 11 55 80 145 0 93 | ../data/train_dome_data/images/raccoon-24.jpg 77 48 179 156 0 139 77 202 145 0 94 | ../data/train_dome_data/images/raccoon-83.jpg 104 3 509 369 0 95 | ../data/train_dome_data/images/raccoon-5.jpg 3 3 260 179 0 96 | ../data/train_dome_data/images/raccoon-198.jpg 57 21 158 184 0 112 32 199 158 0 97 | ../data/train_dome_data/images/raccoon-186.jpg 34 40 536 387 0 98 | ../data/train_dome_data/images/raccoon-169.jpg 194 1 549 409 0 99 | ../data/train_dome_data/images/raccoon-123.jpg 280 42 550 392 0 100 | ../data/train_dome_data/images/raccoon-126.jpg 5 5 246 192 0 101 | ../data/train_dome_data/images/raccoon-195.jpg 25 111 197 225 0 102 | ../data/train_dome_data/images/raccoon-58.jpg 2 1 199 221 0 103 | ../data/train_dome_data/images/raccoon-73.jpg 56 16 274 166 0 104 | ../data/train_dome_data/images/raccoon-46.jpg 145 2 423 318 0 105 | ../data/train_dome_data/images/raccoon-42.jpg 121 206 410 767 0 106 | ../data/train_dome_data/images/raccoon-48.jpg 43 28 240 176 0 107 | ../data/train_dome_data/images/raccoon-196.jpg 83 87 211 211 0 108 | ../data/train_dome_data/images/raccoon-112.jpg 131 174 775 563 0 109 | ../data/train_dome_data/images/raccoon-65.jpg 123 27 338 284 0 110 | ../data/train_dome_data/images/raccoon-7.jpg 92 79 271 264 0 111 | ../data/train_dome_data/images/raccoon-57.jpg 82 6 638 423 0 112 | ../data/train_dome_data/images/raccoon-188.jpg 26 71 366 334 0 113 | ../data/train_dome_data/images/raccoon-174.jpg 125 43 588 527 0 114 | ../data/train_dome_data/images/raccoon-28.jpg 93 80 601 452 0 115 | ../data/train_dome_data/images/raccoon-191.jpg 100 89 478 331 0 116 | ../data/train_dome_data/images/raccoon-159.jpg 14 11 223 221 0 117 | ../data/train_dome_data/images/raccoon-41.jpg 211 78 530 468 0 118 | ../data/train_dome_data/images/raccoon-179.jpg 1 176 270 427 0 119 | ../data/train_dome_data/images/raccoon-190.jpg 78 54 153 135 0 120 | ../data/train_dome_data/images/raccoon-162.jpg 45 34 161 184 0 121 | ../data/train_dome_data/images/raccoon-142.jpg 171 162 811 740 0 122 | ../data/train_dome_data/images/raccoon-93.jpg 66 29 233 190 0 123 | ../data/train_dome_data/images/raccoon-102.jpg 1 1 118 152 0 124 | ../data/train_dome_data/images/raccoon-45.jpg 140 6 454 370 0 125 | ../data/train_dome_data/images/raccoon-29.jpg 70 6 219 179 0 126 | ../data/train_dome_data/images/raccoon-135.jpg 99 8 605 404 0 127 | ../data/train_dome_data/images/raccoon-192.jpg 127 160 298 289 0 128 | ../data/train_dome_data/images/raccoon-72.jpg 219 195 446 375 0 98 34 284 336 0 129 | ../data/train_dome_data/images/raccoon-61.jpg 94 63 195 148 0 142 39 213 108 0 130 | ../data/train_dome_data/images/raccoon-68.jpg 1 24 517 423 0 131 | ../data/train_dome_data/images/raccoon-70.jpg 60 4 421 369 0 132 | ../data/train_dome_data/images/raccoon-51.jpg 315 105 772 540 0 133 | ../data/train_dome_data/images/raccoon-95.jpg 50 45 272 289 0 134 | ../data/train_dome_data/images/raccoon-197.jpg 114 35 987 653 0 135 | ../data/train_dome_data/images/raccoon-19.jpg 87 8 182 89 0 136 | ../data/train_dome_data/images/raccoon-110.jpg 23 2 166 262 0 137 | ../data/train_dome_data/images/raccoon-76.jpg 14 1 212 132 0 138 | ../data/train_dome_data/images/raccoon-103.jpg 92 54 460 545 0 139 | ../data/train_dome_data/images/raccoon-77.jpg 161 1 627 330 0 140 | ../data/train_dome_data/images/raccoon-176.jpg 308 90 611 426 0 103 1 314 189 0 141 | ../data/train_dome_data/images/raccoon-74.jpg 141 6 472 505 0 142 | ../data/train_dome_data/images/raccoon-69.jpg 12 11 188 240 0 143 | ../data/train_dome_data/images/raccoon-8.jpg 16 11 236 175 0 144 | ../data/train_dome_data/images/raccoon-91.jpg 22 14 216 308 0 145 | ../data/train_dome_data/images/raccoon-100.jpg 548 10 954 520 0 146 | ../data/train_dome_data/images/raccoon-26.jpg 114 5 306 337 0 147 | ../data/train_dome_data/images/raccoon-199.jpg 28 64 530 402 0 148 | ../data/train_dome_data/images/raccoon-89.jpg 18 6 225 176 0 149 | ../data/train_dome_data/images/raccoon-175.jpg 69 89 354 378 0 150 | ../data/train_dome_data/images/raccoon-6.jpg 1 44 307 316 0 151 | ../data/train_dome_data/images/raccoon-17.jpg 95 60 167 118 0 152 | ../data/train_dome_data/images/raccoon-129.jpg 142 24 442 276 0 153 | ../data/train_dome_data/images/raccoon-1.jpg 81 88 522 408 0 154 | ../data/train_dome_data/images/raccoon-118.jpg 109 31 307 297 0 155 | ../data/train_dome_data/images/raccoon-44.jpg 45 14 247 165 0 156 | ../data/train_dome_data/images/raccoon-133.jpg 8 6 476 631 0 157 | ../data/train_dome_data/images/raccoon-43.jpg 1 65 239 316 0 158 | ../data/train_dome_data/images/raccoon-16.jpg 51 178 355 632 0 159 | ../data/train_dome_data/images/raccoon-161.jpg 209 73 385 186 0 160 | ../data/train_dome_data/images/raccoon-37.jpg 13 1 500 592 0 161 | ../data/train_dome_data/images/raccoon-114.jpg 242 35 523 264 0 162 | ../data/train_dome_data/images/raccoon-64.jpg 1 1 247 194 0 163 | ../data/train_dome_data/images/raccoon-124.jpg 17 39 239 147 0 164 | ../data/train_dome_data/images/raccoon-184.jpg 81 77 567 617 0 165 | ../data/train_dome_data/images/raccoon-92.jpg 37 32 729 543 0 166 | ../data/train_dome_data/images/raccoon-173.jpg 202 21 515 387 0 167 | ../data/train_dome_data/images/raccoon-106.jpg 31 21 226 146 0 168 | ../data/train_dome_data/images/raccoon-157.jpg 1 1 144 209 0 169 | ../data/train_dome_data/images/raccoon-185.jpg 25 1 200 181 0 170 | ../data/train_dome_data/images/raccoon-155.jpg 46 91 143 169 0 171 | ../data/train_dome_data/images/raccoon-187.jpg 161 112 292 276 0 172 | ../data/train_dome_data/images/raccoon-141.jpg 1 1 154 176 0 173 | ../data/train_dome_data/images/raccoon-182.jpg 17 122 279 499 0 174 | ../data/train_dome_data/images/raccoon-121.jpg 55 34 416 377 0 175 | ../data/train_dome_data/images/raccoon-166.jpg 108 31 208 120 0 176 | ../data/train_dome_data/images/raccoon-98.jpg 108 31 351 308 0 177 | ../data/train_dome_data/images/raccoon-32.jpg 88 92 473 328 0 178 | ../data/train_dome_data/images/raccoon-132.jpg 6 2 240 131 0 179 | ../data/train_dome_data/images/raccoon-63.jpg 74 107 280 290 0 227 93 403 298 0 180 | ../data/train_dome_data/images/raccoon-101.jpg 86 53 400 356 0 181 | -------------------------------------------------------------------------------- /data/train_dome_data/test.txt: -------------------------------------------------------------------------------- 1 | ./raccoon_dataset/images/raccoon-120.jpg 129 12 510 331 0 2 | ./raccoon_dataset/images/raccoon-96.jpg 28 25 203 175 0 3 | ./raccoon_dataset/images/raccoon-130.jpg 223 62 497 307 0 453 41 640 423 0 4 | ./raccoon_dataset/images/raccoon-13.jpg 55 28 393 313 0 5 | ./raccoon_dataset/images/raccoon-40.jpg 164 53 349 275 0 6 | ./raccoon_dataset/images/raccoon-66.jpg 220 37 697 440 0 7 | ./raccoon_dataset/images/raccoon-33.jpg 89 12 593 843 0 8 | ./raccoon_dataset/images/raccoon-30.jpg 78 25 182 177 0 9 | ./raccoon_dataset/images/raccoon-108.jpg 99 53 402 464 0 10 | ./raccoon_dataset/images/raccoon-86.jpg 129 34 475 401 0 11 | ./raccoon_dataset/images/raccoon-128.jpg 76 87 190 148 0 12 | ./raccoon_dataset/images/raccoon-122.jpg 7 7 174 198 0 13 | ./raccoon_dataset/images/raccoon-111.jpg 41 5 683 917 0 14 | ./raccoon_dataset/images/raccoon-177.jpg 8 18 157 178 0 146 13 263 146 0 15 | ./raccoon_dataset/images/raccoon-119.jpg 16 62 362 353 0 211 359 277 402 0 198 392 280 473 0 16 | ./raccoon_dataset/images/raccoon-67.jpg 18 17 224 168 0 17 | ./raccoon_dataset/images/raccoon-181.jpg 100 1 420 411 0 18 | ./raccoon_dataset/images/raccoon-75.jpg 1 1 640 459 0 19 | ./raccoon_dataset/images/raccoon-125.jpg 13 6 252 190 0 20 | ./raccoon_dataset/images/raccoon-167.jpg 1 5 175 195 0 -------------------------------------------------------------------------------- /data/train_dome_data/train.txt: -------------------------------------------------------------------------------- 1 | ./raccoon_dataset/images/raccoon-163.jpg 6 7 240 157 0 2 | ./raccoon_dataset/images/raccoon-165.jpg 27 11 194 228 0 3 | ./raccoon_dataset/images/raccoon-90.jpg 44 90 577 426 0 4 | ./raccoon_dataset/images/raccoon-53.jpg 71 45 197 171 0 5 | ./raccoon_dataset/images/raccoon-160.jpg 7 42 162 197 0 6 | ./raccoon_dataset/images/raccoon-154.jpg 148 56 517 346 0 7 | ./raccoon_dataset/images/raccoon-49.jpg 162 36 611 395 0 8 | ./raccoon_dataset/images/raccoon-10.jpg 130 2 446 488 0 9 | ./raccoon_dataset/images/raccoon-21.jpg 59 2 216 171 0 10 | ./raccoon_dataset/images/raccoon-2.jpg 60 51 462 499 0 11 | ./raccoon_dataset/images/raccoon-52.jpg 105 10 502 501 0 12 | ./raccoon_dataset/images/raccoon-22.jpg 252 76 466 335 0 13 | ./raccoon_dataset/images/raccoon-131.jpg 1 1 199 184 0 14 | ./raccoon_dataset/images/raccoon-12.jpg 28 21 126 181 0 85 33 235 193 0 15 | ./raccoon_dataset/images/raccoon-35.jpg 1 1 164 183 0 16 | ./raccoon_dataset/images/raccoon-151.jpg 42 94 108 224 0 17 | ./raccoon_dataset/images/raccoon-140.jpg 6 17 202 231 0 18 | ./raccoon_dataset/images/raccoon-183.jpg 358 21 1354 1119 0 19 | ./raccoon_dataset/images/raccoon-146.jpg 4 4 271 180 0 20 | ./raccoon_dataset/images/raccoon-150.jpg 80 62 187 169 0 21 | ./raccoon_dataset/images/raccoon-136.jpg 51 24 198 192 0 22 | ./raccoon_dataset/images/raccoon-145.jpg 3 36 345 450 0 260 41 569 449 0 23 | ./raccoon_dataset/images/raccoon-105.jpg 250 49 714 869 0 24 | ./raccoon_dataset/images/raccoon-50.jpg 36 2 174 172 0 25 | ./raccoon_dataset/images/raccoon-11.jpg 3 1 461 431 0 26 | ./raccoon_dataset/images/raccoon-158.jpg 23 23 262 177 0 27 | ./raccoon_dataset/images/raccoon-134.jpg 125 87 194 169 0 28 | ./raccoon_dataset/images/raccoon-168.jpg 98 88 374 303 0 173 1 471 309 0 29 | ./raccoon_dataset/images/raccoon-34.jpg 1 2 227 194 0 30 | ./raccoon_dataset/images/raccoon-138.jpg 56 54 226 150 0 31 | ./raccoon_dataset/images/raccoon-23.jpg 108 1 258 194 0 32 | ./raccoon_dataset/images/raccoon-189.jpg 19 2 508 438 0 33 | ./raccoon_dataset/images/raccoon-156.jpg 27 27 139 243 0 34 | ./raccoon_dataset/images/raccoon-152.jpg 41 60 223 155 0 35 | ./raccoon_dataset/images/raccoon-88.jpg 116 41 526 436 0 36 | ./raccoon_dataset/images/raccoon-144.jpg 117 42 387 390 0 37 | ./raccoon_dataset/images/raccoon-79.jpg 120 1 568 425 0 38 | ./raccoon_dataset/images/raccoon-81.jpg 4 54 574 410 0 39 | ./raccoon_dataset/images/raccoon-116.jpg 3 1 436 430 0 40 | ./raccoon_dataset/images/raccoon-87.jpg 1 3 206 191 0 41 | ./raccoon_dataset/images/raccoon-4.jpg 21 11 200 183 0 42 | ./raccoon_dataset/images/raccoon-148.jpg 32 177 174 316 0 309 172 428 315 0 43 | ./raccoon_dataset/images/raccoon-193.jpg 23 215 440 831 0 44 | ./raccoon_dataset/images/raccoon-149.jpg 132 50 305 246 0 45 | ./raccoon_dataset/images/raccoon-94.jpg 155 10 543 445 0 46 | ./raccoon_dataset/images/raccoon-15.jpg 313 61 614 360 0 47 | ./raccoon_dataset/images/raccoon-153.jpg 10 1 612 700 0 48 | ./raccoon_dataset/images/raccoon-25.jpg 31 82 325 641 0 49 | ./raccoon_dataset/images/raccoon-99.jpg 15 40 132 226 0 50 | ./raccoon_dataset/images/raccoon-62.jpg 73 19 632 407 0 51 | ./raccoon_dataset/images/raccoon-14.jpg 163 81 546 438 0 52 | ./raccoon_dataset/images/raccoon-84.jpg 31 6 197 163 0 53 | ./raccoon_dataset/images/raccoon-85.jpg 236 87 598 429 0 54 | ./raccoon_dataset/images/raccoon-171.jpg 108 21 180 115 0 55 | ./raccoon_dataset/images/raccoon-172.jpg 183 53 399 302 0 56 | ./raccoon_dataset/images/raccoon-82.jpg 6 1 632 500 0 57 | ./raccoon_dataset/images/raccoon-9.jpg 10 7 347 471 0 58 | ./raccoon_dataset/images/raccoon-200.jpg 107 10 249 166 0 59 | ./raccoon_dataset/images/raccoon-178.jpg 59 12 242 180 0 60 | ./raccoon_dataset/images/raccoon-80.jpg 21 27 177 182 0 61 | ./raccoon_dataset/images/raccoon-20.jpg 2 29 720 503 0 62 | ./raccoon_dataset/images/raccoon-127.jpg 125 59 212 165 0 63 | ./raccoon_dataset/images/raccoon-36.jpg 113 27 468 428 0 64 | ./raccoon_dataset/images/raccoon-143.jpg 17 29 238 162 0 65 | ./raccoon_dataset/images/raccoon-71.jpg 129 51 628 373 0 66 | ./raccoon_dataset/images/raccoon-38.jpg 7 17 257 180 0 67 | ./raccoon_dataset/images/raccoon-59.jpg 1 2 449 432 0 68 | ./raccoon_dataset/images/raccoon-18.jpg 32 25 201 130 0 69 | ./raccoon_dataset/images/raccoon-180.jpg 119 21 368 399 0 70 | ./raccoon_dataset/images/raccoon-147.jpg 13 1 426 486 0 71 | ./raccoon_dataset/images/raccoon-164.jpg 10 27 178 184 0 72 | ./raccoon_dataset/images/raccoon-109.jpg 9 1 177 252 0 73 | ./raccoon_dataset/images/raccoon-3.jpg 1 1 720 476 0 74 | ./raccoon_dataset/images/raccoon-113.jpg 1 1 384 436 0 75 | ./raccoon_dataset/images/raccoon-55.jpg 6 49 250 320 0 274 27 563 410 0 76 | ./raccoon_dataset/images/raccoon-39.jpg 54 12 250 166 0 77 | ./raccoon_dataset/images/raccoon-54.jpg 78 5 517 333 0 78 | ./raccoon_dataset/images/raccoon-139.jpg 20 6 177 167 0 79 | ./raccoon_dataset/images/raccoon-27.jpg 14 38 592 373 0 80 | ./raccoon_dataset/images/raccoon-56.jpg 20 6 224 201 0 81 | ./raccoon_dataset/images/raccoon-60.jpg 58 33 197 127 0 82 | ./raccoon_dataset/images/raccoon-115.jpg 51 130 351 556 0 83 | ./raccoon_dataset/images/raccoon-117.jpg 100 124 266 324 0 342 101 570 297 0 84 | ./raccoon_dataset/images/raccoon-194.jpg 1 63 885 1042 0 85 | ./raccoon_dataset/images/raccoon-107.jpg 165 51 496 590 0 86 | ./raccoon_dataset/images/raccoon-170.jpg 53 27 254 173 0 87 | ./raccoon_dataset/images/raccoon-104.jpg 189 41 340 249 0 88 | ./raccoon_dataset/images/raccoon-137.jpg 71 8 304 233 0 89 | ./raccoon_dataset/images/raccoon-78.jpg 28 15 221 216 0 90 | ./raccoon_dataset/images/raccoon-97.jpg 1 32 343 307 0 91 | ./raccoon_dataset/images/raccoon-47.jpg 34 4 233 193 0 92 | ./raccoon_dataset/images/raccoon-31.jpg 82 21 187 197 0 11 55 80 145 0 93 | ./raccoon_dataset/images/raccoon-24.jpg 77 48 179 156 0 139 77 202 145 0 94 | ./raccoon_dataset/images/raccoon-83.jpg 104 3 509 369 0 95 | ./raccoon_dataset/images/raccoon-5.jpg 3 3 260 179 0 96 | ./raccoon_dataset/images/raccoon-198.jpg 57 21 158 184 0 112 32 199 158 0 97 | ./raccoon_dataset/images/raccoon-186.jpg 34 40 536 387 0 98 | ./raccoon_dataset/images/raccoon-169.jpg 194 1 549 409 0 99 | ./raccoon_dataset/images/raccoon-123.jpg 280 42 550 392 0 100 | ./raccoon_dataset/images/raccoon-126.jpg 5 5 246 192 0 101 | ./raccoon_dataset/images/raccoon-195.jpg 25 111 197 225 0 102 | ./raccoon_dataset/images/raccoon-58.jpg 2 1 199 221 0 103 | ./raccoon_dataset/images/raccoon-73.jpg 56 16 274 166 0 104 | ./raccoon_dataset/images/raccoon-46.jpg 145 2 423 318 0 105 | ./raccoon_dataset/images/raccoon-42.jpg 121 206 410 767 0 106 | ./raccoon_dataset/images/raccoon-48.jpg 43 28 240 176 0 107 | ./raccoon_dataset/images/raccoon-196.jpg 83 87 211 211 0 108 | ./raccoon_dataset/images/raccoon-112.jpg 131 174 775 563 0 109 | ./raccoon_dataset/images/raccoon-65.jpg 123 27 338 284 0 110 | ./raccoon_dataset/images/raccoon-7.jpg 92 79 271 264 0 111 | ./raccoon_dataset/images/raccoon-57.jpg 82 6 638 423 0 112 | ./raccoon_dataset/images/raccoon-188.jpg 26 71 366 334 0 113 | ./raccoon_dataset/images/raccoon-174.jpg 125 43 588 527 0 114 | ./raccoon_dataset/images/raccoon-28.jpg 93 80 601 452 0 115 | ./raccoon_dataset/images/raccoon-191.jpg 100 89 478 331 0 116 | ./raccoon_dataset/images/raccoon-159.jpg 14 11 223 221 0 117 | ./raccoon_dataset/images/raccoon-41.jpg 211 78 530 468 0 118 | ./raccoon_dataset/images/raccoon-179.jpg 1 176 270 427 0 119 | ./raccoon_dataset/images/raccoon-190.jpg 78 54 153 135 0 120 | ./raccoon_dataset/images/raccoon-162.jpg 45 34 161 184 0 121 | ./raccoon_dataset/images/raccoon-142.jpg 171 162 811 740 0 122 | ./raccoon_dataset/images/raccoon-93.jpg 66 29 233 190 0 123 | ./raccoon_dataset/images/raccoon-102.jpg 1 1 118 152 0 124 | ./raccoon_dataset/images/raccoon-45.jpg 140 6 454 370 0 125 | ./raccoon_dataset/images/raccoon-29.jpg 70 6 219 179 0 126 | ./raccoon_dataset/images/raccoon-135.jpg 99 8 605 404 0 127 | ./raccoon_dataset/images/raccoon-192.jpg 127 160 298 289 0 128 | ./raccoon_dataset/images/raccoon-72.jpg 219 195 446 375 0 98 34 284 336 0 129 | ./raccoon_dataset/images/raccoon-61.jpg 94 63 195 148 0 142 39 213 108 0 130 | ./raccoon_dataset/images/raccoon-68.jpg 1 24 517 423 0 131 | ./raccoon_dataset/images/raccoon-70.jpg 60 4 421 369 0 132 | ./raccoon_dataset/images/raccoon-51.jpg 315 105 772 540 0 133 | ./raccoon_dataset/images/raccoon-95.jpg 50 45 272 289 0 134 | ./raccoon_dataset/images/raccoon-197.jpg 114 35 987 653 0 135 | ./raccoon_dataset/images/raccoon-19.jpg 87 8 182 89 0 136 | ./raccoon_dataset/images/raccoon-110.jpg 23 2 166 262 0 137 | ./raccoon_dataset/images/raccoon-76.jpg 14 1 212 132 0 138 | ./raccoon_dataset/images/raccoon-103.jpg 92 54 460 545 0 139 | ./raccoon_dataset/images/raccoon-77.jpg 161 1 627 330 0 140 | ./raccoon_dataset/images/raccoon-176.jpg 308 90 611 426 0 103 1 314 189 0 141 | ./raccoon_dataset/images/raccoon-74.jpg 141 6 472 505 0 142 | ./raccoon_dataset/images/raccoon-69.jpg 12 11 188 240 0 143 | ./raccoon_dataset/images/raccoon-8.jpg 16 11 236 175 0 144 | ./raccoon_dataset/images/raccoon-91.jpg 22 14 216 308 0 145 | ./raccoon_dataset/images/raccoon-100.jpg 548 10 954 520 0 146 | ./raccoon_dataset/images/raccoon-26.jpg 114 5 306 337 0 147 | ./raccoon_dataset/images/raccoon-199.jpg 28 64 530 402 0 148 | ./raccoon_dataset/images/raccoon-89.jpg 18 6 225 176 0 149 | ./raccoon_dataset/images/raccoon-175.jpg 69 89 354 378 0 150 | ./raccoon_dataset/images/raccoon-6.jpg 1 44 307 316 0 151 | ./raccoon_dataset/images/raccoon-17.jpg 95 60 167 118 0 152 | ./raccoon_dataset/images/raccoon-129.jpg 142 24 442 276 0 153 | ./raccoon_dataset/images/raccoon-1.jpg 81 88 522 408 0 154 | ./raccoon_dataset/images/raccoon-118.jpg 109 31 307 297 0 155 | ./raccoon_dataset/images/raccoon-44.jpg 45 14 247 165 0 156 | ./raccoon_dataset/images/raccoon-133.jpg 8 6 476 631 0 157 | ./raccoon_dataset/images/raccoon-43.jpg 1 65 239 316 0 158 | ./raccoon_dataset/images/raccoon-16.jpg 51 178 355 632 0 159 | ./raccoon_dataset/images/raccoon-161.jpg 209 73 385 186 0 160 | ./raccoon_dataset/images/raccoon-37.jpg 13 1 500 592 0 161 | ./raccoon_dataset/images/raccoon-114.jpg 242 35 523 264 0 162 | ./raccoon_dataset/images/raccoon-64.jpg 1 1 247 194 0 163 | ./raccoon_dataset/images/raccoon-124.jpg 17 39 239 147 0 164 | ./raccoon_dataset/images/raccoon-184.jpg 81 77 567 617 0 165 | ./raccoon_dataset/images/raccoon-92.jpg 37 32 729 543 0 166 | ./raccoon_dataset/images/raccoon-173.jpg 202 21 515 387 0 167 | ./raccoon_dataset/images/raccoon-106.jpg 31 21 226 146 0 168 | ./raccoon_dataset/images/raccoon-157.jpg 1 1 144 209 0 169 | ./raccoon_dataset/images/raccoon-185.jpg 25 1 200 181 0 170 | ./raccoon_dataset/images/raccoon-155.jpg 46 91 143 169 0 171 | ./raccoon_dataset/images/raccoon-187.jpg 161 112 292 276 0 172 | ./raccoon_dataset/images/raccoon-141.jpg 1 1 154 176 0 173 | ./raccoon_dataset/images/raccoon-182.jpg 17 122 279 499 0 174 | ./raccoon_dataset/images/raccoon-121.jpg 55 34 416 377 0 175 | ./raccoon_dataset/images/raccoon-166.jpg 108 31 208 120 0 176 | ./raccoon_dataset/images/raccoon-98.jpg 108 31 351 308 0 177 | ./raccoon_dataset/images/raccoon-32.jpg 88 92 473 328 0 178 | ./raccoon_dataset/images/raccoon-132.jpg 6 2 240 131 0 179 | ./raccoon_dataset/images/raccoon-63.jpg 74 107 280 290 0 227 93 403 298 0 180 | ./raccoon_dataset/images/raccoon-101.jpg 86 53 400 356 0 181 | -------------------------------------------------------------------------------- /screenshot/frames_2019-03-29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/screenshot/frames_2019-03-29.jpg -------------------------------------------------------------------------------- /screenshot/raccoon-107.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/screenshot/raccoon-107.jpg -------------------------------------------------------------------------------- /screenshot/raccoon-12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/screenshot/raccoon-12.jpg -------------------------------------------------------------------------------- /train_demo/pic/raccoon1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/train_demo/pic/raccoon1.jpg -------------------------------------------------------------------------------- /train_demo/pic/raccoon2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opensourceai/yolov3-tensorflow-cn/2e41fb40cd2a2c8f60152cf51be6b657b9aadb1a/train_demo/pic/raccoon2.jpg -------------------------------------------------------------------------------- /train_demo/pic_visu.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | from PIL import Image 4 | import os 5 | 6 | file_name = "../data/train_dome_data/images/raccoon-107.jpg" 7 | assert os.path.isfile(file_name) == True and os.path.isfile("../data/train_dome_data/new_labels.txt") 8 | data = open("../data/train_dome_data/new_labels.txt").readlines() 9 | for i in range(len(data)): 10 | image_info = data[i].split() 11 | if image_info[0] == file_name: break 12 | 13 | image = cv2.imread(image_info[0]) 14 | n_box = len(image_info[1:]) // 5 # xmin, ymin, xmax, ymax, id 15 | for i in range(n_box): 16 | image = cv2.rectangle(image, (int(float(image_info[1 + i * 5])), 17 | int(float(image_info[2 + i * 5]))), 18 | (int(float(image_info[3 + i * 5])), 19 | int(float(image_info[4 + i * 5]))), (255, 0, 0), 2) 20 | image = Image.fromarray(np.uint8(image)).resize((int(194 / image.shape[0] * image.shape[1]), 194)) 21 | # print("../screenshot/" + file_name.split("/")[-1]) 22 | image.save("../screenshot/" + file_name.split("/")[-1]) 23 | image.show() 24 | -------------------------------------------------------------------------------- /train_demo/quick_train.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | from core import utils, yolov3 3 | from core.dataset import dataset, Parser 4 | 5 | sess = tf.Session() 6 | 7 | IMAGE_H, IMAGE_W = 416, 416 8 | BATCH_SIZE = 8 9 | STEPS = 2500 10 | LR = 0.001 # if Nan, set 0.0005, 0.0001 11 | DECAY_STEPS = 100 12 | DECAY_RATE = 0.9 13 | SHUFFLE_SIZE = 200 14 | CLASSES = utils.read_coco_names('../data/raccoon.names') 15 | ANCHORS = utils.get_anchors('../data/raccoon_anchors.txt', IMAGE_H, IMAGE_W) 16 | NUM_CLASSES = len(CLASSES) 17 | EVAL_INTERNAL = 100 18 | SAVE_INTERNAL = 500 19 | 20 | train_tfrecord = "../data/train_dome_data/images_train.tfrecords" 21 | test_tfrecord = "../data/train_dome_data/images_test.tfrecords" 22 | 23 | parser = Parser(IMAGE_H, IMAGE_W, ANCHORS, NUM_CLASSES) 24 | trainset = dataset(parser, train_tfrecord, BATCH_SIZE, shuffle=SHUFFLE_SIZE) 25 | testset = dataset(parser, test_tfrecord, BATCH_SIZE, shuffle=None) 26 | 27 | is_training = tf.placeholder(tf.bool) 28 | example = tf.cond(is_training, lambda: trainset.get_next(), lambda: testset.get_next()) 29 | 30 | # y_true = [feature_map_1 , feature_map_2 , feature_map_3] 31 | images, *y_true = example # a,*c = 1,2,3,4 a=1, c = [2,3,4] 32 | model = yolov3.yolov3(NUM_CLASSES, ANCHORS) 33 | 34 | with tf.variable_scope('yolov3'): 35 | pred_feature_map = model.forward(images, is_training=is_training) 36 | loss = model.compute_loss(pred_feature_map, y_true) # 计算loss值 37 | y_pred = model.predict(pred_feature_map) 38 | 39 | tf.summary.scalar("loss/coord_loss", loss[1]) 40 | tf.summary.scalar("loss/sizes_loss", loss[2]) 41 | tf.summary.scalar("loss/confs_loss", loss[3]) 42 | tf.summary.scalar("loss/class_loss", loss[4]) 43 | 44 | global_step = tf.Variable(0, trainable=False, 45 | collections=[tf.GraphKeys.LOCAL_VARIABLES]) # 把变量添加到集合tf.GraphKeys.LOCAL_VARIABLES中 46 | write_op = tf.summary.merge_all() 47 | writer_train = tf.summary.FileWriter("../data/train_dome_data/log/train") 48 | writer_test = tf.summary.FileWriter("../data/train_dome_data/log/test") 49 | 50 | # a1 = tf.contrib.framework.get_variables_to_restore(include=["yolov3/darknet-53"]) 51 | # 等价与 52 | # a2 = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope="yolov3/darknet-53") 53 | # print(a1 == a2) 54 | # exit() 55 | # 恢复darknet-53特征提取器的权重参数, 只更新yolo-v3目标预测部分参数. 56 | saver_to_restore = tf.train.Saver( 57 | var_list=tf.contrib.framework.get_variables_to_restore(include=["yolov3/darknet-53"])) # 固定特征提取器 58 | update_vars = tf.contrib.framework.get_variables_to_restore(include=["yolov3/yolo-v3"]) 59 | # 每一百次降低一次学习率, 学习率衰减 60 | learning_rate = tf.train.exponential_decay(LR, global_step, decay_steps=DECAY_STEPS, decay_rate=DECAY_RATE, 61 | staircase=True) 62 | optimizer = tf.train.AdamOptimizer(learning_rate) 63 | 64 | # set dependencies for BN ops 设置BN操作的依赖关系 65 | update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS) 66 | with tf.control_dependencies(update_ops): # 在更新网络参数是,进行BN方差.等参数的更新 67 | train_op = optimizer.minimize(loss[0], var_list=update_vars, global_step=global_step) 68 | 69 | sess.run([tf.global_variables_initializer(), tf.local_variables_initializer()]) 70 | saver_to_restore.restore(sess, "../data/checkpoint/yolov3.ckpt") 71 | saver = tf.train.Saver(max_to_keep=2) 72 | 73 | for step in range(STEPS): 74 | run_items = sess.run([train_op, write_op, y_pred, y_true] + loss, feed_dict={is_training: True}) 75 | 76 | # if (step + 1) % EVAL_INTERNAL == 0: 77 | if True: 78 | # run_items[2] : boxes [Batch_size,10647,4], confs , probs 79 | # run_items[3] : feature_map_1 , feature_map_2 , feature_map_3 80 | train_rec_value, train_prec_value = utils.evaluate(run_items[2], run_items[3]) # 放回查全率, 精确率 81 | 82 | # 写入日志 83 | writer_train.add_summary(run_items[1], global_step=step) 84 | writer_train.flush() # Flushes the event file to disk 将事件文件刷新到磁盘 85 | # 保存模型 86 | if (step + 1) % SAVE_INTERNAL == 0: saver.save(sess, save_path="../data/train_dome_data/model/cpk", 87 | global_step=step + 1) 88 | 89 | print("=> STEP %10d [TRAIN]:\tloss_xy:%7.4f \tloss_wh:%7.4f \tloss_conf:%7.4f \tloss_class:%7.4f" 90 | % (step + 1, run_items[5], run_items[6], run_items[7], run_items[8])) 91 | 92 | run_items = sess.run([write_op, y_pred, y_true] + loss, feed_dict={is_training: False}) 93 | if (step + 1) % EVAL_INTERNAL == 0: 94 | test_rec_value, test_prec_value = utils.evaluate(run_items[1], run_items[2]) 95 | print("\n=======================> evaluation result <================================\n") 96 | print("=> STEP %10d [TRAIN]:\trecall:%7.4f \tprecision:%7.4f" % (step + 1, train_rec_value, train_prec_value)) 97 | print("=> STEP %10d [VALID]:\trecall:%7.4f \tprecision:%7.4f" % (step + 1, test_rec_value, test_prec_value)) 98 | print("\n=======================> evaluation result <================================\n") 99 | 100 | writer_test.add_summary(run_items[0], global_step=step) 101 | writer_test.flush() # Flushes the event file to disk 写入磁盘 102 | -------------------------------------------------------------------------------- /train_demo/show_image_from_tfrecord.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | import tensorflow as tf 4 | from core import utils 5 | from PIL import Image 6 | from core.dataset import Parser, dataset 7 | 8 | sess = tf.Session() 9 | 10 | IMAGE_H, IMAGE_W = 416, 416 11 | BATCH_SIZE = 1 12 | SHUFFLE_SIZE = 1 13 | 14 | train_tfrecord = "../data/train_dome_data/images_train.tfrecords" 15 | anchors = utils.get_anchors('../data/raccoon_anchors.txt', IMAGE_H, IMAGE_W) 16 | classes = utils.read_coco_names('../data/raccoon.names') 17 | # print(classes) 18 | num_classes = len(classes) # 识别的种类 19 | 20 | parser = Parser(IMAGE_H, IMAGE_W, anchors, num_classes, debug=True) 21 | trainset = dataset(parser, train_tfrecord, BATCH_SIZE, shuffle=SHUFFLE_SIZE) 22 | 23 | is_training = tf.placeholder(tf.bool) 24 | example = trainset.get_next() 25 | 26 | for l in range(1): 27 | image, boxes = sess.run(example) 28 | # print(image) 29 | # print(sess.run(example)) 30 | image, boxes = image[0], boxes[0] 31 | 32 | n_box = len(boxes) 33 | for i in range(n_box): 34 | image = cv2.rectangle(image, (int(float(boxes[i][0])), 35 | int(float(boxes[i][1]))), 36 | (int(float(boxes[i][2])), 37 | int(float(boxes[i][3]))), (255, 0, 0), 1) 38 | label = classes[boxes[i][4]] 39 | image = cv2.putText(image, label, (int(float(boxes[i][0])), int(float(boxes[i][1]))), 40 | cv2.FONT_HERSHEY_SIMPLEX, .6, (0, 255, 0), 2) 41 | 42 | image = Image.fromarray(np.uint8(image)) 43 | image.show() 44 | -------------------------------------------------------------------------------- /train_demo/show_trained_result.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | from core import utils, yolov3 3 | import cv2 4 | from PIL import Image 5 | import numpy as np 6 | 7 | input_image = "../data/train_dome_data/images/raccoon-4.jpg" 8 | image = Image.open(input_image) 9 | # image = cv2.imread(input_image) 10 | # image = Image.fromarray(image) 11 | image_resize = cv2.resize(np.array(image) / 255., (416, 416)) 12 | image_place = tf.placeholder(dtype=tf.float32, shape=(None, 416, 416, 3)) 13 | CLASSES = utils.read_coco_names('../data/raccoon.names') 14 | ANCHORE = utils.get_anchors("../data/raccoon_anchors.txt", 416, 416) 15 | model = yolov3.yolov3(len(CLASSES), ANCHORE) 16 | with tf.variable_scope('yolov3'): 17 | pred_feature_map = model.forward(image_place, is_training=False) 18 | pred = model.predict(pred_feature_map) 19 | sess = tf.Session() 20 | saver = tf.train.Saver() 21 | model_dir = tf.train.latest_checkpoint("../data/train_dome_data/model/") 22 | saver.restore(sess, model_dir) 23 | boxes, confs, prods = sess.run(pred, feed_dict={image_place: np.expand_dims(image_resize, 0)}) 24 | boxes, confs, prods = utils.cpu_nms(boxes, confs * prods, len(CLASSES)) 25 | utils.draw_boxes(image, boxes, confs, prods, CLASSES, (416, 416), "../data/font/HuaWenXinWei-1.ttf") 26 | print(boxes, confs, prods) 27 | -------------------------------------------------------------------------------- /video_dome.py: -------------------------------------------------------------------------------- 1 | import time 2 | import numpy as np 3 | import tensorflow as tf 4 | from PIL import Image 5 | from core import utils 6 | import cv2 7 | import argparse 8 | 9 | IMAGE_H, IMAGE_W = 416, 416 10 | parser = argparse.ArgumentParser(description="gpu模式下不能设置score_thresh和iou_thresh") 11 | parser.add_argument("--video_id", "-vi", default=0, help="传入相机的id,可以是图片,视频,网络摄像头(eg:http://admin:admin@ip:端口/") 12 | parser.add_argument("--model", "-m", default="cpu", choices=["cpu", "gpu"], help="选择gpu中运行还是在cpu中运行") 13 | parser.add_argument("--score_thresh", "-st", default=0.5, type=float, help="设置score_thresh值,越高所获得的box越少(仅在cpu模式下生效)") 14 | parser.add_argument("--iou_thresh", "-it", default=0.5, type=float, help="设置score_thresh值,越高所获得的box越少(仅在cpu模式下生效)") 15 | flags = parser.parse_args() 16 | 17 | classes = utils.read_coco_names('./data/coco.names') 18 | num_classes = len(classes) 19 | graph = tf.Graph() 20 | if flags.model == "cpu": 21 | input_tensor, output_tensors = utils.read_pb_return_tensors(graph, "data/checkpoint/yolov3_cpu_nms.pb", 22 | ["Placeholder:0", "concat_9:0", "mul_6:0"]) 23 | else: 24 | input_tensor, output_tensors = utils.read_pb_return_tensors(graph, "data/checkpoint/yolov3_gpu_nms.pb", 25 | ["Placeholder:0", "concat_10:0", "concat_11:0", 26 | "concat_12:0"]) 27 | 28 | with tf.Session(graph=graph) as sess: 29 | vid = cv2.VideoCapture(flags.video_id) 30 | while True: 31 | return_value, frame = vid.read() 32 | if return_value: 33 | frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) 34 | image = Image.fromarray(frame) 35 | else: 36 | raise ValueError("No image!") 37 | img_resized = np.array(image.resize(size=(IMAGE_H, IMAGE_W)), dtype=np.float32) 38 | img_resized = img_resized / 255. 39 | prev_time = time.time() 40 | 41 | # 从模型中获取结果 42 | if flags.model == "cpu": 43 | boxes, scores = sess.run(output_tensors, feed_dict={input_tensor: np.expand_dims(img_resized, axis=0)}) 44 | boxes, scores, labels = utils.cpu_nms(boxes, scores, num_classes, score_thresh=0.4, iou_thresh=0.5) 45 | 46 | else: 47 | boxes, scores, labels = sess.run(output_tensors, 48 | feed_dict={input_tensor: np.expand_dims(img_resized, axis=0)}) 49 | 50 | # 在图中进行标记 51 | image = utils.draw_boxes(image, boxes, scores, labels, classes, (IMAGE_H, IMAGE_W), show=False) 52 | image = utils.draw_Chinese(image, "按q退出", (0, 35)) 53 | image = utils.draw_Chinese(image, "按k截图", (0, 55)) 54 | curr_time = time.time() 55 | exec_time = curr_time - prev_time 56 | result = np.asarray(image) 57 | info = "time: %.2f ms" % (1000 * exec_time) 58 | cv2.putText(result, text=info, org=(0, 25), fontFace=cv2.FONT_HERSHEY_SIMPLEX, 59 | fontScale=1, color=(255, 0, 0), thickness=2) 60 | 61 | cv2.namedWindow("result", cv2.WINDOW_AUTOSIZE) 62 | result = cv2.cvtColor(result, cv2.COLOR_RGB2BGR) 63 | cv2.imshow("result", result) 64 | 65 | keyboard = cv2.waitKey(10) 66 | # 按"k"进行截图 67 | if keyboard & 0xFF == ord('k'): 68 | now = int(round(time.time() * 1000)) 69 | now02 = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now / 1000)) 70 | filename = "screenshot/frames_%s.jpg" % now02 71 | cv2.imwrite(filename, result) 72 | # 按"q"退出 73 | if keyboard & 0xFF == ord('q'): break 74 | --------------------------------------------------------------------------------