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

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

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

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

【飛騰派4G版免費試用】 第三章:抓取圖像,手動標注并完成自定義目標檢測模型訓練和測試

楊永勝 ? 來源:iysheng ? 作者:iysheng ? 2023-12-16 09:55 ? 次閱讀

抓取圖像,手動標注并完成自定義目標檢測模型訓練和測試

在第二章中,我介紹了模型訓練的一般過程,其中關(guān)鍵的過程是帶有標注信息的數(shù)據(jù)集獲取。訓練過程中可以已有的數(shù)據(jù)集合不能滿足自己的要求,這時候就需要自己獲取素材并進行標注然后完成模型的訓練,本章就介紹下,如何從網(wǎng)絡(luò)抓取素材并完成佩奇的目標檢測。整個過程由如下幾個部分:

  1. 抓取素材,這里我使用下面的python腳本完成
#!/bin/python3
# 支持根據(jù)關(guān)鍵詞抓取百度圖片搜索的圖片

import requests
import os
import re

def get_images_from_baidu(keyword, page_num, save_dir):
    # UA 偽裝:當前爬取信息偽裝成瀏覽器
    # 將 User-Agent 封裝到一個字典中
    # 【(網(wǎng)頁右鍵 → 審查元素)或者 F12】 → 【Network】 → 【Ctrl+R】 → 左邊選一項,右邊在 【Response Hearders】 里查找
    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
    # 請求的 url
    url = 'https://image.baidu.com/search/acjson?'
    n = 0
    for pn in range(0, 30 * page_num, 30):
        # 請求參數(shù)
        param = {'tn': 'resultjson_com',
                 # 'logid': '7603311155072595725',
                 'ipn': 'rj',
                 'ct': 201326592,
                 'is': '',
                 'fp': 'result',
                 'queryWord': keyword,
                 'cl': 2,
                 'lm': -1,
                 'ie': 'utf-8',
                 'oe': 'utf-8',
                 'adpicid': '',
                 'st': -1,
                 'z': '',
                 'ic': '',
                 'hd': '',
                 'latest': '',
                 'copyright': '',
                 'word': keyword,
                 's': '',
                 'se': '',
                 'tab': '',
                 'width': '',
                 'height': '',
                 'face': 0,
                 'istype': 2,
                 'qc': '',
                 'nc': '1',
                 'fr': '',
                 'expermode': '',
                 'force': '',
                 'cg': '',    # 這個參數(shù)沒公開,但是不可少
                 'pn': pn,    # 顯示:30-60-90
                 'rn': '30',  # 每頁顯示 30 條
                 'gsm': '1e',
                 '1618827096642': ''
                 }
        request = requests.get(url=url, headers=header, params=param)
        if request.status_code == 200:
            print('Request success.')
        request.encoding = 'utf-8'
        # 正則方式提取圖片鏈接
        html = request.text
        image_url_list = re.findall('"thumbURL":"(.*?)",', html, re.S)
        print(image_url_list)
        # # 換一種方式
        # request_dict = request.json()
        # info_list = request_dict['data']
        # # 看它的值最后多了一個,刪除掉
        # info_list.pop()
        # image_url_list = []
        # for info in info_list:
        #     image_url_list.append(info['thumbURL'])

        if not os.path.exists(save_dir):
            os.makedirs(save_dir)

        for image_url in image_url_list:
            image_data = requests.get(url=image_url, headers=header).content
            with open(os.path.join(save_dir, f'{n:06d}.jpg'), 'wb') as fp:
                fp.write(image_data)
            n = n + 1


if __name__ == '__main__':
    keyword = '佩奇'
    save_dir = keyword
    page_num = 3
    get_images_from_baidu(keyword, page_num, save_dir)
    print('Get images finished.')

將抓取的圖片,篩選以后(剔除沒有佩奇的圖片)分為兩組數(shù)據(jù),訓練集和檢驗集。結(jié)構(gòu)是類似這樣的:

? tree peppa_jpg/  | head -n 10
peppa_jpg/
├── 000000.jpg
├── 000001.jpg
├── 000002.jpg
├── 000003.jpg
├── 000004.jpg
├── 000005.jpg
├── 000006.jpg
├── 000007.jpg
├── 000008.jpg
┏─?[red]?─?[22:07:44]?─?[0]
┗─?[~/Projects/ai_track_feiteng/demo3]
? tree peppa_valid_jpg/  | head -n 10
peppa_valid_jpg/
├── 000067.jpg
├── 000072.jpg
├── 000077.jpg
├── 000078.jpg
├── 000079.jpg
├── 000083.jpg
├── 000088.jpg
├── 000089.jpg
├── 000090.jpg
  1. 手工標注素材,這里我使用的是 labelImg ,標注的過程類似這樣:wKgaomV5F8GAVCvhAALyhvKOdzw049.png

然后存儲為 PascalVOC 的 xml 文件。這里轉(zhuǎn)存之后是這樣的:

? tree peppa_xml/ | head -n 10
peppa_xml/
├── 000000.xml
├── 000001.xml
├── 000002.xml
├── 000004.xml
├── 000006.xml
├── 000007.xml
├── 000008.xml
├── 000010.xml
├── 000011.xml
┏─?[red]?─?[09:27:00]?─?[0]
┗─?[~/Projects/ai_track_feiteng/demo3]
? tree peppa_valid_xml/ | head -n 10
peppa_valid_xml/
├── 000067.xml
├── 000072.xml
├── 000077.xml
├── 000078.xml
├── 000079.xml
├── 000083.xml
├── 000088.xml
├── 000089.xml
├── 000090.xml
  1. 格式轉(zhuǎn)換為TFRecord 格式,這里我參考raccoon_dataset使用了兩個步驟,首先轉(zhuǎn)換為csv文件,然后再轉(zhuǎn)換為TFRecord 格式文件。這里我對其中涉及到的腳本進行了微調(diào),其中 xml_to_csv.py 文件我改成下下面的內(nèi)容:
#!/bin/python3.8

import os
import sys
import glob
import pandas as pd
import xml.etree.ElementTree as ET

def xml_to_csv(path):
    xml_list = []
    for xml_file in glob.glob(path + '/*.xml'):
        tree = ET.parse(xml_file)
        root = tree.getroot()
        for member in root.findall('object'):
            value = (root.find('filename').text,
                     int(root.find('size')[0].text),
                     int(root.find('size')[1].text),
                     member[0].text,
                     int(member[4][0].text),
                     int(member[4][1].text),
                     int(member[4][2].text),
                     int(member[4][3].text)
                     )
            xml_list.append(value)
    column_name = ['filename', 'width', 'height', 'class', 'xmin', 'ymin', 'xmax', 'ymax']
    xml_df = pd.DataFrame(xml_list, columns=column_name)
    return xml_df

def main(xml_path, csv_file):
    image_path = os.path.join(os.getcwd(), xml_path)
    xml_df = xml_to_csv(image_path)
    xml_df.to_csv(csv_file, index=None)
    print('Successfully converted xml to csv.')

if len(sys.argv) < 2:
    print("please input xml_path and out csv file")
else:
    main(sys.argv[1], sys.argv[2])

這里通過命令:

? ./red_xml2csv.py peppa_xml/ peppa_jpg/pegga_train_labels.csv
Successfully converted xml to csv.
? ./red_xml2csv.py peppa_valid_xml/ peppa_valid_jpg/peppa_valid_labels.csv
Successfully converted xml to csv.

就可以分別將訓練集和校驗集轉(zhuǎn)換為相應(yīng)的 csv 文件并存儲到圖像數(shù)據(jù)集的目錄中,因為后續(xù)會分別在對應(yīng)的目錄中執(zhí)行轉(zhuǎn)換為TFRecord格式的操作進行。

執(zhí)行的命令分別是:

?python3.8 ../generate_tfrecord.py --csv_input=pegga_train_labels.csv --output_path=pegga_train.record
?python3.8 ../generate_tfrecord.py --csv_input=pegga_valid_labels.csv --output_path=pegga_valid.record

至此,就完成了從原始的圖像數(shù)據(jù),到含有標注信息的TFRecord格式數(shù)據(jù)集的轉(zhuǎn)換。接下來就是訓練和校驗了。

  1. 訓練和校驗的過程和第二章一樣,只是數(shù)據(jù)集變了,這里只是展示下訓練過程和模型導出過程的截圖。

模型訓練:
Screenshot from 2023-12-15 12-49-23.png
模型導出:
Screenshot from 2023-12-15 12-47-55.png

模型到處完成后,我們會看到模型在如下目錄,以及其中的文件和從網(wǎng)上下載的TensorFlow2的模型壓縮包里面的結(jié)構(gòu)一樣。
Screenshot from 2023-12-16 09-40-21.png
我們可以對比看看,我從網(wǎng)上下載的efficientdet_d0_coco17_tpu-32模型中的內(nèi)容結(jié)構(gòu):
Screenshot from 2023-12-16 09-47-45.png

  1. 模型導出之后就是測試過程了,測試方法和第二章的方法一樣,我就直接附上我從網(wǎng)上下載的測試圖片和標注以后的圖片:

希望本章可以為想上手通過機器學習進行目標檢測的伙伴提供一點幫助,下一章,我就準備將模型部署到飛騰派進行測試了,敬請期待。

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

    關(guān)注

    1

    文章

    3315

    瀏覽量

    49233
  • 目標檢測
    +關(guān)注

    關(guān)注

    0

    文章

    211

    瀏覽量

    15664
  • 飛騰派
    +關(guān)注

    關(guān)注

    2

    文章

    9

    瀏覽量

    254
收藏 人收藏

    評論

    相關(guān)推薦

    飛騰4G免費試用】第四:部署模型飛騰的嘗試

    部署模型飛騰 本章作為一個這幾天,我嘗試將訓練的佩奇檢測模型部署到
    發(fā)表于 12-20 21:10

    飛騰4G免費試用】第五:使用C++部署tflite模型飛騰

    免費試用第三章抓取圖像手動標注
    發(fā)表于 12-27 21:17

    飛騰4G免費試用】初步認識飛騰4G版開發(fā)板

    這幾天收到飛騰 4G 基礎(chǔ)套件,給大家做個介紹,讓大家可以了解一下這塊開發(fā)板, 飛騰 4G
    發(fā)表于 01-02 22:23

    飛騰4G免費試用】大家來了解飛騰4G版開發(fā)板

    今天把收到的飛騰4G版開發(fā)板做各視頻,讓大家直觀的了解一下做工精細,布線合理,做工扎實的飛騰4G
    發(fā)表于 01-02 22:43

    飛騰4G免費試用飛騰開發(fā)板運行Ubuntu系統(tǒng)

    飛騰4G版開發(fā)板是一款做工精細,布線合理的開發(fā)板,今天給大家介紹一下如何運行Ubuntu系統(tǒng),下面是網(wǎng)上的資料,幫助大家快速認識飛騰
    發(fā)表于 01-08 22:40

    飛騰4G免費試用】來更多的了解飛騰4G版開發(fā)板!

    飛騰4G版開發(fā)板是由中電港螢火工場與飛騰合作推出的飛騰,搭載
    發(fā)表于 01-22 00:34

    飛騰4G免費試用飛騰4G版開發(fā)板套裝測試及環(huán)境搭建

    先簡單介紹一下這款飛騰4G版開發(fā)板套裝; 飛騰是由中電港螢火工場研發(fā)的一款面向行業(yè)工程師、學生和愛好者的開源硬件。主板處理器采用
    發(fā)表于 01-22 00:47

    飛騰4G免費試用4.手把手玩轉(zhuǎn)QT界面設(shè)計

    完成了使用Qt Designer進行界面設(shè)計的全部流程!是不是覺得像魔法一樣神奇呢?趕緊試試吧! 接上篇: 【飛騰4G
    發(fā)表于 01-27 12:49

    【新品體驗】飛騰4G版基礎(chǔ)套裝免費試用

    飛騰是由飛騰攜手中電港螢火工場研發(fā)的一款面向行業(yè)工程師、學生和愛好者的開源硬件,采用飛騰嵌入式四核處理器,兼容ARM V8架構(gòu),板載64位 DDR
    發(fā)表于 10-25 11:44

    飛騰4G免費試用第三章抓取圖像手動標注完成自定義目標檢測模型訓練測試

    抓取圖像手動標注完成自定義
    發(fā)表于 12-16 10:05

    信號與系統(tǒng)第三章課件PPT

    信號與系統(tǒng)第三第三章課件PPT。
    發(fā)表于 12-21 11:23 ?0次下載

    現(xiàn)代電路理論第三章

    現(xiàn)代電路系統(tǒng)第三章
    發(fā)表于 04-26 16:01 ?0次下載

    數(shù)字信號處理 第三章

    數(shù)字信號處理 第三章
    發(fā)表于 10-19 09:36 ?5次下載
    數(shù)字信號處理 <b class='flag-5'>第三章</b>

    邊干邊學機器視覺_第三章_圖像采集_完整版

    邊干邊學機器視覺_第三章_圖像采集_完整版
    發(fā)表于 03-11 15:32 ?0次下載

    飛騰4G免費試用】第四:部署模型飛騰的嘗試

    本章記錄這幾天嘗試將訓練的佩奇檢測模型部署到飛騰的階段總結(jié)。
    的頭像 發(fā)表于 12-20 20:54 ?2744次閱讀
    【<b class='flag-5'>飛騰</b><b class='flag-5'>派</b><b class='flag-5'>4G</b>版<b class='flag-5'>免費</b><b class='flag-5'>試用</b>】第四<b class='flag-5'>章</b>:部署<b class='flag-5'>模型</b>到<b class='flag-5'>飛騰</b><b class='flag-5'>派</b>的嘗試
    主站蜘蛛池模板: 亚洲国产精品热久久2022 | 好爽~~~~嗯~~~再快点明星 | 亚洲国内精品 | 亚洲婷婷综合中文字幕第一页 | 狠狠色 综合色区 | 天天插天天舔 | 中国日韩欧美中文日韩欧美色 | 一区不卡视频 | 久久天天躁狠狠躁夜夜2020一 | 欧美一级片在线免费观看 | 久久国产福利 | 天天干国产 | 高h文男主又粗又狠 | 成人免费一区二区三区 | mm365快播综合网 | 黄 在线| 欧美污视频网站 | 天天拍夜夜添久久精品免费 | 欧美区亚洲区 | 丁香婷婷综合五月六月 | 日本色婷婷 | 欧美激情片网站 | 国产综合第一页在线视频 | 色月| 日本最黄视频 | 乱好看的的激情伦小说 | 精品国产欧美一区二区最新 | 浮荡视频在线观看免费 | 月夜免费观看高清在线完整 | 国产精品午夜国产小视频 | 手机看片福利 | 韩国a级床戏大尺度在线观看 | 中文字幕一区在线 | 狠狠鲁狠狠操 | 一个人看aaaa免费中文 | 成人国产激情福利久久精品 | 日本色图网站 | 中文字幕在线资源 | 99r8这里精品热视频免费看 | 国产高清视频免费最新在线 | 亚洲精品亚洲人成毛片不卡 |