我正在尝试通过使用darkflow
创建带有标记注释和图像的文件来创建yolov3.cfg
文件和yolov3.weights
文件来训练我的自定义数据集。但是当我尝试运行tfnet = TFNet(history)
时,它会抛出"未定义退出"的错误。
我已通过以下步骤安装了darkflow
:
在蟒蛇提示符中:
git clone https://github.com/thtrieu/darkflow.git
cd darkflow
python3 setup.py build_ext –inplace
pip install
然后:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import cv2
from darkflow.net.build import TFNet
history = {"model": "C:/Users/Business Intelli/Desktop/Object-Detection/Dataset/yolov3.cfg",
"load": "C:/Users/Business Intelli/Desktop/Object-Detection/Dataset/yolov3.weights",
"batch": 8,
"epoch": 50,
"gpu": 1.0,
"train": True,
"annotation": "C:/Users/Business Intelli/Desktop/Object-Detection/Dataser/Stumps",
"dataset": "C:/Users/Business Intelli/Desktop/Object-Detection/Dataser/Stumps"}
tfnet = TFNet(history)
Parsing C:/Users/Business Intelli/Desktop/Object-Detection/Dataset/yolov3.cfg
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-10-6f6b945047c5> in <module>
----> 1 tfnet = TFNet(history)
~Anaconda3libsite-packagesdarkflownetbuild.py in __init__(self, FLAGS, darknet)
56
57 if darknet is None:
---> 58 darknet = Darknet(FLAGS)
59 self.ntrain = len(darknet.layers)
60
~Anaconda3libsite-packagesdarkflowdarkdarknet.py in __init__(self, FLAGS)
15
16 print('Parsing {}'.format(self.src_cfg))
---> 17 src_parsed = self.parse_cfg(self.src_cfg, FLAGS)
18 self.src_meta, self.src_layers = src_parsed
19
~Anaconda3libsite-packagesdarkflowdarkdarknet.py in parse_cfg(self, model, FLAGS)
66 cfg_layers = cfg_yielder(*args)
67 meta = dict(); layers = list()
---> 68 for i, info in enumerate(cfg_layers):
69 if i == 0: meta = info; continue
70 else: new = create_darkop(*info)
~Anaconda3libsite-packagesdarkflowutilsprocess.py in cfg_yielder(model, binary)
314 #-----------------------------------------------------
315 else:
--> 316 exit('Layer {} not
implemented'.format(d['type']))
317
318 d['_size'] = list([h, w, c, l, flat])
NameError: name 'exit' is not defined
所以我遇到了同样的问题,问题出在 process.py 暗流 --> utils 文件夹。
显然 exit() 方法不是内置的,所以你必须在process.py中添加这一行
从系统导入出口
注意:如果你的代码达到这一点,这意味着模型无法读取层。我为 yolov3 下载的权重文件给了我同样的麻烦,我找不到一个链接,其中包含适用于 darkflow 的 yolov3 的合适权重文件。所以我不得不坚持使用yolo.cfg和yolo.weights。