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

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

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

第三章:訓(xùn)練圖像估計(jì)光照度算法模型

Red Linux ? 來(lái)源:Red Linux ? 作者:Red Linux ? 2024-11-06 15:57 ? 次閱讀

前言

這一篇就到了圖像估計(jì)光照度算法章節(jié),這篇我主要記錄如何使用 tensorflow2 訓(xùn)練一個(gè)從圖片中估計(jì)光照度的算法。一般的流程是拍攝多張圖片以及用光照度計(jì)來(lái)檢測(cè)其光照度值,分別作為輸入和輸出。但是在本章呢,為了起到演示的作用,數(shù)據(jù)集我會(huì)使用 [MIT-Adobe FiveK Dataset] 。光照度值呢,我使用圖片的 rgb 數(shù)值經(jīng)過(guò)算法r0.2126+g0.7152+b*0.0722計(jì)算亮度。這樣就有了一定數(shù)量的數(shù)據(jù)集。也就有基礎(chǔ)進(jìn)行后續(xù)的訓(xùn)練和測(cè)試了。下面準(zhǔn)備進(jìn)入正文。

數(shù)據(jù)獲取

因?yàn)?MIT-Adobe FiveK Dataset 數(shù)據(jù)集包含了 5000 張?jiān)?dng 圖像和 5 和專家A,B,C,D,E進(jìn)行處理之后的 tiff 圖像(一般地,這個(gè)數(shù)據(jù)集是用來(lái)訓(xùn)練圖像增強(qiáng)相關(guān)的模型的,我這里就用來(lái)訓(xùn)練光照度估計(jì)算法了,嘿嘿)。因?yàn)橥暾臄?shù)據(jù)壓縮包太大了~50GB。受限電腦的容量和速度,我選擇了使用腳本逐個(gè)下載這些圖片(因?yàn)檫@些圖片的下載路徑有規(guī)律,再加上這些圖片的名字在官網(wǎng)可以下載下來(lái),所以腳本就讀取包含圖片名字的文件,然后逐個(gè)拼接下載路徑,使用 curl 工具完成下載)。這里,我選擇了下載原始 dng 圖片和專家 C 的 tiff 圖片。
下載 dng 原始文件的腳本是:

#!/usr/bin/bash

#改變當(dāng)前工作路徑
CURRENT_PATH="/home/red/Downloads/fivek_dataset/expertc"
#本文件所在路徑
cd ${CURRENT_PATH}
#改變當(dāng)前路徑

#存儲(chǔ)圖像名稱的list
img_lst=[]
#讀取圖片名列表
files_name=`cat filesAdobe.txt`
files_mit_name=`cat filesAdobeMIT.txt`

j=0
for i in ${files_name};do
    # https://data.csail.mit.edu/graphics/fivek/img/dng/a0001-jmac_DSC1459.dng
    URL='https://data.csail.mit.edu/graphics/fivek/img/dng/'${i}'.dng'
    file_cur=${URL##*/}
    echo "Downloading ${URL}@${j}"
    j=$((j+1))
    if [ -f ${file_cur} ];then
        echo "${file_cur} exist"
    else
        # echo "${file_cur} no exist, it's you"
        # break
        curl -O ${URL}
    fi
done

下載專家 C 處理后的文件腳本是:

#!/usr/bin/bash

#改變當(dāng)前工作路徑
CURRENT_PATH="/home/red/Downloads/fivek_dataset/expertc"
#本文件所在路徑
cd ${CURRENT_PATH}
#改變當(dāng)前路徑

#存儲(chǔ)圖像名稱的list
img_lst=[]
#讀取圖片名列表
files_name=`cat filesAdobe.txt`
files_mit_name=`cat filesAdobeMIT.txt`

j=0
for i in ${files_name};do
    #下載由 expert C 所調(diào)整的圖像(可根據(jù)需要下載其它的四類圖像)
    URL='https://data.csail.mit.edu/graphics/fivek/img/tiff16_c/'${i}'.tif'
    file_cur=${URL##*/}
    echo "Downloading ${URL}@${j}"
    j=$((j+1))
    if [ -f ${file_cur} ];then
        echo "${file_cur} exist"
    else
        echo "${file_cur} no exist, it's you"
        # break
        curl -O ${URL}
    fi
done

經(jīng)過(guò)了好幾天斷斷續(xù)續(xù)的下載,最后我一共得到了 1000 張左右圖片。有了圖片之后,下一步就是計(jì)算光照度了,這里使用 python 腳本和 pillow 包完成,為了后續(xù)移植到 AI300G 上,我將圖片縮放到了統(tǒng)一的 255*255。并且將計(jì)算的光照度和圖像的名稱存儲(chǔ)到一個(gè) csv 文件。這部分腳本如下:

#!/bin/env python3

import sys
import csv
import os
import re

from PIL import Image

gs_illumiance_csv_file_fd=0
gs_illumiance_csv_file_name='illumiance_estimate.csv'
gs_illumiance_data_list=[['Name', 'Illuminance']]
DEST_DIR_NAME=r'PNG255'

def illuname_estimate(t):
    r,g,b=t
    return r*0.2126+g*0.7152+b*0.0722


def get_pic_pixels(pic_name):
    with Image.open(pic_name) as pic:
        ans=0
        pic=pic.resize((255,255))
        print(f'raw name:{pic_name}')
        match=re.match(r'w+/(S+).w+', pic_name)
        if match:
            basename=match.group(1)
            basename=DEST_DIR_NAME+'/'+basename+'.png'
            print(f'new name:{basename}')
            pic.save(basename)
            #  pic.show()
        width, heigh = pic.size
        for x in range(width):
            for y in range(heigh):
                r, g, b = pic.getpixel((x, y))
                ans=ans+illuname_estimate((r,g,b))

    # 光照度取整
    ans=round(ans)
    print(f'{pic_name}: illuname ans:{ans}')
    return ans

def insert_item(pic_name, illumiance_estimate):
    global gs_illumiance_csv_file_fd
    global gs_illumiance_csv_file_name
    global gs_illumiance_data_list
    item_template=['NONE', -1]
    item_template[0]=pic_name
    item_template[1]=illumiance_estimate
    gs_illumiance_data_list.append(item_template)

def do_with_dir(dir_name):
    for filename in os.listdir(dir_name):
        filepath=os.path.join(dir_name, filename)
        if (os.path.isfile(filepath)):
            print("do input %s" %(filepath))
            ans=get_pic_pixels(filepath)
            insert_item(filename, ans)
            #  return

if len(sys.argv) > 1:
    print("do input dir:%s" %(sys.argv[1]))
    if not os.path.exists(DEST_DIR_NAME):
        os.makedirs(DEST_DIR_NAME)
    do_with_dir(sys.argv[1])
    gs_illumiance_csv_file_fd=open(gs_illumiance_csv_file_name, 'w', newline='')
    csv.writer(gs_illumiance_csv_file_fd).writerows(gs_illumiance_data_list)
else:
    print("Please input pic name")

這樣就得到了類似下面的數(shù)據(jù)集:

? head illumiance_estimate.csv
Name,Illuminance
a0351-MB_070908_006_dng.jpeg,3680630
a0100-AlexWed07-9691_dng.jpeg,1258657
a0147-kme_333.jpeg,5168820
a0261-_DSC2228_dng.jpeg,2571498
a0255-_DSC1448.jpeg,8747593
a0054-kme_097.jpeg,5351908
a0393-_DSC0040.jpeg,1783394
a0304-dgw_137_dng.jpeg,3118835
a0437-jmacDSC_0011.jpeg,6140107

至此有了一定數(shù)量的數(shù)據(jù)集(這里我使用了667張照片),接下來(lái)就是模型訓(xùn)練了。

模型訓(xùn)練

模型訓(xùn)練的基本思想就是,首先將數(shù)據(jù)集按比例(4:1)拆分為訓(xùn)練集和測(cè)試集,然后使用 tensorflow 建立模型訓(xùn)練參數(shù)進(jìn)行檢驗(yàn)。
大概流程是:

  1. 首先是根據(jù) csv 文件建立 tensorflow dataset 格式的數(shù)據(jù)集;
  2. 建立模型使用數(shù)據(jù)集進(jìn)行模型訓(xùn)練和測(cè)試

這部分代碼為:

#!/usr/bin/python3.11

TF_ENABLE_ONEDNN_OPTS=0

import numpy as np
import os
import PIL
import PIL.Image
import tensorflow as tf
import pathlib
import csv
import pandas as pd
import tensorflow.data
import sys
import matplotlib.pyplot as plt

AUTOTUNE=tensorflow.data.AUTOTUNE
BATCH_SIZE=32
IMG_WIDTH=255
IMG_HEIGHT=255
ILLUMINACE_FILE=r'illumiance_estimate.csv'
print(tf.__version__)

import tensorflow as tf
import pandas as pd

image_count = len(os.listdir(r'JP'))
print(f'whole img count={image_count}')
# 假設(shè)CSV文件有兩列:'image_path' 和 'label'
df = pd.read_csv(ILLUMINACE_FILE)

# 將DataFrame轉(zhuǎn)換為T(mén)ensorFlow可以處理的格式
image_paths = df['Name'].values
labels = df['Illuminance'].values
labels = labels.astype(np.float32)
labels /= 16777215.0

# 創(chuàng)建一個(gè)Dataset
gs_dataset = tf.data.Dataset.from_tensor_slices((image_paths, labels))

print(type(gs_dataset))
print(gs_dataset)
print(r'-------------------------------------------')
# 定義一個(gè)函數(shù)來(lái)加載和預(yù)處理圖像
def load_and_preprocess_image(image_path, label):
    print(image_path)
    image_path='JP/'+image_path
    image = tf.io.read_file(image_path)
    image = tf.image.decode_jpeg(image, channels=3)
    image = tf.image.resize(image, [IMG_WIDTH, IMG_HEIGHT])
    #  image /= 255.0  # 歸一化
    return image, label

# 應(yīng)用這個(gè)函數(shù)到Dataset上
gs_dataset = gs_dataset.map(load_and_preprocess_image)
# 打亂數(shù)據(jù)
gs_dataset = gs_dataset.shuffle(image_count, reshuffle_each_iteration=False)

val_size = int(image_count * 0.2)

gs_train_ds = gs_dataset.skip(val_size)
gs_val_ds = gs_dataset.take(val_size)

def configure_for_performance(ds):
    ds = ds.cache()
    ds = ds.shuffle(buffer_size=1000)
    ds = ds.batch(BATCH_SIZE)
    ds = ds.prefetch(buffer_size=AUTOTUNE)
    return ds

gs_train_ds = configure_for_performance(gs_train_ds)
gs_val_ds = configure_for_performance(gs_val_ds)

image_batch, illuminance_batch = next(iter(gs_train_ds))

#  plt.figure(figsize=(10, 10))

#  for i in range(9):
  #  ax = plt.subplot(3, 3, i + 1)
  #  print(image_batch[i])
  #  #  img_data=image_batch[i].numpy()*255.0
  #  #  plt.imshow(img_data.astype("uint8"))
  #  plt.imshow(image_batch[i].numpy().astype("uint8"))
  #  illuminance = illuminance_batch[i]
  #  plt.title(illuminance.numpy())
  #  plt.axis("off")

#  plt.show()

#  sys.exit()

model = tf.keras.Sequential([
  tf.keras.layers.Rescaling(1./255),
  tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(IMG_WIDTH, IMG_HEIGHT, 3)),
  tf.keras.layers.MaxPooling2D(2, 2),
  tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
  tf.keras.layers.MaxPooling2D(2, 2),
  tf.keras.layers.Conv2D(32, 3, activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dense(1)
])

model.compile(
  optimizer='adam',
  loss='mean_squared_error')

model.fit(
  gs_train_ds,
  validation_data=gs_val_ds,
  epochs=12
)

model.save("illu_v01")

執(zhí)行上述代碼,可以看到最后的 loss 和 val_loss 為:

? ./train_tf2_v2.py
2024-08-08 13:41:48.341117: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
2024-08-08 13:41:48.342596: I external/local_tsl/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used.
2024-08-08 13:41:48.363696: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
2024-08-08 13:41:48.363729: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
2024-08-08 13:41:48.364549: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
2024-08-08 13:41:48.368601: I external/local_tsl/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used.
2024-08-08 13:41:48.368762: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2024-08-08 13:41:48.801750: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
2.15.0
whole img count=667
2024-08-08 13:41:51.138713: I external/local_xla/xla/stream_executor/cuda/cuda_executor.cc:901] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
2024-08-08 13:41:51.139135: W tensorflow/core/common_runtime/gpu/gpu_device.cc:2256] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
< class 'tensorflow.python.data.ops.from_tensor_slices_op._TensorSliceDataset' >
< _TensorSliceDataset element_spec=(TensorSpec(shape=(), dtype=tf.string, name=None), TensorSpec(shape=(), dtype=tf.float32, name=None)) >
-------------------------------------------
Tensor("args_0:0", shape=(), dtype=string)
Epoch 1/12
17/17 [==============================] - 11s 603ms/step - loss: 98.9302 - val_loss: 0.1012
Epoch 2/12
17/17 [==============================] - 8s 495ms/step - loss: 0.0493 - val_loss: 0.0043
Epoch 3/12
17/17 [==============================] - 8s 481ms/step - loss: 0.0078 - val_loss: 0.0043
Epoch 4/12
17/17 [==============================] - 8s 479ms/step - loss: 0.0025 - val_loss: 0.0040
Epoch 5/12
17/17 [==============================] - 8s 477ms/step - loss: 0.0023 - val_loss: 0.0029
Epoch 6/12
17/17 [==============================] - 8s 480ms/step - loss: 0.0021 - val_loss: 0.0028
Epoch 7/12
17/17 [==============================] - 8s 482ms/step - loss: 0.0020 - val_loss: 0.0028
Epoch 8/12
17/17 [==============================] - 8s 482ms/step - loss: 0.0019 - val_loss: 0.0027
Epoch 9/12
17/17 [==============================] - 8s 482ms/step - loss: 0.0018 - val_loss: 0.0026
Epoch 10/12
17/17 [==============================] - 8s 485ms/step - loss: 0.0017 - val_loss: 0.0026
Epoch 11/12
17/17 [==============================] - 8s 485ms/step - loss: 0.0015 - val_loss: 0.0023
Epoch 12/12
17/17 [==============================] - 8s 484ms/step - loss: 0.0011 - val_loss: 0.0020

并且模型也保存在了 illu_v01 目錄。

? ls illu_v01/
assets  fingerprint.pb  keras_metadata.pb  saved_model.pb  variables

模型測(cè)試

現(xiàn)在有可模型,下面就是測(cè)試下自己的模型,使用下述 python 代碼在 PC 端進(jìn)行測(cè)試:

#!/usr/bin/python3.11

import numpy as np
import os
import PIL
import PIL.Image
import tensorflow as tf
import pathlib
import csv
import pandas as pd
import tensorflow.data
import sys
import matplotlib.pyplot as plt

IMG_WIDTH=255
IMG_HEIGHT=255

reload_model=tf.keras.models.load_model("illu_v01")
image_path=r'./JP/a0001-jmac_DSC1459.jpeg'
if len(sys.argv) < 2:
    print('Please input some pic to predict')
    sys.exit()
else:
    image_path=sys.argv[1]


image = tf.io.read_file(image_path)
image = tf.image.decode_jpeg(image, channels=3)
image = tf.image.resize(image, [IMG_WIDTH, IMG_HEIGHT])
image = tf.reshape(image, [1, IMG_WIDTH, IMG_HEIGHT, 3])

#  sys.exit()

predictions=reload_model.predict(image)
print(f'{image_path} ans={predictions*16777215}')

簡(jiǎn)單測(cè)試下模型:

check_tf2.py JP/a0001-jmac_DSC1459.jpeg
2024-08-08 13:57:08.263506: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
2024-08-08 13:57:08.264895: I external/local_tsl/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used.
2024-08-08 13:57:08.285614: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
2024-08-08 13:57:08.285646: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
2024-08-08 13:57:08.286510: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
2024-08-08 13:57:08.290464: I external/local_tsl/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used.
2024-08-08 13:57:08.290608: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2024-08-08 13:57:08.725843: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
2024-08-08 13:57:11.051710: I external/local_xla/xla/stream_executor/cuda/cuda_executor.cc:901] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
2024-08-08 13:57:11.051982: W tensorflow/core/common_runtime/gpu/gpu_device.cc:2256] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
1/1 [==============================] - 0s 57ms/step
JP/a0001-jmac_DSC1459.jpeg ans=[[check_tf2.py JP/a0001-jmac_DSC1459.jpeg
2024-08-08 13:57:08.263506: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
2024-08-08 13:57:08.264895: I external/local_tsl/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used.
2024-08-08 13:57:08.285614: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
2024-08-08 13:57:08.285646: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
2024-08-08 13:57:08.286510: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
2024-08-08 13:57:08.290464: I external/local_tsl/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used.
2024-08-08 13:57:08.290608: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2024-08-08 13:57:08.725843: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
2024-08-08 13:57:11.051710: I external/local_xla/xla/stream_executor/cuda/cuda_executor.cc:901] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
2024-08-08 13:57:11.051982: W tensorflow/core/common_runtime/gpu/gpu_device.cc:2256] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
1/1 [==============================] - 0s 57ms/step
JP/a0001-jmac_DSC1459.jpeg ans=[[5459503.]].]]

發(fā)現(xiàn)估計(jì)的光照度值是 5459503 和實(shí)際的 5363799 對(duì)比一下還是有15%左右的誤差。但是目前為止,整個(gè)模型訓(xùn)練測(cè)試流程已經(jīng)完成,下一步在是PC端模擬拉流使用模型對(duì)圖像進(jìn)行實(shí)時(shí)計(jì)算了,期待哦。

審核編輯 黃宇

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

    關(guān)注

    23

    文章

    4624

    瀏覽量

    93119
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3279

    瀏覽量

    48976
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AI模型部署邊緣設(shè)備的奇妙之旅:目標(biāo)檢測(cè)模型

    可能在訓(xùn)練數(shù)據(jù)上表現(xiàn)良好,但在遇到未曾見(jiàn)過(guò)的數(shù)據(jù)(例如不同環(huán)境、光照條件、角度等)時(shí)性能可能會(huì)下降。 對(duì)異常值敏感:如果訓(xùn)練集中包含異常值或者噪聲數(shù)據(jù),這可能導(dǎo)致模型學(xué)習(xí)到不正確的模式
    發(fā)表于 12-19 14:33

    基于差分卷積神經(jīng)網(wǎng)絡(luò)的低照度車牌圖像增強(qiáng)網(wǎng)絡(luò)

    網(wǎng)絡(luò),將車牌的紋理信息解耦為水平垂直和對(duì)角線兩個(gè)方向,對(duì)不同尺度空間的低照度圖像進(jìn)行紋理增強(qiáng)。為了避免增強(qiáng)結(jié)果局部過(guò)曝或低曝,該方法使用YCbCr顏色空間的損失函數(shù)來(lái)優(yōu)化模型。 圖像
    的頭像 發(fā)表于 11-11 10:29 ?236次閱讀
    基于差分卷積神經(jīng)網(wǎng)絡(luò)的低<b class='flag-5'>照度</b>車牌<b class='flag-5'>圖像</b>增強(qiáng)網(wǎng)絡(luò)

    AI大模型訓(xùn)練數(shù)據(jù)來(lái)源分析

    學(xué)術(shù)機(jī)構(gòu)、政府組織或企業(yè)公開(kāi)發(fā)布,涵蓋了各種類型的數(shù)據(jù),如圖像、文本、音頻、視頻等。例如: ImageNet :一個(gè)廣泛用于圖像識(shí)別任務(wù)的大規(guī)模圖像數(shù)據(jù)集。 Common Crawl :提供了大量的網(wǎng)頁(yè)抓取數(shù)據(jù)以供自然語(yǔ)言處理
    的頭像 發(fā)表于 10-23 15:32 ?875次閱讀

    如何訓(xùn)練自己的AI大模型

    訓(xùn)練AI大模型之前,需要明確自己的具體需求,比如是進(jìn)行自然語(yǔ)言處理、圖像識(shí)別、推薦系統(tǒng)還是其他任務(wù)。 二、數(shù)據(jù)收集與預(yù)處理 數(shù)據(jù)收集 根據(jù)任務(wù)需求,收集并準(zhǔn)備好足夠的數(shù)據(jù)集。 可以選擇公開(kāi)數(shù)據(jù)集、自有數(shù)據(jù)集或者通過(guò)數(shù)據(jù)標(biāo)
    的頭像 發(fā)表于 10-23 15:07 ?2334次閱讀

    索尼FCB-EV9500M的星光級(jí)低照度

    SONY FCB-EV9500M一體化攝像機(jī)模組搭載了先進(jìn)的圖像傳感技術(shù)和圖像處理算法,能夠在極低的光照條件下依然呈現(xiàn)出清晰、細(xì)膩的畫(huà)質(zhì),在0.009Lx低
    的頭像 發(fā)表于 10-18 18:10 ?308次閱讀
    索尼FCB-EV9500M的星光級(jí)低<b class='flag-5'>照度</b>

    如何訓(xùn)練ai大模型

    訓(xùn)練AI大模型是一個(gè)復(fù)雜且耗時(shí)的過(guò)程,涉及多個(gè)關(guān)鍵步驟和細(xì)致的考量。 一、數(shù)據(jù)準(zhǔn)備 1. 數(shù)據(jù)收集 確定數(shù)據(jù)類型 :根據(jù)模型的應(yīng)用場(chǎng)景,確定需要收集的數(shù)據(jù)類型,如文本、圖像、音頻等。
    的頭像 發(fā)表于 10-17 18:17 ?1228次閱讀

    【「大模型時(shí)代的基礎(chǔ)架構(gòu)」閱讀體驗(yàn)】+ 第一、二學(xué)習(xí)感受

    程分為下圖中的四步: 此后引入機(jī)器學(xué)習(xí)開(kāi)發(fā)框架TensorFlow,該框架下集成了多種“輪子”,但要避免“重復(fù)造輪子”。下一小節(jié)是分布式AI訓(xùn)練,從中知道了訓(xùn)練測(cè)略分為模型并行策略和數(shù)據(jù)并行策略,第二
    發(fā)表于 10-10 10:36

    【「嵌入式Hypervisor:架構(gòu)、原理與應(yīng)用」閱讀體驗(yàn)】+第三四章閱讀報(bào)告

    在深入閱讀了《嵌入式Hypervisor:架構(gòu)、原理與應(yīng)用》的第三、四后,我對(duì)嵌入式Hypervisor的設(shè)計(jì)與實(shí)現(xiàn)技術(shù)有了更為詳盡和系統(tǒng)的理解。以下是我對(duì)這兩內(nèi)容的閱讀報(bào)告: 第三章
    發(fā)表于 10-09 18:29

    《DNK210使用指南 -CanMV版 V1.0》第三章 CanMV簡(jiǎn)介

    第三章 CanMV簡(jiǎn)介 本章將對(duì)CanMV進(jìn)行簡(jiǎn)單介紹本章分為如下幾個(gè)小節(jié):3.1 初識(shí)CanMV 3.2 CanMV的應(yīng)用開(kāi)發(fā)方式 3.1 初識(shí)CanMVCanMV是嘉楠科技針對(duì)AIOT編程
    發(fā)表于 09-03 10:13

    迅為電子RK3588S開(kāi)發(fā)板第三章Buildroot系統(tǒng)功能測(cè)試

    迅為電子RK3588S開(kāi)發(fā)板第三章Buildroot系統(tǒng)功能測(cè)試
    的頭像 發(fā)表于 09-02 14:45 ?844次閱讀
    迅為電子RK3588S開(kāi)發(fā)板<b class='flag-5'>第三章</b>Buildroot系統(tǒng)功能測(cè)試

    人臉識(shí)別模型訓(xùn)練流程

    據(jù)準(zhǔn)備階段,需要收集大量的人臉圖像數(shù)據(jù),并進(jìn)行數(shù)據(jù)清洗、標(biāo)注和增強(qiáng)等操作。 1.1 數(shù)據(jù)收集 數(shù)據(jù)收集是人臉識(shí)別模型訓(xùn)練的第一步??梢酝ㄟ^(guò)網(wǎng)絡(luò)爬蟲(chóng)、公開(kāi)數(shù)據(jù)集、合作伙伴等途徑收集人臉圖像
    的頭像 發(fā)表于 07-04 09:19 ?1047次閱讀

    人臉識(shí)別模型訓(xùn)練是什么意思

    人臉識(shí)別模型訓(xùn)練是指通過(guò)大量的人臉數(shù)據(jù),使用機(jī)器學(xué)習(xí)或深度學(xué)習(xí)算法,訓(xùn)練出一個(gè)能夠識(shí)別和分類人臉的模型。這個(gè)
    的頭像 發(fā)表于 07-04 09:16 ?674次閱讀

    深度學(xué)習(xí)模型訓(xùn)練過(guò)程詳解

    深度學(xué)習(xí)模型訓(xùn)練是一個(gè)復(fù)雜且關(guān)鍵的過(guò)程,它涉及大量的數(shù)據(jù)、計(jì)算資源和精心設(shè)計(jì)的算法。訓(xùn)練一個(gè)深度學(xué)習(xí)模型,本質(zhì)上是通過(guò)優(yōu)化
    的頭像 發(fā)表于 07-01 16:13 ?1403次閱讀

    求助,關(guān)于OP191輸出波形的問(wèn)題求解

    下載了官網(wǎng)的OP191的SPICE模型,用LTspice進(jìn)行仿真,原理圖和仿真結(jié)果如下:我的疑問(wèn)就是第三章圖中,當(dāng)Vin=0的時(shí)候,Vout≠0,仿真結(jié)果是15mV左右,這個(gè)是怎么回事?謝謝
    發(fā)表于 05-20 07:37

    【大語(yǔ)言模型:原理與工程實(shí)踐】大語(yǔ)言模型的預(yù)訓(xùn)練

    訓(xùn)練數(shù)據(jù)時(shí),數(shù)量、質(zhì)量和多樣性者缺一不可。 數(shù)據(jù)的多樣性對(duì)于大語(yǔ)言模型至關(guān)重要,這主要體現(xiàn)在數(shù)據(jù)的類別和來(lái)源兩個(gè)方面。豐富的數(shù)據(jù)類別能夠提供多樣的語(yǔ)言表達(dá)特征,如官方知識(shí)型數(shù)據(jù)、口語(yǔ)化表達(dá)的論壇
    發(fā)表于 05-07 17:10