anaconda能跑c语言哪,anaconda环境下实现SiamCAR
【一】從github上下載代碼
image.png
【二】通過conda進入項目
image.png
image.png
image.png
根據官方提供步驟,使用命令配置環境。
由于大部分模塊我已經安裝好,直接根據requirement.txt提示安裝相對應的模塊就行。
因此使用pip install XXX 安裝原來環境中沒有的模塊
【三】下載模型和數據集json文件
image.png
模型下載好后,項目文件下新建snapshot
image.png
數據集json文件下載后可以存放在pretrained_models下
image.png
文檔訓練提供的代碼訓練的是UAV123數據集,因此下載UAV123數據集。
UAV123總共有13G,如果只是測試用,只用下最小的那個壓縮包(1.8G)。
這篇博文中有下載地址:https://blog.csdn.net/sinat_27318881/article/details/85211053
image.png
打開UAV123目錄下的data_seq
image.png
然后隨便選一個數據集,我選的是bike1
image.png
在SiamCAR同級目錄下新建testing_dataset。
image.png
在testing_dataset新建文件夾UAV123,放入UAV123數據集和json文件
image.png
修改UAV123.json文件
只測試bike1這個序列集,因此在UAV123.json中找到bike1
image.png
把bike1相關數據復制另存為一份新的json,并命名為UAV123.json,新保存的json文件一定要包含以下幾個屬性
image.png
為了提高測試速度,特地刪了bike1文件下的圖片,只保留了200張,因此,UAV123.json中的img_names也只保留200張圖片名
以下為更改后文件夾目錄
image.png
【四】運行
把tools下test.py復制一份到SiamCAR-master/test.py
[圖片上傳中...(image.png-44d81c-1602570317165-0)]
image.png
運行時在官網提供文檔的命令后面再加上 --vis 顯示出視頻
image.png
image.png
【五】利用該算法跑自己的視頻
1.注釋創建數據集的方法,復制test.py命名為test2.py,即SiamCAR-master/test2.py
image.png
2.用cv的方法讀取視頻幀,然后循環遍歷幀,為每一幀畫框
# 讀視頻 分割成幀
videoFile = 'E:/lqj/testing_dataset/garbage/garbage.mp4'
capture = cv2.VideoCapture(videoFile)
height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT) # 視頻高度
width = capture.get(cv2.CAP_PROP_FRAME_WIDTH) # 視頻寬度
count = capture.get(cv2.CAP_PROP_FRAME_COUNT) # 視頻總幀數
fps = capture.get(cv2.CAP_PROP_FPS) # 視頻幀率
print("count is %d , fps is %d " % (count, fps))
out = cv2.VideoWriter('E:/lqj/testing_dataset/garbage/garbage_new.mp4', cv2.VideoWriter_fourcc('D', 'I', 'V', 'X'),
15, (np.int(width), np.int(height)), True)
out_path = 'E:/lqj/testing_dataset/garbage/output/'
if not os.path.isdir(out_path):
os.makedirs(out_path)
frameNum = 0
model_name = args.snapshot.split('/')[-2] + str(hp['lr']) + '_' + str(hp['penalty_k']) + '_' + str(hp['window_lr'])
i = 0
#初始第一幀圖片的位置和大小
gt_bbox = [540, 0, 41, 45]
while True:
ret, frame = capture.read()
#給將每一幀圖片畫框
img = frame
toc = 0
pred_bboxes = []
track_times = []
tic = cv2.getTickCount()
if i == 0:
cx, cy, w, h = get_axis_aligned_bbox(np.array(gt_bbox))
gt_bbox_ = [cx - (w - 1) / 2, cy - (h - 1) / 2, w, h]
tracker.init(img, gt_bbox_)
pred_bbox = gt_bbox_
pred_bboxes.append(pred_bbox)
else:
outputs = tracker.track(img, hp)
pred_bbox = outputs['bbox']
pred_bboxes.append(pred_bbox)
toc += cv2.getTickCount() - tic
track_times.append((cv2.getTickCount() - tic) / cv2.getTickFrequency())
i += 1
if i == 0:
cv2.destroyAllWindows()
if args.vis and i > 0:
if not any(map(math.isnan, gt_bbox)):
pred_bbox = list(map(int, pred_bbox))
cv2.rectangle(img, (pred_bbox[0], pred_bbox[1]),
(pred_bbox[0] + pred_bbox[2], pred_bbox[1] + pred_bbox[3]), (0, 255, 255), 3)
cv2.putText(img, str(i), (40, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 255), 2)
cv2.imshow('garbage', img)
cv2.waitKey(1)
frameNum = frameNum + 1
if frameNum % 2 == 0: # 調整幀數
cv2.imwrite(out_path + 'vieo1_' + str(frameNum) + ".jpg", frame) # 保存圖片
# if ret is True:
# cv2.imshow("video-input", frame)
# out.write(frame)
#
# c = cv2.waitKey(50)
# if c == 27: # ESC
# break
# else:
# break
toc /= cv2.getTickFrequency()
# save results
model_path = os.path.join('results', 'garbage', model_name)
if not os.path.isdir(model_path):
os.makedirs(model_path)
result_path = os.path.join(model_path, 'garbage.txt')
with open(result_path, 'w') as f:
for x in pred_bboxes:
f.write(','.join([str(i) for i in x]) + '\n')
#os.chdir(model_path)
capture.release()
out.release()
print('well done')
用畫圖工具獲取第一幀圖片中目標所在位置及大小(x, y, w, h)
image.png
3.運行看效果
image.png
image.png
我修改的代碼不是很好,還是有報錯
總結
以上是生活随笔為你收集整理的anaconda能跑c语言哪,anaconda环境下实现SiamCAR的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言键盘回调函数键盘的码,深入浅出剖析
- 下一篇: 语言沟通6c,如何做到轻松有效沟通