在本地跑 GroundingDINO 代碼 (github)
首先down下來(lái)代碼:git clone https://github.com/IDEA-Research/GroundingDINO.git
然后跟著 readme 走,先下載預(yù)訓(xùn)練參數(shù)放到 ./weight 文件夾:mkdir weights
cd weights
wget -q https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth
然后新開(kāi)一個(gè) py 文件,復(fù)制 readme 上的代碼運(yùn)行:
from groundingdino.util.inference import load_model, load_image, predict, annotate
import cv2
model = load_model("groundingdino/config/GroundingDINO_SwinT_OGC.py", "weights/groundingdino_swint_ogc.pth")
IMAGE_PATH = "weights/dog-3.jpeg"
TEXT_PROMPT = "chair . person . dog ."
BOX_TRESHOLD = 0.35
TEXT_TRESHOLD = 0.25
image_source, image = load_image(IMAGE_PATH)
boxes, logits, phrases = predict(
model=model,
image=image,
caption=TEXT_PROMPT,
box_threshold=BOX_TRESHOLD,
text_threshold=TEXT_TRESHOLD
)
annotated_frame = annotate(image_source=image_source, boxes=boxes, logits=logits, phrases=phrases)
cv2.imwrite("annotated_image.jpg", annotated_frame)
然后報(bào)錯(cuò)和 debug,這個(gè)錯(cuò)誤都是普適性錯(cuò)誤,第二次犯了,所以記錄下來(lái),防止再犯
NameError: name ‘_C’ is not defined
省流
運(yùn)行pip3 install -q -e .
詳細(xì)過(guò)程
之前跑另一個(gè)模型的時(shí)候也遇到這個(gè)問(wèn)題,勉強(qiáng)記得是因?yàn)闆](méi)有編譯模型。down 下來(lái)的代碼有個(gè) setup.py
文件,于是我嘗試運(yùn)行:python setup.py
但是報(bào)錯(cuò):error: no commands supplied
然后發(fā)現(xiàn)后面應(yīng)該加上 build 或者 install,所以我重新運(yùn)行:python setup.py install
python setup.py build
但是還是不行,還是報(bào)錯(cuò)
查到大家在討論這個(gè)問(wèn)題:NameError: name ‘_C’ is not defined
說(shuō)應(yīng)該設(shè)置環(huán)境變量 CUDA_HOME,原因是,查 setup 代碼:
if CUDA_HOME is not None and (torch.cuda.is_available() or "TORCH_CUDA_ARCH_LIST" in os.environ):
print("Compiling with CUDA")
extension = CUDAExtension
sources += source_cuda
define_macros += [("WITH_CUDA", None)]
extra_compile_args["nvcc"] = [
"-DCUDA_HAS_FP16=1",
"-D__CUDA_NO_HALF_OPERATORS__",
"-D__CUDA_NO_HALF_CONVERSIONS__",
"-D__CUDA_NO_HALF2_OPERATORS__",
]
但是確實(shí)打印了 Compiling with CUDA,但是還是沒(méi)有那個(gè)重要的 _C
然后重新看了下 readme 怎么寫(xiě)的,發(fā)現(xiàn)有一步是:pip3 install -q -e .
這步我當(dāng)時(shí)跳過(guò)了,因?yàn)槲冶镜赜幸粋€(gè)已經(jīng)配置好的環(huán)境,需要的包都裝好了,想著不用 install 了反而把已經(jīng)配置好的版本弄亂了,沒(méi)想到就是這句話決定了一切 orz文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-580174.html
結(jié)論:要遵循 readme 寫(xiě)的來(lái)做,不然人家為啥那么寫(xiě)呢。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-580174.html
到了這里,關(guān)于debug: NameError: name ‘_C‘ is not defined 本地運(yùn)行 GroundingDINO 代碼 debug 記錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!