国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

做編程的網(wǎng)站有哪些內(nèi)容搜索引擎成功案例分析

做編程的網(wǎng)站有哪些內(nèi)容,搜索引擎成功案例分析,自動(dòng)識(shí)別手機(jī)和電腦版本網(wǎng)站,seo技術(shù)員招聘python保存中間變量 原因: 最近在部署dust3r算法,雖然在本地部署了,也能測(cè)試出一定的結(jié)果,但是發(fā)現(xiàn)無(wú)法跑很多圖片,為了能夠測(cè)試多張圖片跑出來(lái)的模型,于是就在打算在autodl上部署算法,但是由…

python保存中間變量

原因:

最近在部署dust3r算法,雖然在本地部署了,也能測(cè)試出一定的結(jié)果,但是發(fā)現(xiàn)無(wú)法跑很多圖片,為了能夠測(cè)試多張圖片跑出來(lái)的模型,于是就在打算在autodl上部署算法,但是由于官方給定的代碼是訓(xùn)練好模型后通過(guò)可視化三維模型的形式來(lái)給出的效果,所以在服務(wù)器上沒(méi)有辦法來(lái)可視化三維模型(可能有辦法,但是總是有解決不了的報(bào)錯(cuò),于是便放棄)

產(chǎn)生思路

打算把官方中的代碼分成兩部分,上部分是訓(xùn)練好的模型output變量,將output保存下來(lái),下載到本地上,在本地上加載output變量,進(jìn)而完成后續(xù)的代碼操作。

保存中間變量的方式

通過(guò)下面方式output變量會(huì)以output.pkl的文件形式保存在當(dāng)前文件夾下

import pickle
output=1 #這里就是要保存的中間變量
pickle.dump(output, open('output.pkl', 'wb'))

通過(guò)下面的方式來(lái)讀取剛才保存的output.pkl文件,這樣就可以順利保存下來(lái)了

 f = open("output.pkl",'rb')output=pickle.loads(f.read())f.close()

原理

pickle是Python官方自帶的庫(kù),提供dump函數(shù)實(shí)現(xiàn)Python對(duì)象的保存。支持自定義的對(duì)象,非常方便。Pandas的DataFrame和Obspy的Stream也都可以保存成pickle的格式。主要是以二進(jìn)制的形式來(lái)保存成一種無(wú)邏輯的文件。

解決原來(lái)的問(wèn)題

dust3r官方給的代碼如下,其中服務(wù)器主要是在scene.show()這行代碼中無(wú)法運(yùn)行。

import osfrom dust3r.inference import inference, load_model
from dust3r.utils.image import load_images
from dust3r.image_pairs import make_pairs
from dust3r.cloud_opt import global_aligner, GlobalAlignerModeif __name__ == '__main__':model_path = "checkpoints/DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth"device = 'cuda'batch_size = 4schedule = 'cosine'lr = 0.01niter = 100model = load_model(model_path, device)# load_images can take a list of images or a directory# base_dir = 'tankandtemples/tankandtemples/intermediate/M60/images/'base_dir = 'croco/assets/'# 獲取當(dāng)前目錄下的所有文件files = [os.path.join(base_dir, file) for file in os.listdir(base_dir)]images = load_images(files, size=512)pairs = make_pairs(images, scene_graph='complete', prefilter=None, symmetrize=True)output = inference(pairs, model, device, batch_size=batch_size)# at this stage, you have the raw dust3r predictionsview1, pred1 = output['view1'], output['pred1']view2, pred2 = output['view2'], output['pred2']scene = global_aligner(output, device=device, mode=GlobalAlignerMode.PointCloudOptimizer)loss = scene.compute_global_alignment(init="mst", niter=niter, schedule=schedule, lr=lr)# retrieve useful values from scene:imgs = scene.imgsfocals = scene.get_focals()poses = scene.get_im_poses()pts3d = scene.get_pts3d()confidence_masks = scene.get_masks()# visualize reconstructionscene.show()# find 2D-2D matches between the two imagesfrom dust3r.utils.geometry import find_reciprocal_matches, xy_gridpts2d_list, pts3d_list = [], []for i in range(2):conf_i = confidence_masks[i].cpu().numpy()pts2d_list.append(xy_grid(*imgs[i].shape[:2][::-1])[conf_i])  # imgs[i].shape[:2] = (H, W)pts3d_list.append(pts3d[i].detach().cpu().numpy()[conf_i])reciprocal_in_P2, nn2_in_P1, num_matches = find_reciprocal_matches(*pts3d_list)print(f'found {num_matches} matches')matches_im1 = pts2d_list[1][reciprocal_in_P2]matches_im0 = pts2d_list[0][nn2_in_P1][reciprocal_in_P2]# visualize a few matchesimport numpy as npfrom matplotlib import pyplot as pln_viz = 10match_idx_to_viz = np.round(np.linspace(0, num_matches-1, n_viz)).astype(int)viz_matches_im0, viz_matches_im1 = matches_im0[match_idx_to_viz], matches_im1[match_idx_to_viz]H0, W0, H1, W1 = *imgs[0].shape[:2], *imgs[1].shape[:2]img0 = np.pad(imgs[0], ((0, max(H1 - H0, 0)), (0, 0), (0, 0)), 'constant', constant_values=0)img1 = np.pad(imgs[1], ((0, max(H0 - H1, 0)), (0, 0), (0, 0)), 'constant', constant_values=0)img = np.concatenate((img0, img1), axis=1)pl.figure()pl.imshow(img)cmap = pl.get_cmap('jet')for i in range(n_viz):(x0, y0), (x1, y1) = viz_matches_im0[i].T, viz_matches_im1[i].Tpl.plot([x0, x1 + W0], [y0, y1], '-+', color=cmap(i / (n_viz - 1)), scalex=False, scaley=False)pl.show(block=True)

將代碼分成兩部分,上部分由服務(wù)器來(lái)跑,下部分由本地來(lái)跑。

import os
from dust3r.inference import inference, load_model
from dust3r.utils.image import load_images
from dust3r.image_pairs import make_pairs
from dust3r.cloud_opt import global_aligner, GlobalAlignerMode
if __name__ == '__main__':model_path = "checkpoints/DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth"device = 'cuda'batch_size = 32schedule = 'cosine'lr = 0.01niter = 300model = load_model(model_path, device)# load_images can take a list of images or a directorybase_dir = 'croco/assets/'# 獲取當(dāng)前目錄下的所有文件files = [os.path.join(base_dir, file) for file in os.listdir(base_dir)]files_new = []for i in range(0,files.__len__(),10):files_new.append(files[i])images = load_images(files_new, size=512)pairs = make_pairs(images, scene_graph='complete', prefilter=None, symmetrize=True)output = inference(pairs, model, device, batch_size=batch_size)import picklepickle.dump(output, open('output.pkl', 'wb'))

本地代碼

import os
from dust3r.inference import inference, load_model
from dust3r.utils.image import load_images
from dust3r.image_pairs import make_pairs
from dust3r.cloud_opt import global_aligner, GlobalAlignerMode
if __name__ == '__main__':model_path = "checkpoints/DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth"device = 'cuda'batch_size = 1schedule = 'cosine'lr = 0.01niter = 300base_dir = 'croco/assets/'# 獲取當(dāng)前目錄下的所有文件files = [os.path.join(base_dir, file) for file in os.listdir(base_dir)]files_new = []for i in range(0,files.__len__(),4):files_new.append(files[i])print(files_new)import picklef = open("output.pkl",'rb')output=pickle.loads(f.read())f.close()view1, pred1 = output['view1'], output['pred1']view2, pred2 = output['view2'], output['pred2']scene = global_aligner(output, device=device, mode=GlobalAlignerMode.PointCloudOptimizer)loss = scene.compute_global_alignment(init="mst", niter=niter, schedule=schedule, lr=lr)# retrieve useful values from scene:imgs = scene.imgsfocals = scene.get_focals()poses = scene.get_im_poses()pts3d = scene.get_pts3d()confidence_masks = scene.get_masks()# visualize reconstructionscene.show()# find 2D-2D matches between the two imagesfrom dust3r.utils.geometry import find_reciprocal_matches, xy_gridpts2d_list, pts3d_list = [], []for i in range(2):conf_i = confidence_masks[i].cpu().numpy()pts2d_list.append(xy_grid(*imgs[i].shape[:2][::-1])[conf_i])  # imgs[i].shape[:2] = (H, W)pts3d_list.append(pts3d[i].detach().cpu().numpy()[conf_i])reciprocal_in_P2, nn2_in_P1, num_matches = find_reciprocal_matches(*pts3d_list)print(f'found {num_matches} matches')matches_im1 = pts2d_list[1][reciprocal_in_P2]matches_im0 = pts2d_list[0][nn2_in_P1][reciprocal_in_P2]# visualize a few matchesimport numpy as npfrom matplotlib import pyplot as pln_viz = 10match_idx_to_viz = np.round(np.linspace(0, num_matches-1, n_viz)).astype(int)viz_matches_im0, viz_matches_im1 = matches_im0[match_idx_to_viz], matches_im1[match_idx_to_viz]H0, W0, H1, W1 = *imgs[0].shape[:2], *imgs[1].shape[:2]img0 = np.pad(imgs[0], ((0, max(H1 - H0, 0)), (0, 0), (0, 0)), 'constant', constant_values=0)img1 = np.pad(imgs[1], ((0, max(H0 - H1, 0)), (0, 0), (0, 0)), 'constant', constant_values=0)img = np.concatenate((img0, img1), axis=1)pl.figure()pl.imshow(img)cmap = pl.get_cmap('jet')for i in range(n_viz):(x0, y0), (x1, y1) = viz_matches_im0[i].T, viz_matches_im1[i].Tpl.plot([x0, x1 + W0], [y0, y1], '-+', color=cmap(i / (n_viz - 1)), scalex=False, scaley=False)pl.show(block=True)

總結(jié)

這種解決辦法也不是根本解決辦法,雖然比較麻煩,但是還是能將項(xiàng)目跑起來(lái),也是沒(méi)有辦法的辦法,在此做一個(gè)筆記記錄。

http://m.aloenet.com.cn/news/36886.html

相關(guān)文章:

  • 青海政府網(wǎng)站建設(shè)公司網(wǎng)站建設(shè)免費(fèi)網(wǎng)站
  • 寧波網(wǎng)站建設(shè)設(shè)計(jì)制作百度信息流推廣平臺(tái)
  • 合作加盟廣州中小企業(yè)seo推廣運(yùn)營(yíng)
  • 蒼南網(wǎng)站設(shè)計(jì)公司百度非企渠道開(kāi)戶
  • 網(wǎng)站建設(shè)銷售培訓(xùn)2023b站免費(fèi)推廣入口游戲
  • 如何建立網(wǎng)站會(huì)員系統(tǒng)嗎網(wǎng)絡(luò)營(yíng)銷的特點(diǎn)有哪些
  • wordpress顯示錯(cuò)亂鄭州seo價(jià)格
  • 徐州網(wǎng)站制作機(jī)構(gòu)百度網(wǎng)站首頁(yè)提交入口
  • 安徽做公司網(wǎng)站哪家好國(guó)內(nèi)搜索引擎排行榜
  • 上海外貿(mào)建站推廣公司微信朋友圈廣告怎么推廣
  • 天津建設(shè)工程網(wǎng)站營(yíng)銷策略
  • 北京家裝設(shè)計(jì)師排名北京網(wǎng)站優(yōu)化推廣方案
  • 清溪仿做網(wǎng)站懂得網(wǎng)站推廣
  • 日本無(wú)碼做受網(wǎng)站企業(yè)seo顧問(wèn)
  • 網(wǎng)站設(shè)計(jì)報(bào)價(jià)是多少錢廣告信息發(fā)布平臺(tái)
  • 蘇州網(wǎng)站設(shè)計(jì)哪家好韓國(guó)比分預(yù)測(cè)
  • 安卓做網(wǎng)站seo網(wǎng)站關(guān)鍵詞優(yōu)化報(bào)價(jià)
  • 鄭州好的網(wǎng)站設(shè)計(jì)公司營(yíng)銷推廣活動(dòng)策劃方案大全
  • 如何查詢網(wǎng)站關(guān)鍵詞密度濟(jì)南seo全網(wǎng)營(yíng)銷
  • 廣州衛(wèi)健委疫情最新消息關(guān)鍵詞優(yōu)化的作用
  • 企業(yè)網(wǎng)站建設(shè)報(bào)價(jià)百度渠道開(kāi)戶
  • 江陰做網(wǎng)站優(yōu)化百度官網(wǎng)登錄入口手機(jī)版
  • 京東購(gòu)物商城網(wǎng)絡(luò)排名優(yōu)化軟件
  • asp.net做網(wǎng)站Dreamver百度搜圖匹配相似圖片
  • 化妝品網(wǎng)站設(shè)計(jì)報(bào)告怎么網(wǎng)上推廣自己的產(chǎn)品
  • 做好政府網(wǎng)站建設(shè)工作的通知安卓神級(jí)系統(tǒng)優(yōu)化工具
  • 模板式網(wǎng)站價(jià)格百度競(jìng)價(jià)的優(yōu)勢(shì)和劣勢(shì)
  • 給平頂山公安局做網(wǎng)站的公司前端培訓(xùn)哪個(gè)機(jī)構(gòu)靠譜
  • 天元建設(shè)集團(tuán)有限公司濟(jì)南第六建筑工程公司seo站長(zhǎng)工具查詢系統(tǒng)
  • 公司做網(wǎng)站找誰(shuí)做網(wǎng)站的公司seo推廣公司教程