《OpenCV》—— dlib庫

文章目錄

    • dlib庫是什么?
    • OpenCV庫與dlib庫對比
    • dlib庫安裝
    • dlib——人臉應用實例——人臉檢測
    • dlib——人臉應用實例——人臉關鍵點定位
    • dlib——人臉應用實例——人臉輪廓繪制

dlib庫是什么?

在這里插入圖片描述

OpenCV庫與dlib庫對比

在這里插入圖片描述

dlib庫安裝

在這里插入圖片描述

dlib——人臉應用實例——人臉檢測

對圖片中的人臉進行檢測:
在這里插入圖片描述

代碼:

# 導入OpenCV庫,它是一個廣泛用于計算機視覺任務的庫,可用于圖像讀取、處理和顯示等操作
import cv2
# 導入dlib庫,dlib是一個強大的機器學習工具包,提供了多種人臉檢測和特征提取的功能
import dlib# 創建一個dlib的人臉檢測器對象
# get_frontal_face_detector() 是dlib提供的預訓練好的人臉檢測器,用于檢測圖像中的人臉
detector = dlib.get_frontal_face_detector()# 使用OpenCV的imread函數讀取指定路徑的圖像文件
# 'hezhao.jpg' 是圖像文件的路徑,這里假設該圖像文件與代碼文件在同一目錄下
# 讀取后的圖像以NumPy數組的形式存儲在變量 img 中
img = cv2.imread('hezhao.jpg')# 使用人臉檢測器對讀取的圖像進行人臉檢測
# 第二個參數 2 表示對圖像進行2次上采樣,上采樣可以提高小尺寸人臉的檢測精度,但會增加計算量
# 檢測結果存儲在變量 faces 中,它是一個包含所有檢測到的人臉區域的列表
faces = detector(img, 2)# 遍歷檢測到的所有人臉
for face in faces:# 獲取當前人臉區域的左邊界坐標x1 = face.left()# 獲取當前人臉區域的上邊界坐標y1 = face.top()# 獲取當前人臉區域的右邊界坐標x2 = face.right()# 獲取當前人臉區域的下邊界坐標y2 = face.bottom()# 使用OpenCV的rectangle函數在圖像上繪制矩形框來標記檢測到的人臉# 第一個參數 img 是要繪制矩形框的圖像# 第二個參數 (x1, y1) 是矩形框的左上角坐標# 第三個參數 (x2, y2) 是矩形框的右下角坐標# 第四個參數 (0, 255, 0) 表示矩形框的顏色,這里是綠色(BGR格式)# 第五個參數 2 表示矩形框的線寬cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)# 使用OpenCV的imshow函數顯示處理后的圖像
# 第一個參數 'result' 是顯示圖像的窗口名稱
# 第二個參數 img 是要顯示的圖像
cv2.imshow('result', img)# 使用OpenCV的waitKey函數等待用戶按鍵
# 參數 0 表示無限等待,直到用戶按下任意鍵
cv2.waitKey(0)# 使用OpenCV的destroyAllWindows函數關閉所有由OpenCV打開的窗口
cv2.destroyAllWindows()

結果:
在這里插入圖片描述


也可對視頻或使用攝像頭中的人臉識別:

代碼:

# 導入OpenCV庫,它是一個強大的計算機視覺庫,可用于視頻捕獲、圖像處理和顯示等操作
import cv2
# 導入dlib庫,dlib是一個機器學習工具包,提供了預訓練的人臉檢測模型
import dlib# 創建一個dlib的人臉檢測器對象,用于檢測圖像或視頻幀中的人臉
# get_frontal_face_detector() 是dlib提供的預訓練好的正面人臉檢測器
detector = dlib.get_frontal_face_detector()# 使用OpenCV的VideoCapture函數打開默認攝像頭(設備編號為0)
# cap 是一個VideoCapture對象,用于后續讀取視頻幀
cap = cv2.VideoCapture(0)# 進入一個無限循環,持續處理攝像頭捕獲的視頻幀
while True:# 從攝像頭讀取一幀視頻# ret 是一個布爾值,表示是否成功讀取到視頻幀# image 是讀取到的視頻幀,以NumPy數組的形式存儲ret, image = cap.read()# 對讀取的視頻幀進行水平翻轉# 第二個參數 1 表示水平翻轉,這樣可以讓畫面看起來更符合我們的習慣img = cv2.flip(image, 1)# 如果 ret 為 None 或者 False,說明沒有成功讀取到視頻幀# 這種情況可能是由于攝像頭斷開連接、視頻結束等原因導致的# 此時跳出循環,結束程序if ret is None:break# 使用人臉檢測器對當前視頻幀進行人臉檢測# 第二個參數 1 表示對圖像進行1次上采樣,上采樣可以提高小尺寸人臉的檢測精度,但會增加計算量# faces 是一個包含所有檢測到的人臉區域的列表faces = detector(img, 1)# 遍歷檢測到的所有人臉for face in faces:# 獲取當前人臉區域的左邊界坐標x1 = face.left()# 獲取當前人臉區域的上邊界坐標y1 = face.top()# 獲取當前人臉區域的右邊界坐標x2 = face.right()# 獲取當前人臉區域的下邊界坐標y2 = face.bottom()# 在視頻幀上繪制矩形框來標記檢測到的人臉# 第一個參數 img 是要繪制矩形框的圖像# 第二個參數 (x1, y1) 是矩形框的左上角坐標# 第三個參數 (x2, y2) 是矩形框的右下角坐標# 第四個參數 (0, 255, 0) 表示矩形框的顏色,這里是綠色(BGR格式)# 第五個參數 2 表示矩形框的線寬cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)# 顯示處理后的視頻幀# 第一個參數 'result' 是顯示窗口的名稱# 第二個參數 img 是要顯示的視頻幀cv2.imshow('result', img)# 等待用戶按鍵,等待時間為1毫秒# key 是用戶按下鍵的ASCII碼值key = cv2.waitKey(1)# 如果用戶按下的鍵是ESC鍵(ASCII碼值為27)# 則跳出循環,結束程序if key == 27:break# 釋放攝像頭資源,關閉攝像頭設備
cap.release()# 關閉所有由OpenCV打開的窗口
cv2.destroyAllWindows()

dlib——人臉應用實例——人臉關鍵點定位

通過https://github.com/davisking/dlib-models下載所需要的預訓練模型,對圖片進行人臉關鍵點定位。讀取一張圖像,檢測其中的人臉,并在每個人臉的 68 個特征點上繪制綠色圓形標記,同時在標記旁邊顯示特征點的索引編號,最后顯示處理后的圖像。在這里插入圖片描述

代碼:

# 導入NumPy庫,用于進行高效的數值計算,這里主要用于處理面部特征點的數組
import numpy as np
# 導入OpenCV庫,用于圖像處理和計算機視覺任務,如讀取圖像、繪制圖形和顯示圖像等
import cv2
# 導入dlib庫,它是一個強大的機器學習庫,這里主要用于人臉檢測和面部特征點定位
import dlib# 使用OpenCV的imread函數讀取指定路徑的圖像文件,將其存儲為一個NumPy數組
# "c_luo1.png" 是圖像文件的路徑,你可以根據實際情況修改
img = cv2.imread("c_luo1.png")# 創建一個dlib的人臉檢測器對象,用于檢測圖像中的人臉
# get_frontal_face_detector() 是dlib提供的一個預訓練的人臉檢測器
detector = dlib.get_frontal_face_detector()# 使用人臉檢測器對輸入圖像進行人臉檢測
# 第二個參數0表示不進行圖像的上采樣,若為正數則會對圖像進行上采樣以提高檢測精度,但會增加計算量
faces = detector(img, 0)# 創建一個dlib的面部特征點預測器對象,用于定位人臉的68個特征點
# 'shape_predictor_68_face_landmarks.dat' 是預訓練的特征點預測模型文件,需要提前下載
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')# 遍歷檢測到的所有人臉
for face in faces:# 使用面部特征點預測器對當前人臉進行特征點定位# 輸入參數為圖像和檢測到的人臉區域shape = predictor(img, face)# 將dlib的特征點對象轉換為NumPy數組,方便后續處理# shape.parts() 返回一個包含68個特征點的對象,每個特征點有x和y坐標# 通過列表推導式將每個特征點的x和y坐標提取出來,存儲為一個二維NumPy數組landmarks = np.array([[p.x, p.y] for p in shape.parts()])# 遍歷每個特征點for idx, point in enumerate(landmarks):# 提取當前特征點的x和y坐標,存儲為一個列表pos = [point[0], point[1]]# 使用OpenCV的circle函數在圖像上繪制一個圓形標記特征點# img 是要繪制的圖像,pos 是圓心坐標,2 是圓的半徑# color=(0, 255, 0) 表示圓的顏色為綠色,thickness=-1 表示填充整個圓形cv2.circle(img, pos, 2, color=(0, 255, 0), thickness=-1)# 使用OpenCV的putText函數在特征點旁邊繪制特征點的索引編號# str(idx) 是要繪制的文本,即特征點的索引編號# pos 是文本的起始位置,cv2.FONT_HERSHEY_SIMPLEX 是字體樣式# 0.4 是字體大小,(255, 255, 255) 是文本顏色為白色# 1 是文本的線寬,cv2.LINE_AA 表示使用抗鋸齒線以提高文本的繪制質量cv2.putText(img, str(idx), pos, cv2.FONT_HERSHEY_SIMPLEX, 0.4,(255, 255, 255), 1, cv2.LINE_AA)# 使用OpenCV的imshow函數顯示處理后的圖像
# 'img' 是窗口的名稱,img 是要顯示的圖像
cv2.imshow('img', img)# 使用OpenCV的waitKey函數等待用戶按鍵
# 參數0表示無限等待,直到用戶按下任意鍵
cv2.waitKey(0)# 使用OpenCV的destroyAllWindows函數關閉所有打開的窗口
cv2.destroyAllWindows()

結果:
在這里插入圖片描述


也可以對視頻或者使用攝像頭直接識別人臉然后直接進行人臉關鍵點的定位:

代碼:

# 導入NumPy庫,它是Python中用于科學計算的基礎庫,這里主要用于處理數組數據,比如面部特征點的坐標數組
import numpy as np
# 導入OpenCV庫,這是一個強大的計算機視覺庫,用于視頻捕獲、圖像處理、繪制圖形等操作
import cv2
# 導入dlib庫,它是一個機器學習工具包,提供了很多用于人臉檢測和特征點定位的預訓練模型
import dlib# 使用cv2.VideoCapture函數打開默認的攝像頭(設備編號為0),返回一個VideoCapture對象
# 后續可以通過該對象讀取攝像頭的視頻幀
cap = cv2.VideoCapture(0)# 創建一個dlib的面部特征點預測器對象
# 'shape_predictor_68_face_landmarks.dat' 是預訓練好的模型文件,用于檢測人臉的68個特征點
# 這個文件需要提前下載并放在代碼可訪問的路徑下
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')# 創建一個dlib的人臉檢測器對象
# get_frontal_face_detector() 是dlib提供的一個預訓練的人臉檢測器,用于在圖像中檢測人臉
detector = dlib.get_frontal_face_detector()# 進入一個無限循環,持續讀取攝像頭的視頻幀并進行處理
while True:# 使用cap.read()方法從攝像頭讀取一幀視頻# ret 是一個布爾值,表示是否成功讀取到視頻幀# image 是讀取到的視頻幀,是一個NumPy數組ret, image = cap.read()# 使用cv2.flip函數對讀取到的視頻幀進行水平翻轉# 第二個參數1表示水平翻轉,這樣可以讓畫面看起來更符合我們的習慣img = cv2.flip(image, 1)# 如果ret為False,說明沒有成功讀取到視頻幀,可能是攝像頭斷開連接等原因# 此時跳出循環,結束程序if ret is None:break# 使用人臉檢測器對當前視頻幀進行人臉檢測# 第二個參數0表示不進行圖像的上采樣,若為正數則會對圖像進行上采樣以提高檢測精度,但會增加計算量faces = detector(img, 0)# 遍歷檢測到的所有人臉for face in faces:# 使用面部特征點預測器對當前人臉進行特征點定位# 輸入參數為當前視頻幀和檢測到的人臉區域shape = predictor(img, face)# 將dlib的特征點對象轉換為NumPy數組,方便后續處理# shape.parts() 返回一個包含68個特征點的對象,每個特征點有x和y坐標# 通過列表推導式將每個特征點的x和y坐標提取出來,存儲為一個二維NumPy數組landmarks = np.array([[p.x, p.y] for p in shape.parts()])# 遍歷每個特征點for idx, point in enumerate(landmarks):# 提取當前特征點的x和y坐標,存儲為一個列表pos = [point[0], point[1]]# 使用cv2.circle函數在圖像上繪制一個圓形標記特征點# img 是要繪制的圖像,pos 是圓心坐標,2 是圓的半徑# color=(0, 255, 0) 表示圓的顏色為綠色,thickness=-1 表示填充整個圓形cv2.circle(img, pos, 2, color=(0, 255, 0), thickness=-1)# 使用cv2.putText函數在特征點旁邊繪制特征點的索引編號# str(idx) 是要繪制的文本,即特征點的索引編號# pos 是文本的起始位置,cv2.FONT_HERSHEY_SIMPLEX 是字體樣式# 0.4 是字體大小,(255, 255, 255) 是文本顏色為白色# 1 是文本的線寬,cv2.LINE_AA 表示使用抗鋸齒線以提高文本的繪制質量cv2.putText(img, str(idx), pos, cv2.FONT_HERSHEY_SIMPLEX, 0.4,(255, 255, 255), 1, cv2.LINE_AA)# 使用cv2.imshow函數顯示處理后的視頻幀# 'img' 是窗口的名稱,img 是要顯示的圖像cv2.imshow('img', img)# 使用cv2.waitKey函數等待用戶按鍵,參數1表示等待1毫秒# 返回值key是用戶按下鍵的ASCII碼值key = cv2.waitKey(1)# 如果用戶按下的鍵是ESC鍵(ASCII碼值為27),則跳出循環,結束程序if key == 27:break# 釋放攝像頭資源,關閉攝像頭設備
cap.release()# 關閉所有由OpenCV打開的窗口
cv2.destroyAllWindows()

可以自己進行嘗試,也可從網站下載其他功能的預訓練模型進行測試

dlib——人臉應用實例——人臉輪廓繪制

對人臉的輪廓進行繪制是基于關鍵點檢測的基礎上進行的,更能體現出人臉的特征與表情變化。

代碼:

# 導入NumPy庫,用于高效處理多維數組和矩陣運算,這里主要用于處理面部特征點的坐標數據
import numpy as np
# 導入OpenCV庫,用于圖像處理、繪制圖形和顯示圖像等操作
import cv2
# 導入dlib庫,它是一個機器學習工具包,提供了人臉檢測和面部特征點定位的功能
import dlib# 定義一個函數,用于在圖像上繪制線段,連接一系列面部特征點
def drawLine(start, end):# 從shape數組中提取從start到end(不包含end)的特征點pts = shape[start:end]# 遍歷提取的特征點for l in range(1, len(pts)):# 獲取前一個特征點的坐標,并轉換為元組形式ptA = tuple(pts[l - 1])# 獲取當前特征點的坐標,并轉換為元組形式ptB = tuple(pts[l])# 使用OpenCV的line函數在圖像上繪制從ptA到ptB的線段# img是要繪制的圖像,ptA和ptB是線段的起點和終點,(0, 255, 0)是線段的顏色(綠色),2是線段的線寬cv2.line(img, ptA, ptB, (0, 255, 0), 2)# 定義一個函數,用于在圖像上繪制凸包,連接一系列面部特征點形成封閉的凸多邊形
def drawConvexHull(start, end):# 從shape數組中提取從start到end(包含end)的特征點Facial = shape[start:end + 1]# 使用OpenCV的convexHull函數計算這些特征點的凸包mouthHull = cv2.convexHull(Facial)# 使用OpenCV的drawContours函數在圖像上繪制凸包輪廓# img是要繪制的圖像,[mouthHull]是包含凸包輪廓的列表,-1表示繪制所有輪廓,(0, 255, 0)是輪廓的顏色(綠色),2是輪廓的線寬cv2.drawContours(img, [mouthHull], -1, (0, 255, 0), 2)# 使用OpenCV的imread函數讀取指定路徑的圖像文件
# "c_luo1.png" 是圖像文件的路徑,你可以根據實際情況修改
img = cv2.imread("c_luo1.png")
# 創建一個dlib的人臉檢測器對象,用于檢測圖像中的人臉
detector = dlib.get_frontal_face_detector()
# 使用人臉檢測器對輸入圖像進行人臉檢測
# 第二個參數0表示不進行圖像的上采樣,若為正數則會對圖像進行上采樣以提高檢測精度,但會增加計算量
faces = detector(img, 0)
# 創建一個dlib的面部特征點預測器對象,用于定位人臉的68個特征點
# 'shape_predictor_68_face_landmarks.dat' 是預訓練的特征點預測模型文件,需要提前下載
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')# 遍歷檢測到的所有人臉
for face in faces:# 使用面部特征點預測器對當前人臉進行特征點定位shape = predictor(img, face)# 將dlib的特征點對象轉換為NumPy數組,方便后續處理# shape.parts() 返回一個包含68個特征點的對象,每個特征點有x和y坐標# 通過列表推導式將每個特征點的x和y坐標提取出來,存儲為一個二維NumPy數組shape = np.array([[p.x, p.y] for p in shape.parts()])# 繪制左眼的凸包drawConvexHull(36, 41)# 繪制右眼的凸包drawConvexHull(42, 47)# 繪制外嘴唇的凸包drawConvexHull(48, 59)# 繪制內嘴唇的凸包drawConvexHull(60, 67)# 繪制下巴的線段drawLine(0, 16)# 繪制左眉毛的線段drawLine(17, 21)# 繪制右眉毛的線段drawLine(22, 26)# 繪制鼻子的線段drawLine(27, 35)# 使用OpenCV的imshow函數顯示處理后的圖像
# 'img' 是窗口的名稱,img 是要顯示的圖像
cv2.imshow('img', img)
# 使用OpenCV的waitKey函數等待用戶按鍵
# 參數0表示無限等待,直到用戶按下任意鍵
cv2.waitKey(0)
# 使用OpenCV的destroyAllWindows函數關閉所有打開的窗口
cv2.destroyAllWindows()

在這里插入圖片描述

對視頻內容進行處理的代碼:

# 導入NumPy庫,用于進行高效的數值計算和數組操作,后續會用來處理面部特征點的坐標數據
import numpy as np
# 導入OpenCV庫,這是一個強大的計算機視覺庫,可用于視頻捕獲、圖像處理、繪制圖形等操作
import cv2
# 導入dlib庫,它是一個機器學習工具包,提供了預訓練的人臉檢測和面部特征點定位模型
import dlib# 定義一個函數,用于在圖像上繪制一系列線段,連接指定范圍內的面部特征點
def drawLine(start, end):# 從 shape 數組中提取從 start 到 end(不包含 end)索引位置的特征點pts = shape[start:end]# 遍歷提取的特征點,從第二個點開始for l in range(1, len(pts)):# 獲取前一個特征點的坐標,并將其轉換為元組形式,因為 cv2.line 函數要求坐標為元組ptA = tuple(pts[l - 1])# 獲取當前特征點的坐標,并將其轉換為元組形式ptB = tuple(pts[l])# 在圖像 img 上繪制從 ptA 到 ptB 的線段# (0, 255, 0) 表示線段的顏色為綠色(在OpenCV中顏色采用BGR格式),2 表示線段的線寬cv2.line(img, ptA, ptB, (0, 255, 0), 2)# 定義一個函數,用于在圖像上繪制凸包,連接指定范圍內的面部特征點形成封閉的凸多邊形
def drawConvexHull(start, end):# 從 shape 數組中提取從 start 到 end(包含 end)索引位置的特征點Facial = shape[start:end + 1]# 使用 cv2.convexHull 函數計算這些特征點的凸包,返回一個包含凸包頂點坐標的數組mouthHull = cv2.convexHull(Facial)# 在圖像 img 上繪制凸包輪廓# [mouthHull] 表示要繪制的輪廓列表,-1 表示繪制所有輪廓,(0, 255, 0) 是輪廓顏色(綠色),2 是輪廓線寬cv2.drawContours(img, [mouthHull], -1, (0, 255, 0), 2)# 打開默認的攝像頭設備(設備編號為 0),返回一個 VideoCapture 對象,用于后續視頻幀的讀取
cap = cv2.VideoCapture(0)
# 創建一個 dlib 的面部特征點預測器對象,使用預訓練的 68 點面部特征模型文件
# 該文件需要提前下載并放在代碼可訪問的路徑下
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
# 創建一個 dlib 的人臉檢測器對象,用于檢測圖像或視頻幀中的人臉
detector = dlib.get_frontal_face_detector()# 進入一個無限循環,持續處理攝像頭捕獲的視頻幀
while True:# 從攝像頭讀取一幀視頻# ret 是一個布爾值,表示是否成功讀取到視頻幀# image 是讀取到的視頻幀,以 NumPy 數組的形式存儲ret, image = cap.read()# 對讀取的視頻幀進行水平翻轉,這樣可以讓畫面看起來更符合我們的習慣img = cv2.flip(image, 1)# 如果 ret 為 None 或者 False,說明沒有成功讀取到視頻幀# 可能是攝像頭斷開連接等原因,此時跳出循環,結束程序if ret is None:break# 使用人臉檢測器對當前視頻幀進行人臉檢測# 第二個參數 0 表示不進行圖像的上采樣,若為正數則會對圖像進行上采樣以提高檢測精度,但會增加計算量faces = detector(img, 0)# 遍歷檢測到的所有人臉for face in faces:# 使用面部特征點預測器對當前人臉進行特征點定位shape = predictor(img, face)# 將 dlib 的特征點對象轉換為 NumPy 數組,方便后續處理# shape.parts() 返回一個包含 68 個特征點的對象,每個特征點有 x 和 y 坐標# 通過列表推導式將每個特征點的 x 和 y 坐標提取出來,存儲為一個二維 NumPy 數組shape = np.array([[p.x, p.y] for p in shape.parts()])# 繪制左眼的凸包drawConvexHull(36, 41)# 繪制右眼的凸包drawConvexHull(42, 47)# 繪制外嘴唇的凸包drawConvexHull(48, 59)# 繪制內嘴唇的凸包drawConvexHull(60, 67)# 繪制下巴的線段drawLine(0, 16)# 繪制左眉毛的線段drawLine(17, 21)# 繪制右眉毛的線段drawLine(22, 26)# 繪制鼻子的線段drawLine(27, 35)# 在窗口中顯示處理后的視頻幀,窗口名稱為 'img'cv2.imshow('img', img)# 等待用戶按鍵,等待時間為 1 毫秒# key 是用戶按下鍵的 ASCII 碼值key = cv2.waitKey(1)# 如果用戶按下的鍵是 ESC 鍵(ASCII 碼值為 27),則跳出循環,結束程序if key == 27:break# 釋放攝像頭資源,關閉攝像頭設備
cap.release()
# 關閉所有由 OpenCV 打開的窗口
cv2.destroyAllWindows()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72558.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72558.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72558.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

藍橋與力扣刷題(藍橋 旋轉)

題目:圖片旋轉是對圖片最簡單的處理方式之一,在本題中,你需要對圖片順時針旋轉 90 度。 我們用一個 nm的二維數組來表示一個圖片,例如下面給出一個 34 的 圖片的例子: 1 3 5 7 9 8 7 6 3 5 9 7 這個圖片順時針旋轉…

隨機播放音樂 偽隨機

import java.util.*;/*** https://cloud.tencent.com.cn/developer/news/1045747* 偽隨機播放音樂*/ public class MusicPlayer {private List<String> allSongs; // 所有歌曲列表private List<String> playedSongs; // 已經播放過的歌曲列表private Map<String…

MiniMind用極低的成本訓練屬于自己的大模型

本篇文章主要講解&#xff0c;如何通過極低的成本訓練自己的大模型的方法和教程&#xff0c;通過MiniMind快速實現普通家用電腦的模型訓練。 日期&#xff1a;2025年3月5日 作者&#xff1a;任聰聰 一、MiniMind 介紹 基本信息 在2小時&#xff0c;訓練出屬于自己的28M大模型。…

區塊鏈中的數字簽名:安全性與可信度的核心

數字簽名是區塊鏈技術的信任基石&#xff0c;它像區塊鏈世界的身份證和防偽標簽&#xff0c;確保每一筆交易的真實性、完整性和不可抵賴性。本文會用通俗的語言&#xff0c;帶你徹底搞懂區塊鏈中的數字簽名&#xff01; 文章目錄 1. 數字簽名是什么&#xff1f;從現實世界到區塊…

LLM自動金融量化-CFGPT

LLM自動金融量化-CFGPT 簡介 CFGPT是一個開源的語言模型,首先通過在收集和清理的中國金融文本數據(CFData-pt)上進行繼續預訓練,包括金融領域特定數據(公告、金融文章、金融考試、金融新聞、金融研究論文)和通用數據(維基百科),然后使用知識密集的指導調整數據(CFD…

解決Docker拉取鏡像超時錯誤,docker: Error response from daemon:

當使用docker pull或docker run時遇到net/http: request canceled while waiting for connection的報錯&#xff0c;說明Docker客戶端在訪問Docker Hub時出現網絡連接問題。可以不用掛加速器也能解決&#xff0c;linux不好用clash。以下是經過驗證的方法&#xff08;感謝軒轅鏡…

03.05 QT事件

實現一個繪圖工具&#xff0c;具備以下功能&#xff1a; 鼠標繪制線條。 實時調整線條顏色和粗細。 橡皮擦功能&#xff0c;覆蓋繪制內容。 撤銷功能&#xff0c;ctrl z 快捷鍵撤銷最后一筆 程序代碼&#xff1a; <1> Widget.h: #ifndef WIDGET_H #define WIDGET…

【文生圖】windows 部署stable-diffusion-webui

windows 部署stable-diffusion-webui AUTOMATIC1111 stable-diffusion-webui Detailed feature showcase with images: 帶圖片的詳細功能展示: Original txt2img and img2img modes 原始的 txt2img 和 img2img 模式 One click install and run script (but you still must i…

go語言因為前端跨域導致無法訪問到后端解決方案

前端服務8080訪問后端8081這端口顯示跨域了 ERROR Network Error AxiosError: Network Error at XMLHttpRequest.handleError (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:116:14) at Axios.request (webpack-internal:///./node_modules/axios/lib/core/A…

hive之lag函數

從博客上發現兩個面試題&#xff0c;其中有個用到了lag函數。整理學習 LAG 函數是 Hive 中常用的窗口函數&#xff0c;用于訪問同一分區內 前一行&#xff08;或前 N 行&#xff09;的數據。它在分析時間序列數據、計算相鄰記錄差異等場景中非常有用。 一、語法 LAG(column,…

【軟考-架構】1.3、磁盤-輸入輸出技術-總線

GitHub地址&#xff1a;https://github.com/tyronczt/system_architect ?資料&文章更新? 文章目錄 存儲系統&#x1f4af;考試真題輸入輸出技術&#x1f4af;考試真題第一題第二題 存儲系統 尋道時間是指磁頭移動到磁道所需的時間&#xff1b; 等待時間為等待讀寫的扇區…

盛鉑科技PDROUxxxx系列鎖相介質振蕩器(點頻源):高精度信號源

——超低相位噪聲、寬頻覆蓋、靈活集成&#xff0c;賦能下一代射頻系統 核心價值&#xff1a;以突破性技術解決行業痛點 在雷達、衛星通信、高速數據采集等高端射頻系統中&#xff0c;信號源的相位噪聲、頻率穩定度及集成靈活性直接決定系統性能上限。盛鉑科技PDROUxxxx系列鎖…

【安裝】SQL Server 2005 安裝及安裝包

安裝包 SQLEXPR.EXE&#xff1a;SQL Server 服務SQLServer2005_SSMSEE.msi&#xff1a;數據庫管理工具&#xff0c;可以創建數據庫&#xff0c;執行腳本等。SQLServer2005_SSMSEE_x64.msi&#xff1a;同上。這個是 64 位操作系統。 下載地址 https://www.microsoft.com/zh-c…

【文獻閱讀】The Efficiency Spectrum of Large Language Models: An Algorithmic Survey

這篇文章發表于2024年4月 摘要 大語言模型&#xff08;LLMs&#xff09;的快速發展推動了多個領域的變革&#xff0c;重塑了通用人工智能的格局。然而&#xff0c;這些模型不斷增長的計算和內存需求帶來了巨大挑戰&#xff0c;阻礙了學術研究和實際應用。為解決這些問題&…

如何在Github上面上傳本地文件夾

前言 直接在GitHub網址上面上傳文件夾是不行的&#xff0c;需要一層一層創建然后上傳&#xff0c;而且文件的大小也有限制&#xff0c;使用Git進行上傳更加方便和實用 1.下載和安裝Git Git - Downloads 傻瓜式安裝即可 2.獲取密鑰對 打開自己的Github&#xff0c;創建SSH密鑰&…

kafka-web管理工具cmak

一. 背景&#xff1a; 日常運維工作中&#xff0c;采用cli的方式進行kafka集群的管理&#xff0c;還是比較繁瑣的(指令復雜&#xff1f;)。為方便管理&#xff0c;可以選擇一些開源的webui工具。 推薦使用cmak。 二. 關于cmak&#xff1a; cmak是 Yahoo 貢獻的一款強大的 Apac…

python之爬蟲入門實例

鏈家二手房數據抓取與Excel存儲 目錄 開發環境準備爬蟲流程分析核心代碼實現關鍵命令詳解進階優化方案注意事項與擴展 一、開發環境準備 1.1 必要組件安裝 # 安裝核心庫 pip install requests beautifulsoup4 openpyxl pandas# 各庫作用說明&#xff1a; - requests&#x…

Redis的CPU高達90%時如何處理

Redis的CPU高達90%時如何處理 1. 分析和優化2. 擴展和分片3. 緩存策略調整4. 資源提升5. 負載均衡6. 進程調整7. 代碼層面改進8. 其他 當Redis的CPU使用率高達90%時&#xff0c;說明Redis服務器可能處于過載狀態&#xff0c;這可能會導致響應時間變長甚至服務中斷。要處理這種…

Faster R-CNN 算法詳解

Faster R-CNN 是在 R-CNN 和 Fast R-CNN 的基礎上進一步優化的一種目標檢測算法。它通過引入 Region Proposal Network (RPN) 將區域建議和目標檢測整合到一個統一的框架中,大幅提高了檢測效率。以下是對 Faster R-CNN 算法的詳細解析: 1. 概述 Faster R-CNN 主要由三部分組…

數據結構:八大排序(冒泡,堆,插入,選擇,希爾,快排,歸并,計數)詳解

目錄 一.冒泡排序 二.堆排序 三.插入排序 四.選擇排序 五.希爾排序 六.快速排序 1.Lomuto版本&#xff08;前后指針法&#xff09; 2.Lomuto版本的非遞歸算法 3.hoare版本&#xff08;左右指針法&#xff09; 4.挖坑法找分界值&#xff1a; 七.歸并排序 八.計數排序…