吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在利用OpenVINO在英特爾處理器上實(shí)現(xiàn)1000+ FPS性能

SDNLAB ? 來(lái)源:英特爾物聯(lián)網(wǎng) ? 2023-02-15 17:26 ? 次閱讀

!作為目標(biāo)檢測(cè)領(lǐng)域著名的模型家族,you only look once (YOLO) 推 出新模型的速度可謂是越來(lái)越快。

就在剛剛過去的1月份,YOLO又推出了最新的YOLOv8模型,其模型結(jié)構(gòu)和架構(gòu)上的創(chuàng)新以及所提供的性能提升,使得它剛剛面世,就獲得了廣大開發(fā)者的關(guān)注。

YOLOv8的性能到底怎么樣?如果說利用OpenVINO的量化和加速,利用英特爾CPU、集成顯卡以及獨(dú)立顯卡與同一代碼庫(kù)無(wú)縫協(xié)作,可以獲得1000+ FPS的性能,你相信嗎?

那不妨繼續(xù)往下看,我們將手把手的教你在利用OpenVINO在英特爾處理器上實(shí)現(xiàn)這一性能。

336999d8-ac37-11ed-bfe3-dac502259ad0.png

| 圖1. YOLOv8推理結(jié)果示例 好的,讓我們開始吧。 注意:以下步驟中的所有代碼來(lái)自O(shè)penVINO Notebooks開源倉(cāng)庫(kù)中的230-yolov8-optimization notebook 代碼示例。

01安裝相應(yīng)工具包及加載模型

本次代碼示例我們使用的是Ultralytics YOLOv8模型,因此需要首先安裝相應(yīng)工具包。

1.!pipinstall"ultralytics==8.0.5"

然后下載及加載相應(yīng)的PyTorch模型。

1.fromultralyticsimportYOLO

2.

3.MODEL_NAME="yolov8n"

4.

5.model=YOLO(f'{MODEL_NAME}.pt')

6.

7.label_map=model.model.names

定義測(cè)試圖片的地址,獲得原始PyTorch模型的推理結(jié)果:

1.IMAGE_PATH="../data/image/coco_bike.jpg"

2.results=model(IMAGE_PATH,return_outputs=True)

其運(yùn)行效果如下

33af12e2-ac37-11ed-bfe3-dac502259ad0.png ?

為將目標(biāo)檢測(cè)的效果以可視化的形式呈現(xiàn)出來(lái),需要定義相應(yīng)的函數(shù),最終運(yùn)行效果如下圖所示:

33d30102-ac37-11ed-bfe3-dac502259ad0.png ?

02將模型轉(zhuǎn)換為OpenVINOIR格式

為獲得良好的模型推理加速,并更方便的部署在不同的硬件平臺(tái)上,接下來(lái)我們首先將YOLO v8模型轉(zhuǎn)換為OpenVINO IR模型格式。

YOLOv8提供了用于將模型導(dǎo)出到不同格式(包括OpenVINO IR格式)的API。

model.export負(fù)責(zé)模型轉(zhuǎn)換。

我們需要在這里指定格式,此外,我們還可以在模型中保留動(dòng)態(tài)輸入。

1.frompathlibimportPath

2.

3.model_path=Path(f"{MODEL_NAME}_openvino_model/{MODEL_NAME}.xml")

4.ifnotmodel_path.exists():

5.model.export(format="openvino",dynamic=True,half=False)

接下來(lái)我們來(lái)測(cè)試一下轉(zhuǎn)換后模型的準(zhǔn)確度如何。運(yùn)行以下代碼,并定義相應(yīng)的前處理、后處理函數(shù)。

1.fromopenvino.runtimeimportCore,Model

2.

3.core=Core()

4.ov_model=core.read_model(model_path)

5.device="CPU"#GPU

6.ifdevice!="CPU":

7.ov_model.reshape({0:[1,3,640,640]})

8.compiled_model=core.compile_model(ov_model,device)

在單張測(cè)試圖片上進(jìn)行推理,可以得到如下推理結(jié)果:

34342f68-ac37-11ed-bfe3-dac502259ad0.png ? ?

03在數(shù)據(jù)集上驗(yàn)證模型準(zhǔn)確度

YOLOv8是在COCO數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練的,因此為了評(píng)估模型的準(zhǔn)確性,我們需要下載該數(shù)據(jù)集。

根據(jù)YOLOv8 GitHub倉(cāng)庫(kù)中提供的說明,我們還需要下載模型作者使用的格式的標(biāo)注,以便與原始模型評(píng)估功能一起使用。

1.importsys

2.fromzipfileimportZipFile

3.

4.sys.path.append("../utils")

5.fromnotebook_utilsimportdownload_file

6.

7.DATA_URL="http://images.cocodataset.org/zips/val2017.zip"

8.LABELS_URL="https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017labels-segments.zip"

9.

10.OUT_DIR=Path('./datasets')

11.

12.download_file(DATA_URL,directory=OUT_DIR,show_progress=True)

13.download_file(LABELS_URL,directory=OUT_DIR,show_progress=True)

14.

15.ifnot(OUT_DIR/"coco/labels").exists():

16.withZipFile(OUT_DIR/'coco2017labels-segments.zip',"r")aszip_ref:

17.zip_ref.extractall(OUT_DIR)

18.withZipFile(OUT_DIR/'val2017.zip',"r")aszip_ref:

19.zip_ref.extractall(OUT_DIR/'coco/images')

接下來(lái),我們配置DetectionValidator并創(chuàng)建DataLoader。原始模型存儲(chǔ)庫(kù)使用DetectionValidator包裝器,它表示精度驗(yàn)證的過程。

它創(chuàng)建DataLoader和評(píng)估標(biāo)準(zhǔn),并更新DataLoader生成的每個(gè)數(shù)據(jù)批的度量標(biāo)準(zhǔn)。

此外,它還負(fù)責(zé)數(shù)據(jù)預(yù)處理和結(jié)果后處理。對(duì)于類初始化,應(yīng)提供配置。

我們將使用默認(rèn)設(shè)置,但可以用一些參數(shù)替代,以測(cè)試自定義數(shù)據(jù),代碼如下。

1.fromultralytics.yolo.utilsimportDEFAULT_CONFIG

2.fromultralytics.yolo.configsimportget_config

3.args=get_config(config=DEFAULT_CONFIG)

4.args.data="coco.yml"

1.validator=model.ValidatorClass(args)

2.

3.data_loader=validator.get_dataloader("datasets/coco",1)

Validator配置代碼如下:

1.fromtqdm.notebookimporttqdm

2.fromultralytics.yolo.utils.metricsimportConfusionMatrix

3.

4.validator.is_coco=True

5.validator.class_map=ops.coco80_to_coco91_class()

6.validator.names=model.model.names

7.validator.metrics.names=validator.names

8.validator.nc=model.model.model[-1].nc

定義驗(yàn)證函數(shù),以及打印相應(yīng)測(cè)試結(jié)果的函數(shù),結(jié)果如下: 347f6398-ac37-11ed-bfe3-dac502259ad0.png ?

04利用NNCFPOT量化API進(jìn)行模型優(yōu)化

Neural network compression framework (NNCF) 為OpenVINO中的神經(jīng)網(wǎng)絡(luò)推理優(yōu)化提供了一套先進(jìn)的算法,精度下降最小。

我們將在后訓(xùn)練(Post-training)模式中使用8位量化(無(wú)需微調(diào))來(lái)優(yōu)化YOLOv8。

優(yōu)化過程包括以下三個(gè)步驟:

1)建立量化數(shù)據(jù)集Dataset;

2)運(yùn)行nncf.quantize來(lái)得到優(yōu)化模型

3)使用串行化函數(shù)openvino.runtime.serialize來(lái)得到OpenVINO IR模型。

建立量化數(shù)據(jù)集代碼如下:

1.importnncf#noqa:F811

2.fromtypingimportDict

3.

4.

5.deftransform_fn(data_item

6."""

7.Quantizationtransformfunction.Extractsandpreprocessinputdatafromdataloaderitemforquantization.

8.Parameters:

9.data_item:DictwithdataitemproducedbyDataLoaderduringiteration

10.Returns:

11.input_tensor:Inputdataforquantization

12."""

13.input_tensor=validator.preprocess(data_item)['img'].numpy()

14.returninput_tensor

15.

16.

17.quantization_dataset=nncf.Dataset(data_loader,transform_fn)

運(yùn)行nncf.quantize代碼如下:

1.quantized_model=nncf.quantize(

2.ov_model,

3.quantization_dataset,

4.preset=nncf.QuantizationPreset.MIXED,

5.ignored_scope=nncf.IgnoredScope(

6.types=["Multiply","Subtract","Sigmoid"],#ignoreoperations

7.names=["/model.22/dfl/conv/Conv",#inthepost-processingsubgraph

8."/model.22/Add",

9."/model.22/Add_1",

10."/model.22/Add_2",

11."/model.22/Add_3",

12."/model.22/Add_4",

13."/model.22/Add_5",

14."/model.22/Add_6",

15."/model.22/Add_7",

16."/model.22/Add_8",

17."/model.22/Add_9",

18."/model.22/Add_10"]

19.))

最終串行化函數(shù)代碼如下:

1.fromopenvino.runtimeimportserialize

2.int8_model_path=Path(f'{MODEL_NAME}_openvino_int8_model/{MODEL_NAME}.xml')

3.print(f"Quantizedmodelwillbesavedto{int8_model_path}")

4.serialize(quantized_model,str(int8_model_path))

運(yùn)行后得到的優(yōu)化的YOLOv8模型保存在以下路徑:

yolov8n_openvino_int8_model/yolov8n.xml

接下來(lái),運(yùn)行以下代碼在單張測(cè)試圖片上驗(yàn)證優(yōu)化模型的推理結(jié)果:

1.ifdevice!="CPU":

2.quantized_model.reshape({0,[1,3,640,640]})

3.quantized_compiled_model=core.compile_model(quantized_model,device)

4.input_image=np.array(Image.open(IMAGE_PATH))

5.detections=detect(input_image,quantized_compiled_model)[0]

6.image_with_boxes=draw_boxes(detections,input_image)

7.

8.Image.fromarray(image_with_boxes)

運(yùn)行結(jié)果如下:

34a341d2-ac37-11ed-bfe3-dac502259ad0.png ?

驗(yàn)證下優(yōu)化后模型的精度,運(yùn)行如下代碼:

1.print("FP32modelaccuracy")

2.print_stats(fp_stats,validator.seen,validator.nt_per_class.sum())

3.

4.print("INT8modelaccuracy")

5.print_stats(int8_stats,validator.seen,validator.nt_per_class.sum())

得到結(jié)果如下:

34dbdc4a-ac37-11ed-bfe3-dac502259ad0.png ?

可以看到模型精度相較于優(yōu)化前,并沒有明顯的下降。

05比較優(yōu)化前后模型的性能

接著,我們利用OpenVINO 基線測(cè)試工具h(yuǎn)ttps://docs.openvino.ai/latest/openvino_inference_engine_tools_benchmark_tool_README.html 來(lái)比較優(yōu)化前(FP32)和優(yōu)化后(INT8)模型的性能。

在這里,我們分別在英特爾至強(qiáng)第三代處理器(Xeon Ice Lake Gold Intel 6348 2.6 GHz 42 MB 235W 28 cores)上運(yùn)行CPU端的性能比較。

針對(duì)優(yōu)化前模型的測(cè)試代碼和運(yùn)行結(jié)果如下:

1.#InferenceFP32model(OpenVINOIR)

2.!benchmark_app-m$model_path-dCPU-apiasync-shape"[1,3,640,640]"

FP32模型性能:

34f28aa8-ac37-11ed-bfe3-dac502259ad0.png ?

INT8模型性能:

35225ee0-ac37-11ed-bfe3-dac502259ad0.png

已經(jīng)達(dá)到了1400+ FPS! 在英特爾獨(dú)立顯卡上的性能又如何呢?我們?cè)贏rc A770m上測(cè)試效果如下:

3551c4dc-ac37-11ed-bfe3-dac502259ad0.png ?

也超過了1000 FPS!

需要注意的是要想獲得如此的高性能,需要將推理運(yùn)行在吞吐量模式下,并使用多流和多個(gè)推理請(qǐng)求(即并行運(yùn)行多個(gè))。

同樣,仍然需要確保對(duì)預(yù)處理和后處理管道進(jìn)行微調(diào),以確保沒有性能瓶頸。

06利用網(wǎng)絡(luò)攝像頭運(yùn)行實(shí)時(shí)測(cè)試

除了基線測(cè)試工具外,如果你想利用自己的網(wǎng)絡(luò)攝像頭,體驗(yàn)一下實(shí)時(shí)推理的效果,可以運(yùn)行我們提供的實(shí)時(shí)運(yùn)行目標(biāo)檢測(cè)函數(shù):

1.run_object_detection(source=0,flip=True,use_popup=False,model=ov_model,device="AUTO")

獲得類似如下圖的效果:

357cec84-ac37-11ed-bfe3-dac502259ad0.png ?

07進(jìn)一步提升性能的小技巧

非同步推理流水線

在進(jìn)行目標(biāo)檢測(cè)的推理時(shí),推理性能常常會(huì)因?yàn)閿?shù)據(jù)輸入量的限制而受到影響。此時(shí),采用異步推理的模型,可以進(jìn)一步提升推理的性能。異步API的主要優(yōu)點(diǎn)是,當(dāng)設(shè)備忙于推理時(shí),應(yīng)用程序可以并行執(zhí)行其他任務(wù)(例如填充輸入或調(diào)度其他請(qǐng)求),而不是等待當(dāng)前推理首先完成。

使用預(yù)處理API

預(yù)處理API允許將預(yù)處理作為模型的一部分,從而減少應(yīng)用程序代碼和對(duì)其他圖像處理庫(kù)的依賴。預(yù)處理API的主要優(yōu)點(diǎn)是將預(yù)處理步驟集成到執(zhí)行圖中,并將在選定的設(shè)備(CPU/GPU/VPU/等)上執(zhí)行,而不是作為應(yīng)用程序的一部分始終在CPU上執(zhí)行。這將提高所選設(shè)備的利用率。

對(duì)于本次YOLOv8示例來(lái)說,預(yù)處理API的使用包含以下幾個(gè)步驟:

1.初始化PrePostProcessing對(duì)象

20.fromopenvino.preprocessimportPrePostProcessor

21.

22.ppp=PrePostProcessor(quantized_model)

2.定義輸入數(shù)據(jù)格式

1.fromopenvino.runtimeimportType,Layout

2.

3.ppp.input(0).tensor().set_shape([1,640,640,3]).set_element_type(Type.u8).set_layout(Layout('NHWC'))

4.pass

3.描述預(yù)處理步驟 預(yù)處理步驟主要包括以下三步: ·將數(shù)據(jù)類型從U8轉(zhuǎn)換為FP32 ·將數(shù)據(jù)布局從NHWC轉(zhuǎn)換為NCHW格式 ·通過按比例因子255進(jìn)行除法來(lái)歸一化每個(gè)像素

代碼如下:

1.ppp.input(0).preprocess().convert_element_type(Type.f32).convert_layout(Layout('NCHW')).scale([255.,255.,255.])

2.

3.print(ppp)

4.將步驟集成到模型中

1.quantized_model_with_preprocess=ppp.build()

2.serialize(quantized_model_with_preprocess,str(int8_model_path.with_name(f"{MODEL_NAME}_with_preprocess.xml")))

具有集成預(yù)處理的模型已準(zhǔn)備好加載到設(shè)備。現(xiàn)在,我們可以跳過檢測(cè)函數(shù)中的這些預(yù)處理步驟,直接運(yùn)行如下推理:

1.defdetect_without_preprocess(image:np.ndarray,model

2."""

3.OpenVINOYOLOv8modelwithintegratedpreprocessinginferencefunction.Preprocessimage,runsmodelinferenceandpostprocessresultsusingNMS.

4.Parameters:

5.image(np.ndarray):inputimage.

6.model(Model):OpenVINOcompiledmodel.

7.Returns:

8.detections(np.ndarray):detectedboxesinformat[x1,y1,x2,y2,score,label]

9."""

10.output_layer=model.output(0)

11.img=letterbox(image)[0]

12.input_tensor=np.expand_dims(img,0)

13.input_hw=img.shape[:2]

14.result=model(input_tensor)[output_layer]

15.detections=postprocess(result,input_hw,image)

16.returndetections

17.

18.

19.compiled_model=core.compile_model(quantized_model_with_preprocess,device)

20.input_image=np.array(Image.open(IMAGE_PATH))

21.detections=detect_without_preprocess(input_image,compiled_model)[0]

22.image_with_boxes=draw_boxes(detections,input_image)

23.

24.Image.fromarray(img_with_boxes)

小 結(jié)

整個(gè)的步驟就是這樣!現(xiàn)在就開始跟著我們提供的代碼和步驟,動(dòng)手試試用Open VINO優(yōu)化和加速YOLOv8吧。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19412

    瀏覽量

    231208
  • FPS
    FPS
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    12035
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    808

    瀏覽量

    13367

原文標(biāo)題:如何用OpenVINO?讓YOLOv8獲得1000+ FPS性能?

文章出處:【微信號(hào):SDNLAB,微信公眾號(hào):SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    英特爾將在2014年推出14納米處理器芯片

    2014年推出。這個(gè)處理器的代號(hào)為Broadwell。  Broadwell處理器是作為英特爾路線圖中“工藝年”推出的。它實(shí)際是2013年推出的Haswell架構(gòu)縮小的14納米芯片。
    發(fā)表于 12-05 10:49

    英特爾凌動(dòng)處理器E3800的PMIC主要特點(diǎn)

    進(jìn)的嵌入式SoC的英特爾之間的強(qiáng)強(qiáng)合作體制的成果,實(shí)現(xiàn)了超越處理器驅(qū)動(dòng)專用IC范圍的理想性能。 ROHM將以車載汽車信息娛樂領(lǐng)域、工業(yè)機(jī)器人及POS系統(tǒng)為首的工業(yè)設(shè)備定位為重點(diǎn)領(lǐng)域,今
    發(fā)表于 09-29 17:07

    基于英特爾凌動(dòng)處理器的車載信息娛樂系統(tǒng)

    ——面向嵌入式應(yīng)用的英特爾凌動(dòng)處理器平臺(tái)文/英特爾(中國(guó))有限公司基于英特爾凌動(dòng)處理器系列構(gòu)建的相關(guān)平臺(tái)優(yōu)勢(shì)明顯,可以用在車載信息娛樂系統(tǒng)、
    發(fā)表于 07-18 07:05

    英特爾的十款嵌入式智能處理器

    英特爾公司今日宣布,英特爾將面向嵌入式市場(chǎng)為全新2010英特爾? 酷睿? 處理器系列中的十款處理器和三款芯片組提供7年以上生命周期支持。全新
    發(fā)表于 07-29 06:13

    英特爾凌動(dòng)處理器CE4100有什么優(yōu)點(diǎn)?

    英特爾今天發(fā)布了英特爾?凌動(dòng)?處理器CE4100,這是英特爾媒體處理器系列中最新的SoC產(chǎn)品,將用于為數(shù)字電視、DVD播放
    發(fā)表于 09-03 06:24

    蘋果Mac棄用英特爾芯片的原因

    提升,性能相比英特爾處理器會(huì)大幅降低。而且,未來(lái)蘋果A系列芯片將橫跨其移動(dòng)辦公產(chǎn)品,iPhone和iPad早早地使用了蘋果自研的ARM架構(gòu)芯片,自研的ARM版芯片順利用于Mac電腦后,
    發(fā)表于 06-23 08:53

    介紹英特爾?分布式OpenVINO?工具包

    介紹英特爾?分布式OpenVINO?工具包可快速部署模擬人類視覺的應(yīng)用程序和解決方案。 該工具包基于卷積神經(jīng)網(wǎng)絡(luò)(CNN),可擴(kuò)展英特爾?硬件的計(jì)算機(jī)視覺(CV)工作負(fù)載,從而最大限度地提高
    發(fā)表于 07-26 06:45

    凌華科技發(fā)布兩款基于最新的英特爾? 酷睿?處理器的模塊化電腦

    凌華科技發(fā)布基于第13代英特爾? 酷睿?處理器的COM Express和COM-HPC計(jì)算模塊提供高達(dá)24核的擴(kuò)展計(jì)算能力以及工業(yè)級(jí)的穩(wěn)定性用英特爾?性能混合架構(gòu),可
    發(fā)表于 02-15 10:30

    英特爾處理器命名規(guī)則介紹_英特爾處理器種類_英特爾處理器排名

    英特爾處理器已經(jīng)普遍的運(yùn)用到了我們生活當(dāng)中嗎。那么英特爾處理器有什么命名規(guī)則?英特爾處理器又分哪
    發(fā)表于 12-15 15:13 ?2.4w次閱讀

    AMD處理器現(xiàn)在真的超越英特爾處理器了嗎

    16線程的主流市場(chǎng)處理器了,銳龍二代性能上也占不到便宜了。在下一代處理器英特爾因?yàn)?0nm
    發(fā)表于 09-08 10:12 ?3831次閱讀

    可擴(kuò)展的英特爾至強(qiáng)處理器的交互式專業(yè)圖形

    了解如何利用可擴(kuò)展的英特爾?至強(qiáng)?處理器來(lái)實(shí)現(xiàn)CGI,動(dòng)畫或動(dòng)態(tài)圖形!
    的頭像 發(fā)表于 11-08 06:21 ?2652次閱讀

    利用英特爾至強(qiáng)融核協(xié)處理器對(duì)LAMMPS進(jìn)行優(yōu)化

    快來(lái)了解英特爾為優(yōu)化LAMMPS以利用英特爾?至強(qiáng)?和英特爾?至強(qiáng)?協(xié)處理器所做的工作,以及這些優(yōu)化帶來(lái)的
    的頭像 發(fā)表于 11-05 06:19 ?4302次閱讀

    英特爾至強(qiáng)6226R處理器性能測(cè)評(píng),支持英特爾傲騰持久內(nèi)存

    今年2月末,面向英特爾云、網(wǎng)絡(luò)和邊緣領(lǐng)域的主流至強(qiáng)可擴(kuò)展處理器客戶,英特爾推出了代號(hào)為Cascade Lake Refresh的至強(qiáng)可擴(kuò)展處理器
    的頭像 發(fā)表于 04-28 15:37 ?2.4w次閱讀

    英特爾酷睿Lakefield處理器推出,提供性能和全面的Windows兼容性

    昨日,英特爾推出了采用英特爾?混合技術(shù)的英特爾?酷睿?處理器,其代號(hào)為“Lakefield”。Lakefield處理器
    的頭像 發(fā)表于 06-11 16:27 ?2297次閱讀

    英特爾和AMD處理器的區(qū)別和特點(diǎn)

    性能處理器最重要的特點(diǎn)之一。在過去的幾十年里,英特爾一直是處理器性能的主導(dǎo)者。他們的處理器
    的頭像 發(fā)表于 01-30 14:28 ?2721次閱讀
    网上百家乐的打法| 真人百家乐官网轮盘| 百家乐大西洋城v| 百家乐官网上海代理| 威尼斯人娱乐上网导航| 华泰百家乐官网的玩法技巧和规则| 六合彩聊天室| 百家乐解密软件| 新百家乐官网庄闲路单图记录| 大发888-dafa888uk.com| 24山向吉凶水法| 百家乐官网博彩策略| 百家乐出千的方法| 百家乐官网路单怎样| 澳博国际娱乐| 百家乐博娱乐场| 利都百家乐官网国际娱乐| 长阳| 海立方百家乐的玩法技巧和规则| 百家乐官网娱乐平台开户| 桃园县| 网上的百家乐怎么才能赢| 风水24山里的四维八干| 百家乐官网注册开户送现金| 德州扑克平台| 百家乐高手怎么下注| 百家乐官网全部规则| 大亨百家乐官网游戏| 大发888真人官网| 百家乐局部| 百家乐官网皇室百家乐官网的玩法技巧和规则 | 百家乐官网套利| 百家乐官网娱乐天上人间| 六合彩即时开奖| 伟博百家乐娱乐城| 百家乐官网看不到视频| 爱赢娱乐城资讯网| 百家乐定位胆技巧| 百家乐筹码方| 龙博百家乐官网的玩法技巧和规则| 百家乐官网游戏玩法技巧|