在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用計算機視覺技術識別棋子及其在棋盤上的位置

新機器視覺 ? 來源:小白學視覺 ? 作者:小白學視覺 ? 2022-03-21 13:16 ? 次閱讀

本期我們將一起學習如何使用計算機視覺技術識別棋子及其在棋盤上的位置

我們利用計算機視覺技術和卷積神經網絡(CNN)為這個項目創建分類算法,并確定棋子在棋盤上的位置。最終的應用程序會保存整個圖像并可視化的表現出來,同時輸出棋盤的2D圖像以查看結果。

01. 數據

我們對該項目的數據集有很高的要求,因為它最終會影響我們的實驗結果。我們在網上能找到的國際象棋數據集是使用不同的國際象棋集、不同的攝影機拍攝得到的,這導致我們創建了自己的數據集。我使用國際象棋和攝像機(GoPro Hero6 Black以“第一人稱視角”角度)生成了自定義數據集,這使我的模型更加精確。該數據集包含2406張圖像,分為13類(請參閱下文)。總結:這花費了我們很多時間,但是這使得訓練圖像盡可能地接近在應用程序中使用時所看到的圖像。

如何使用計算機視覺技術識別棋子及其在棋盤上的位置

自定義數據集的細分

為了構建該數據集,我首先創建了capture_data.py,當單擊S鍵時,該視頻從視頻流中獲取一幀并將其保存。這個程序使我能夠無縫地更改棋盤上的棋子并一遍又一遍地捕獲棋盤的圖像,直到我建立了大量不同的棋盤配置為止。接下來,我創建了create_data.py,以使用下一部分中討論的檢測技術將其裁剪為單獨小塊。最后,我通過將裁剪后的圖像分成帶標簽的文件夾來對它們進行分類。

02. 棋盤檢測

對于棋盤檢測,我想做的事情比使用OpenCV函數findChessboardCorners復雜的多,但又不像CNN那樣高級。使用低級和中級計算機視覺技術來查找棋盤的特征,然后將這些特征轉換為外邊界和64個獨立正方形的坐標。該過程以Canny邊緣檢測和Hough變換生成的相交水平線、垂直線的交點為中心。層次聚類用于按距離對交叉點進行分組,并對各組取平均值以創建最終坐標(請參見下文)。

如何使用計算機視覺技術識別棋子及其在棋盤上的位置

完整的棋盤檢測過程

03. 棋盤分類

項目伊始,我們想使用Keras / TensorFlow創建CNN模型并對棋子進行分類。但是,在創建數據集之后,僅考慮CNN的大小,單靠CNN就無法獲得想要的結果。為了克服這一障礙,我利用了ImageDataGenerator和transfer learning,它增加了我的數據并使用了其他預訓練的模型作為基礎。

創建CNN模型

為了使用GPU,我在云中創建并訓練了CNN模型,從而大大減少了訓練時間。快速提示:Google Colab是使用GPU快速入門的簡便方法。為了提高數據的有效性,我使用了ImageDataGenerator來擴展原始圖像并將模型暴露給不同版本的數據。ImageDataGenerator函數針對每個時期隨機旋轉,重新縮放和翻轉(水平)訓練數據,從本質上創建了更多數據。盡管還有更多的轉換選項,但這些轉換選項對該項目最有效。

from keras.preprocessing.image import ImageDataGeneratordatagen = ImageDataGenerator(        rotation_range=5,        rescale=1./255,        horizontal_flip=True,        fill_mode='nearest')test_datagen = ImageDataGenerator(rescale=1./255)train_gen = datagen.flow_from_directory(    folder + '/train',    target_size = image_size,    batch_size = batch_size,    class_mode = 'categorical',    color_mode = 'rgb',    shuffle=True)test_gen = test_datagen.flow_from_directory(    folder + '/test',    target_size = image_size,    batch_size = batch_size,    class_mode = 'categorical',    color_mode = 'rgb',    shuffle=False)

我們沒有從頭開始訓練模型,而是通過利用預先訓練的模型并添加了使用我的自定義數據集訓練的頂層模型來實現轉移學習。我遵循了典型的轉移學習工作流程:

1.從先前訓練的模型(VGG16)中獲取圖層。

from keras.applications.vgg16 import VGG16model = VGG16(weights='imagenet')model.summary()

2.凍結他們,以避免破壞他們在訓練回合中包含的任何信息

3.在凍結層的頂部添加了新的可訓練層。

from keras.models import Sequentialfrom keras.layers import Dense, Conv2D, MaxPooling2D, Flattenfrom keras.models import Modelbase_model = VGG16(weights='imagenet', include_top=False, input_shape=(224,224,3))  # Freeze convolutional layers from VGG16for layer in base_model.layers:    layer.trainable = False# Establish new fully connected blockx = base_model.outputx = Flatten()(x) x = Dense(500, activation='relu')(x) x = Dense(500, activation='relu')(x)predictions = Dense(13, activation='softmax')(x)# This is the model we will trainmodel = Model(inputs=base_model.input, outputs=predictions)model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['categorical_accuracy'])

4.在自定義數據集上訓練新層。

epochs = 10history = model.fit(    train_gen,     epochs=epochs,    verbose = 1,    validation_data=test_gen)model.save_weights('model_VGG16.h5')

當我們使用VGG16或VGG19作為預訓練模型創建模型時,由于驗證精度更高,因此選擇了使用VGG16的模型。另外,最佳epochs 是10。任何大于10的數均不會使驗證準確性的提高,也不會增加訓練與驗證準確性之間的差異。總結:轉移學習使我們可以充分利用深度學習在圖像分類中的優勢,而無需大型數據集。

04. 結果

為了更好地可視化驗證準確性,我創建了模型預測的混淆矩陣。通過此圖表,可以輕松評估模型的優缺點。優點:空-準確率為99%,召回率為100%;白棋和黑棋(WP和BP)-F1得分約為95%。劣勢:白騎士(WN)-召回率高(98%),但準確性卻很低(65%);白主教(WB)-召回率最低,為74%。

如何使用計算機視覺技術識別棋子及其在棋盤上的位置

測試數據的混淆矩陣

05. 應用

該應用程序的目標是使用CNN模型并可視化每個步驟的性能。我們創建了cv_chess.py,它清楚地顯示了步驟,并創建了cv_chess_functions.py,它顯示了每個步驟的詳細信息。此應用程序保存實時視頻流中的原始幀,每個正方形的64個裁剪圖像以及棋盤的最終2D圖像。

print('Working...')        # Save the frame to be analyzed        cv2.imwrite('frame.jpeg', frame)        # Low-level CV techniques (grayscale & blur)        img, gray_blur = read_img('frame.jpeg')        # Canny algorithm        edges = canny_edge(gray_blur)        # Hough Transform        lines = hough_line(edges)        # Separate the lines into vertical and horizontal lines        h_lines, v_lines = h_v_lines(lines)        # Find and cluster the intersecting        intersection_points = line_intersections(h_lines, v_lines)        points = cluster_points(intersection_points)        # Final coordinates of the board        points = augment_points(points)        # Crop the squares of the board a organize into a sorted list        x_list = write_crop_images(img, points, 0)        img_filename_list = grab_cell_files()        img_filename_list.sort(key=natural_keys)        # Classify each square and output the board in Forsyth-Edwards Notation (FEN)        fen = classify_cells(model, img_filename_list)        # Create and save the board image from the FEN        board = fen_to_image(fen)        # Display the board in ASCII        print(board)# Display and save the chessboard image        board_image = cv2.imread('current_board.png')        cv2.imshow('current board', board_image)        print('Completed!')

原文標題:基于計算機視覺的棋盤圖像識別

文章出處:【微信公眾號:機器視覺智能檢測】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7104

    瀏覽量

    89295
  • 計算機
    +關注

    關注

    19

    文章

    7525

    瀏覽量

    88328
  • 圖像
    +關注

    關注

    2

    文章

    1088

    瀏覽量

    40515

原文標題:基于計算機視覺的棋盤圖像識別

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    讓機器“看見”—計算機視覺入門及實戰 第二期基礎技術

    過優異成績。其主要的興趣是關注人工智能特別是計算機視覺技術如何從技術、產品和商業角度真實世界中大規模落地。主題簡介及亮點:本次直播,講者將
    發表于 09-04 17:56

    單片機控制的13*13路棋盤能夠自動感知棋子位置棋盤棋子走勢

    要求做出一個單片機控制的13*13路棋盤,能夠自動感知棋子位置棋盤棋子走勢,并具備一些五子棋對弈功能,此電子
    發表于 04-10 22:27

    計算機視覺及其焊接中的應用

    簡要闡述了計算機視覺的基本原理、系統結構和計算機視覺的基本處理方法,并著重講解了焊接自動化領域的應用情況。關鍵詞:
    發表于 07-18 10:19 ?9次下載

    基于OpenCV的計算機視覺技術實現

    基于OpenCV的計算機視覺技術實現OpencV是用來實現計算機視覺相關技術的開放源碼工作庫,是
    發表于 11-23 21:06 ?0次下載
    基于OpenCV的<b class='flag-5'>計算機</b><b class='flag-5'>視覺</b><b class='flag-5'>技術</b>實現

    計算機視覺講義

    計算機視覺講義:機器視覺是研究用計算機來模擬生物外顯或宏觀視覺功能的科學和技術.機器
    發表于 03-19 08:08 ?0次下載

    計算機視覺與機器視覺區別

     “計算機視覺”,是指用計算機實現人的視覺功能,對客觀世界的三維場景的感知、識別和理解。計算機
    的頭像 發表于 12-08 09:27 ?1.3w次閱讀

    為什么說現在是計算機視覺最好的時代?

    過程極具挑戰性,光是隔離圖像并進行識別的簡單概念就花費了研究人員大量的時間。經過多年的努力,使用計算機視覺軟件和硬件算法部署深度學習技術的企業
    的頭像 發表于 07-29 18:27 ?2244次閱讀

    使用計算機視覺和人工智能來識別X射線中的計算機模型

    這些模型使用計算機視覺和人工智能(AI)分析胸部X射線圖像。它可以對肉眼通常無法識別的信息進行分類,并有助于診斷。
    發表于 05-29 11:07 ?967次閱讀

    計算機視覺技術簡介

    由于“計算機視覺”反映了對視覺環境及其上下文的相對理解,因此,一些科學家認為,該領域為人工智能領域鋪平了道路。那么什么是計算機
    發表于 07-11 11:24 ?4537次閱讀

    剖析計算機視覺識別簡史

    最近,物體識別已經成為計算機視覺和 AI 最令人激動的領域之一。即時地識別出場景中所有的物體的能力似乎已經不再是秘密。隨著卷積神經網絡架構的發展,以及大型訓練數據集和高級
    的頭像 發表于 04-30 10:14 ?2819次閱讀
    剖析<b class='flag-5'>計算機</b><b class='flag-5'>視覺</b><b class='flag-5'>識別</b>簡史

    計算機視覺識別是如何工作的?

    計算機視覺識別是一種人工智能技術,旨在使計算機系統從數字圖像、視頻等視覺信息中
    的頭像 發表于 02-09 13:41 ?3908次閱讀

    使用計算機視覺進行電梯乘客計數

    電子發燒友網站提供《使用計算機視覺進行電梯乘客計數.zip》資料免費下載
    發表于 06-12 15:35 ?0次下載
    使<b class='flag-5'>用計算機</b><b class='flag-5'>視覺</b>進行電梯乘客計數

    機器視覺計算機視覺的區別

    機器視覺計算機視覺的區別 機器視覺計算機視覺是兩個相關但不同的概念。雖然許多人使用這兩個術語
    的頭像 發表于 08-09 16:51 ?2062次閱讀

    計算機視覺的工作原理和應用

    計算機視覺(Computer Vision,簡稱CV)是一門跨學科的研究領域,它利用計算機和數學算法來模擬人類視覺系統對圖像和視頻進行識別
    的頭像 發表于 07-10 18:24 ?2169次閱讀

    機器視覺計算機視覺有什么區別

    機器視覺計算機視覺是兩個密切相關但又有所區別的概念。 一、定義 機器視覺 機器視覺,又稱為計算機
    的頭像 發表于 07-16 10:23 ?573次閱讀
    主站蜘蛛池模板: 日日做日日摸夜夜爽| 天堂中文在线网| 欧美视频一区在线观看| 免费看av的网址| 免费看啪啪的网站| 国产精品资源在线观看| 日本一本高清| 天天综合天天| 在线观看886影院成人影院| 国产女主播在线| 男人的天堂天堂网| 日本高清中文字幕在线观穿线视频 | 男人的午夜天堂| 在线天堂中文www官网| 亚洲一区免费视频| 男人操女人免费| 亚洲一区二区三区免费在线观看 | 久久午夜影视| 日本在线看小视频网址| 久久黄色网| 国产不卡毛片| 国产精品露脸脏话对白| 欧美极品一区| 91大神在线看| 一区二区视屏| 一区二区3区免费视频| 二区三区在线| 婷婷激情四月| 亚洲人成电影在线| 亚洲成人在线免费| 网站免费黄| 嫩草影院地址一地址二| aaa一级| 天天拍天天干天天操| 天天干天天色天天干| 2021国产精品| 欧美色网在线| 伊人五月婷婷| 四虎国产精品永久在线| 三级在线观看国产| 女人张开腿给人桶免费视频|