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 和專(zhuān)家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 圖片和專(zhuān)家 C 的 tiff 圖片。
下載 dng 原始文件的腳本是:

#!/usr/bin/bash

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

#存儲(chǔ)圖像名稱(chēng)的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

下載專(zhuān)家 C 處理后的文件腳本是:

#!/usr/bin/bash

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

#存儲(chǔ)圖像名稱(chēng)的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ù)需要下載其它的四類(lèi)圖像)
    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ēng)存儲(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")

這樣就得到了類(lèi)似下面的數(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

    文章

    4592

    瀏覽量

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

    關(guān)注

    1

    文章

    3119

    瀏覽量

    48663
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    網(wǎng)絡(luò),將車(chē)牌的紋理信息解耦為水平垂直和對(duì)角線兩個(gè)方向,對(duì)不同尺度空間的低照度圖像進(jìn)行紋理增強(qiáng)。為了避免增強(qiáng)結(jié)果局部過(guò)曝或低曝,該方法使用YCbCr顏色空間的損失函數(shù)來(lái)優(yōu)化模型。 圖像
    的頭像 發(fā)表于 11-11 10:29 ?55次閱讀
    基于差分卷積神經(jīng)網(wǎng)絡(luò)的低<b class='flag-5'>照度</b>車(chē)牌<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ā)布,涵蓋了各種類(lèi)型的數(shù)據(jù),如圖像、文本、音頻、視頻等。例如: ImageNet :一個(gè)廣泛用于圖像識(shí)別任務(wù)的大規(guī)模圖像數(shù)據(jù)集。 Common Crawl :提供了大量的網(wǎng)頁(yè)抓取數(shù)據(jù)以供自然語(yǔ)言處理
    的頭像 發(fā)表于 10-23 15:32 ?318次閱讀

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

    SONY FCB-EV9500M一體化攝像機(jī)模組搭載了先進(jìn)的圖像傳感技術(shù)和圖像處理算法,能夠在極低的光照條件下依然呈現(xiàn)出清晰、細(xì)膩的畫(huà)質(zhì),在0.009Lx低
    的頭像 發(fā)表于 10-18 18:10 ?199次閱讀
    索尼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ù)類(lèi)型 :根據(jù)模型的應(yīng)用場(chǎng)景,確定需要收集的數(shù)據(jù)類(lèi)型,如文本、圖像、音頻等。
    的頭像 發(fā)表于 10-17 18:17 ?542次閱讀

    【「嵌入式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 ?647次閱讀
    迅為電子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 ?774次閱讀

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

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

    深度學(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 ?1031次閱讀

    求助,關(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)別和來(lái)源兩個(gè)方面。豐富的數(shù)據(jù)類(lèi)別能夠提供多樣的語(yǔ)言表達(dá)特征,如官方知識(shí)型數(shù)據(jù)、口語(yǔ)化表達(dá)的論壇
    發(fā)表于 05-07 17:10

    如何使用Python進(jìn)行圖像識(shí)別的自動(dòng)學(xué)習(xí)自動(dòng)訓(xùn)練?

    如何使用Python進(jìn)行圖像識(shí)別的自動(dòng)學(xué)習(xí)自動(dòng)訓(xùn)練? 使用Python進(jìn)行圖像識(shí)別的自動(dòng)學(xué)習(xí)和自動(dòng)訓(xùn)練需要掌握一些重要的概念和技術(shù)。在本文中,我們將介紹如何使用Python中的一些常用
    的頭像 發(fā)表于 01-12 16:06 ?524次閱讀

    【飛騰派4G版免費(fèi)試用】第三章:抓取圖像,手動(dòng)標(biāo)注并完成自定義目標(biāo)檢測(cè)模型訓(xùn)練和測(cè)試

    抓取圖像,手動(dòng)標(biāo)注并完成自定義目標(biāo)檢測(cè)模型訓(xùn)練和測(cè)試 在第二中,我介紹了模型訓(xùn)練的一般過(guò)程,其
    發(fā)表于 12-16 10:05

    【飛騰派4G版免費(fèi)試用】 第三章:抓取圖像,手動(dòng)標(biāo)注并完成自定義目標(biāo)檢測(cè)模型訓(xùn)練和測(cè)試

    本章記錄了如何從網(wǎng)上抓取素材并進(jìn)行標(biāo)注,然后訓(xùn)練,導(dǎo)出測(cè)試自己的模型。
    的頭像 發(fā)表于 12-16 09:55 ?564次閱讀
    【飛騰派4G版免費(fèi)試用】 <b class='flag-5'>第三章</b>:抓取<b class='flag-5'>圖像</b>,手動(dòng)標(biāo)注并完成自定義目標(biāo)檢測(cè)<b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b>和測(cè)試