主頁 >  其他 > 用Nvidia Jetson Nano 2GB和Python構建一個價值60美元的人臉識別系統

用Nvidia Jetson Nano 2GB和Python構建一個價值60美元的人臉識別系統

2020-11-11 00:45:32 其他

作者|Adam Geitgey
編譯|Flin
來源|medium

新的Nvidia Jetson Nano 2GB開發板(今天宣布!)是一款單板機,售價59美元,運行帶有GPU加速的人工智能軟體,

到2020年,你可以從一臺售價59美元的單板計算機中獲得令人驚嘆的性能,讓我們用它來創建一個門鈴攝像頭的簡單版本,該攝像頭可以跟蹤走到房屋前門的每個人,通過面部識別,即使這些人穿著不同,它也可以立即知道你家門口的人是否曾經來拜訪過你,

什么是Nvidia Jetson Nano 2GB?

Jets o n Nano 2GB是一款單板計算機,具有四核1.4GHz ARM CPU和內置的Nvidia Maxwell GPU,它是最便宜的Nvidia Jetson機型,針對的是購買樹莓派的業余愛好者,

如果你已經熟悉樹莓派產品系列,則除了Jetson Nano配備Nvidia GPU外,這是和其他產品幾乎完全相同的,它可以運行GPU加速的應用程式(如深度學習模型),其速度遠比樹莓派這樣的板(不支持大多數深度學習框架的GPU)快得多,

那里有很多AI開發板和加速器模塊,但Nvidia擁有一大優勢——它與桌面AI庫直接兼容,不需要你將深度學習模型轉換為任何特殊格式即可運行他們,

它使用幾乎所有每個基于Python的深度學習框架都已使用的相同的CUDA庫進行GPU加速,這意味著你可以采用現有的基于Python的深度學習程式,幾乎無需修改就可以在Jetson Nano 2GB上運行它,并且仍然可以獲得良好的性能(只要你的應用程式可以在2GB的RAM上運行),

它將為強大的服務器撰寫的Python代碼部署在價格為59美元的獨立設備上的能力非常出色,

這款新的Jetson Nano 2GB主板也比Nvidia以前的硬體版本更加光鮮亮麗,

第一個Jetson Nano機型莫名其妙地缺少WiFi,但該機型隨附一個可插入的WiFi模塊,因此你不必再加上雜亂的以太網電纜了,他們還將電源輸入升級到了更現代的USB-C埠,并且在軟體方面,一些粗糙的邊緣已被磨掉,例如,你無需執行諸如啟用交換檔案之類的基本操作,

Nvidia積極地推出了一款價格低于60美元的帶有真實GPU的簡單易用的硬體設備,似乎他們正以此為目標瞄準樹莓派,并試圖占領教育/愛好者市場,看看市場如何反應將是很有趣的,

讓我們組裝系統

對于任何硬體專案,第一步都是收集我們需要的所有零件:

1. Nvidia Jetson Nano 2GB主板(59美元)

這些板目前可預訂(截至2020年10月5日),預計將于10月底發布,

  • 在此處預訂:https://nvda.ws/30v5w3M

我不知道發行后的初始可用性會如何,但是先前的Jetson Nano機型在發行后的幾個月中供不應求,

全面披露:我從英偉達獲得了免費的Jetson Nano 2GB開發板作為評估單元,但我與英偉達沒有財務或編輯關系,這就是我能夠提前撰寫本指南的方式,

2. USB-C電源配接器(你可能已經有一個?)

新型Jetson Nano 2GB使用USB-C供電,不包括電源配接器,但是你可能已經有一個電源配接器了,

3. 攝像頭—— USB網路攝像頭(你可能有一個?)或樹莓派攝像頭模塊v2.x(約30美元)

如果你希望將小型相機安裝在機殼中,那么樹莓派相機模塊v2.x是一個不錯的選擇(注意:v1.x相機模塊將無法使用),你可以在Amazon或各種經銷商處獲得它們,

一些USB網路攝像頭(如Logitech的C270或C920)也可以在Jetson Nano 2GB上正常作業,因此如果你已經擁有一個USB攝像頭,也可以拿來使用,這里有一個攝像頭的不完整清單,

  • https://elinux.org/Jetson_Nano#Cameras

在購買新產品之前,請不要害怕嘗試擺放任何USB設備,并非所有功能都支持Linux驅動程式,但有些功能會支持,我插入了在亞馬遜上買的價值20美元的通用HDMI到USB配接器,它作業得很好,因此,我無需任何額外配置就可以將我的高端數碼相機用作通過HDMI的視頻源,

  • 購買鏈接: https://www.amazon.com/Etermal-Definition-Streaming-Conference-Broadcasting/dp/B08BZ52Q65/ref=sr_1_4

你還需要其他一些東西,但是你可能已經準備好了:

至少具有32GB空間的microSD卡,我們將在此安裝Linux,你可以重復使用現有的任何microSD卡,

一個microSD卡閱讀器:以便你可以安裝Jetson軟體,

一個有線USB鍵盤和一個有線USB滑鼠控制Jetson Nano,

任何直接接受HDMI(而不是通過HDMI-DVI轉換器)的監視器或電視,你都可以看到自己在做什么,即使以后不使用顯示幕運行Jetson Nano初始設定,也需要一個監視器,

加載Jetson Nano 2GB軟體

在開始將東西插入Jetson Nano之前,你需要下載Jetson Nano的軟體映像,

Nvidia的默認軟體映像包括預裝了Python 3.6和OpenCV的Ubuntu Linux 18.04,

以下是將Jetson Nano軟體安裝到SD卡上的方法:

  1. 從Nvidia下載Jetson Nano Developer Kit SD卡映像,
  • https://developer.nvidia.com/embedded/downloads
  1. 下載Etcher,該程式將Jetson軟體映像寫入SD卡,
  • https://www.balena.io/etcher/
  1. 運行Etcher并使用它來撰寫下載到SD卡的Jetson Nano Developer Kit SD卡映像,這大約需要20分鐘,

是時候將其余的硬體拆箱了!

插入所有零件

首先,請拿出你的Jetson Nano 2GB:

第一步是插入microSD卡,microSD卡插槽已完全隱藏,但你可以在散熱器底部底部的背面找到它:

你還應該繼續將隨附的USB WiFi配接器插入以下USB埠之一:

接下來,你需要插入相機,

如果你使用的是樹莓派 v2.x相機模塊,則它會通過帶狀電纜連接,在Jetson上找到帶狀電纜插槽,彈出連接器,插入電纜,然后將其彈出關閉,確保帶狀電纜上的金屬觸點向內朝向散熱器:

如果你使用USB網路攝像頭,只需將其插入USB埠之一,而忽略帶狀電纜埠,

現在,插入其他所有零件:

將滑鼠和鍵盤插入USB埠,

使用HDMI電纜插入顯示幕,

最后,插入USB-C電源線以啟動它,

如果你使用的是樹莓派相機模塊,則最侄訓得到如下所示的內容:

或者,如果你使用的是USB視頻輸入設備,它將看起來像這樣:

插入電源線后,Jetson Nano會自動啟動,幾秒鐘后,你應該會看到Linux設定螢屏出現在監視器上,請按照以下步驟創建你的帳戶并連接到WiFi,非常簡單,

安裝Linux和Python庫以進行人臉識別

一旦完成了Linux的初始設定,就需要安裝幾個我們將在人臉識別系統中使用的庫,

在Jetson Nano桌面上,打開一個LXTerminal視窗并運行以下命令,每次要求輸入密碼時,請輸入創建用戶帳戶時輸入的密碼:

sudo apt-get update
sudo apt-get install python3-pip cmake libopenblas-dev liblapack-dev libjpeg-dev

首先,我們要更新apt,這是標準的Linux軟體安裝工具,我們將使用它來安裝所需的其他系統庫,

然后,我們將安裝一些尚未預先安裝我們軟體需要的linux庫,

最后,我們需要安裝face_recognition Python庫及其依賴項,包括機器學習庫dlib,你可以使用以下單個命令自動執行此操作:

sudo pip3 -v install Cython face_recognition

因為沒有可用于Jetson平臺的dlib和numpy的預構建副本,所以此命令將從源代碼編譯這些庫,因此,趁此機會吃個午餐,因為這可能需要一個小時的時間!

當最終完成時,你的Jetson Nano 2GB就可以通過完整的CUDA GPU加速進行人臉識別,繼續下一個有趣的部分!

運行面部識別門鈴攝像頭演示應用程式

face_recognition庫是我撰寫的一個Python庫,它使得使用DLIB做人臉識別超級簡單,它使你能夠檢測到面部,將每個檢測到的面部轉換為唯一的面部編碼,然后比較這些面部編碼以查看它們是否可能是同一個人——只需幾行代碼即可,

  • face_recognition庫:https://github.com/ageitgey/face_recognition

  • dlib:http://dlib.net/

使用該庫,我構建了一個門鈴攝像頭應用程式,該應用程式可以識別走到你的前門并在人每次回來時對其進行跟蹤的人,運行時看起來像這樣:

首先,請下載代碼,我已經在此處添加了完整的代碼和注釋,

  • https://gist.github.com/ageitgey/e60d74a0afa3e8c801cff3f98c2a64d3

但是這里有一個更簡單的方法可以從命令列下載到你的Jetson Nano上:

wget -O doorcam.py tiny.cc/doorcam2gb

在程式的頂部,你需要編輯一行代碼以告訴你是使用USB相機還是樹莓派相機模塊,你可以像這樣編輯檔案:

gedit doorcam.py

按照說明進行操作,然后保存它,退出GEdit并運行代碼:

python3 doorcam.py

你會在桌面上看到一個視頻視窗,每當有新人走到攝像機前時,它都會記錄他們的臉并開始跟蹤他們在你家門口的時間,如果同一個人離開并在5分鐘后回來,它將重新注冊并再次跟蹤他們,你可以隨時按鍵盤上的“ q”退出,

該應用程式會自動將看到的每個人的資訊保存到一個名為known_faces.dat的檔案中,當你再次運行該程式時,它將使用該資料記住以前的訪問者,如果要清除已知面孔的串列,只需退出程式并洗掉該檔案,

將其變成獨立的硬體設備

至此,我們有一個運行人臉識別模型的開發板,但它仍被束縛在桌面上,以實作強大的功能和顯示效果,讓我們看看無需插入如何運行它,

現代單板計算機的一件很酷的事情是,它們幾乎都支持相同的硬體標準,例如USB,這意味著你可以在亞馬遜上買到很多便宜的附件,例如觸摸屏顯示幕和電池,你有很多輸入,輸出和電源選項,這是我訂購的東西(但類似的東西都可以):

一個7英寸觸摸屏HDMI顯示屏,使用USB電源:

以及一個通用的USB-C電池組來供電:

讓我們將其連接起來,看看作為獨立設備運行時的外觀,只需插入USB電池而不是壁式充電器,然后將HDMI顯示幕插入HDMI埠和USB埠,即可充當螢屏和滑鼠輸入,

效果很好,觸摸屏可以像普通的USB滑鼠一樣操作,無需任何其他配置,唯一的缺點是,如果Jetson Nano 2GB消耗的電量超過USB電池組可提供的電量,則會降低GPU的速度,但是它仍然運行良好,

有了一點點創意,你就可以將所有這些打包到一個專案案例中,用作原型硬體設備來測驗你自己的想法,而且,如果你想批量生產某些產品,則可以購買Jetson主板的生產版本,并將其用于構建真正的硬體產品,

門鈴攝像頭Python代碼演練

想知道代碼的作業原理嗎?讓我們逐步解決,

代碼從匯入我們將要使用的庫開始,最重要的是OpenCV(Python中稱為cv2),我們將使用OpenCV從相機讀取影像,以及用于檢測和比較人臉的人臉識別,

import face_recognition
import cv2
from datetime import datetime, timedelta
import numpy as np
import platform
import pickle

然后,我們需要知道如何訪問相機——從樹莓派相機模塊獲取影像的方法與使用USB相機的方法不同,因此,只需根據你的硬體將此變數更改為True或False即可:

# 這里的設定取決于你的攝像機設備型別:
# - True = 樹莓派 2.x camera module
# - False = USB webcam or other USB video input (like an HDMI capture device)
USING_RPI_CAMERA_MODULE = False

接下來,我們將創建一些變數來存盤有關在攝像機前行走的人的資料,這些變數將充當已知訪客的簡單資料庫,

known_face_encodings = []
known_face_metadata = https://www.cnblogs.com/panchuangai/archive/2020/11/10/[]

該應用程式只是一個演示,因此我們將已知的面孔存盤在Python串列中,在處理更多面孔的真實應用程式中,你可能想使用真實的資料庫,但是我想使此演示保持簡單,

接下來,我們具有保存和加載已知面部資料的功能,這是保存功能:

def save_known_faces():
    with open("known_faces.dat", "wb") as face_data_file:
        face_data = https://www.cnblogs.com/panchuangai/archive/2020/11/10/[known_face_encodings, known_face_metadata]
        pickle.dump(face_data, face_data_file)
        print("Known faces backed up to disk.")

這將使用Python的內置pickle功能將已知的面孔寫入磁盤,資料以相同的方式加載回去,但是我在這里沒有顯示,

每當我們的程式檢測到新面孔時,我們都會呼叫一個函式將其添加到已知的面孔資料庫中:

def register_new_face(face_encoding, face_image):
    known_face_encodings.append(face_encoding)
known_face_metadata.append({
        "first_seen": datetime.now(),
        "first_seen_this_interaction": datetime.now(),
        "last_seen": datetime.now(),
        "seen_count": 1,
        "seen_frames": 1,
        "face_image": face_image,
    })

首先,我們將代表面部的面部編碼存盤在串列中,然后,我們將有關面部的匹配資料字典存盤在第二個串列中,我們將使用它來跟蹤我們第一次見到該人的時間,他們最近在攝像頭周圍閑逛了多長時間,他們訪問過我們房屋的次數以及他們的臉部影像,

我們還需要一個輔助函式來檢查面部資料庫中是否已經存在未知面部:

def lookup_known_face(face_encoding):
    metadata = https://www.cnblogs.com/panchuangai/archive/2020/11/10/None
    if len(known_face_encodings) == 0:
        return metadata
    face_distances = face_recognition.face_distance(
        known_face_encodings, 
        face_encoding
    )
    best_match_index = np.argmin(face_distances)
    if face_distances[best_match_index] < 0.65:
        metadata = known_face_metadata[best_match_index]
        metadata["last_seen"] = datetime.now()
        metadata["seen_frames"] += 1
        if datetime.now() - metadata["first_seen_this_interaction"]  
                > timedelta(minutes=5):
            metadata["first_seen_this_interaction"] = datetime.now()
            metadata["seen_count"] += 1
    return metadata

我們在這里做一些重要的事情:

  1. 使用face_recogntion庫,我們檢查未知面孔與所有以前的訪問者的相似程度,所述face_distance()函式為我們提供了未知臉部和所有已知的面之間的相似性的數值測量——數字越小,面部越類似,

  2. 如果面孔與我們的一位已知訪客非常相似,則我們假設他們是重復訪客,在這種情況下,我們將更新它們的“上次觀看”時間,并增加在視頻幀中看到它們的次數,

  3. 最后,如果在最近的五分鐘內有人在鏡頭前看到這個人,那么我們假設他們仍然在這里作為同一次訪問的一部分,否則,我們假設這是對我們房屋的新訪問,因此我們將重置跟蹤他們最近訪問的時間戳,

程式的其余部分是主回圈——一個無限回圈,在該回圈中,我們獲取視頻幀,在影像中查找人臉并處理我們看到的每個人臉,這是該程式的主要核心,讓我們來看看:

def main_loop():
    if USING_RPI_CAMERA_MODULE:
        video_capture = 
            cv2.VideoCapture(
                get_jetson_gstreamer_source(), 
                cv2.CAP_GSTREAMER
            )
    else:
        video_capture = cv2.VideoCapture(0)

第一步是使用適合我們計算機硬體的任何一種方法來訪問相機,

現在讓我們開始獲取視頻幀:

while True:
    # Grab a single frame of video
    ret, frame = video_capture.read()
    # Resize frame of video to 1/4 size
    small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)
    # Convert the image from BGR color
    rgb_small_frame = small_frame[:, :, ::-1]

每次抓取一幀視頻時,我們都會將其縮小到1/4尺寸,這將使人臉識別程序運行得更快,但代價是僅檢測影像中較大的人臉,但是由于我們正在構建一個門鈴攝像頭,該攝像頭只能識別攝像頭附近的人,所以這不是問題,

我們還必須處理這樣一個事實,OpenCV從攝像機中提取影像,每個像素存盤為藍綠色-紅色值,而不是標準的紅色-綠色-藍色值,在影像上進行人臉識別之前,我們需要轉換影像格式,

現在,我們可以檢測影像中的所有面部,并將每個面部轉換為面部編碼,只需兩行代碼:

face_locations = face_recognition.face_locations(rgb_small_frame)
face_encodings = face_recognition.face_encodings(
                     rgb_small_frame, 
                     face_locations
                  )

接下來,我們將遍歷每一個檢測到的面孔,并確定該面孔是我們過去見過的人還是新的訪客:

for face_location, face_encoding in zip(
                       face_locations, 
                       face_encodings):
metadata = https://www.cnblogs.com/panchuangai/archive/2020/11/10/lookup_known_face(face_encoding)
    if metadata is not None:
        time_at_door = datetime.now() - 
            metadata['first_seen_this_interaction']
        face_label = f"At door {int(time_at_door.total_seconds())}s"
    else:
        face_label = "New visitor!"
        # Grab the image of the face
        top, right, bottom, left = face_location
        face_image = small_frame[top:bottom, left:right]
        face_image = cv2.resize(face_image, (150, 150))
        # Add the new face to our known face data
        register_new_face(face_encoding, face_image)

如果我們以前見過此人,我們將檢索我們存盤的有關他們先前訪問的元資料,

如果沒有,我們將它們添加到我們的臉部資料庫中,并從視頻影像中獲取他們的臉部圖片以添加到我們的資料庫中,

現在我們找到了所有的人并弄清了他們的身份,我們可以再次遍歷檢測到的人臉,只是在每個人臉周圍繪制框并為每個人臉添加標簽:

for (top, right, bottom, left), face_label in 
                  zip(face_locations, face_labels):
    # Scale back up face location
    # since the frame we detected in was 1/4 size
    top *= 4
    right *= 4
    bottom *= 4
    left *= 4
    # Draw a box around the face
    cv2.rectangle(
        frame, (left, top), (right, bottom), (0, 0, 255), 2
    )
    # Draw a label with a description below the face
    cv2.rectangle(
        frame, (left, bottom - 35), (right, bottom), 
        (0, 0, 255), cv2.FILLED
    )
    cv2.putText(
        frame, face_label, 
        (left + 6, bottom - 6), 
        cv2.FONT_HERSHEY_DUPLEX, 0.8, 
        (255, 255, 255), 1
    )

我還希望在螢屏上方繪制一份最近訪問者的運行串列,其中包含他們訪問過你房屋的次數:

要繪制該影像,我們需要遍歷所有已知的面孔,并查看最近在鏡頭前的面孔,對于每個最近的訪客,我們將在螢屏上繪制他們的臉部影像并繪制訪問次數:

number_of_recent_visitors = 0
for metadata in known_face_metadata:
    # 如果我們在最后一分鐘見過此人,
    if datetime.now() - metadata["last_seen"] 
                         < timedelta(seconds=10):
# 繪制已知的面部影像
        x_position = number_of_recent_visitors * 150
frame[30:180, x_position:x_position + 150] =
              metadata["face_image"]
number_of_recent_visitors += 1
        # Label the image with how many times they have visited
        visits = metadata['seen_count']
        visit_label = f"{visits} visits"
if visits == 1:
            visit_label = "First visit"
cv2.putText(
            frame, visit_label, 
            (x_position + 10, 170), 
            cv2.FONT_HERSHEY_DUPLEX, 0.6, 
            (255, 255, 255), 1
        )

最后,我們可以在螢屏上顯示當前視頻幀,并在其頂部繪制所有注釋:

cv2.imshow('Video', frame)

為了確保程式不會崩潰,我們將每100幀將已知面孔串列保存到磁盤上:

if len(face_locations) > 0 and number_of_frames_since_save > 100:
    save_known_faces()
    number_of_faces_since_save = 0
else:
    number_of_faces_since_save += 1

程式退出時,僅需一行或兩行清理代碼即可關閉相機,

該程式的啟動代碼位于該程式的最底部:

if __name__ == "__main__":
    load_known_faces()
    main_loop()

我們要做的就是加載已知的面孔(如果有的話),然后啟動主回圈,該回圈永遠從相機讀取并在螢屏上顯示結果,

整個程式只有大約200行,但是它可以檢測到訪客,對其進行識別并每當他們來到你的家門時進行跟蹤,

一個有趣的事實:這種人臉跟蹤代碼在許多街道和汽車站的廣告中運行,以跟蹤誰在看廣告以及持續多長時間,以前,這聽起來似乎很遙不可及,但現在你花60美元就可以買到同樣的東西!

擴展程式

該程式是一個示例,說明了如何使用在便宜的Jetson Nano 2GB板上運行的少量Python 3代碼來構建功能強大的系統,

如果你想把它變成一個真正的門鈴攝像頭系統,你可以添加這樣一個功能:當系統檢測到門口有新的人時,它就會用Twilio向你發送短信,而不是僅僅在你的顯示幕上顯示,或者你可以嘗試用真實的資料庫替換簡單的記憶體中的人臉資料庫,

你也可以嘗試將這個程式轉換成完全不同的程式,閱讀一幀視頻,在影像中尋找內容,然后采取行動的模式是各種計算機視覺系統的基礎,嘗試更改代碼,看看你能想出什么!當你回家走到自己家門口時,讓它播放你自己定制的主題音樂怎么樣?你可以查看其他一些面部識別示例,以了解如何進行類似的操作,

  • 面部識別示例:https://github.com/ageitgey/face_recognition#python-code-examples

了解有關Nvidia Jetson平臺的更多資訊

如果你想了解有關使用Nvidia Jetson硬體平臺進行構建的更多資訊,Nvidia會提供新的免費Jetson培訓課程,查看他們的網站以獲取更多資訊,

  • https://courses.nvidia.com/courses/course-v1:DLI+C-RX-02+V1/about

他們也有很棒的社區資源,例如JetsonHacks網站,

  • https://www.jetsonhacks.com/

如果你想進一步了解有關使用Python構建ML和AI系統的更多資訊,請在我的網站上查看我的其他文章和書,

  • https://www.machinelearningisfun.com/

原文鏈接:https://medium.com/@ageitgey/build-a-face-recognition-system-for-60-with-the-new-nvidia-jetson-nano-2gb-and-python-46edbddd7264

歡迎關注磐創AI博客站:
http://panchuang.net/

sklearn機器學習中文官方檔案:
http://sklearn123.com/

歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/209899.html

標籤:其他

上一篇:測驗工具-慢sql日志分析工具pt-query-digest

下一篇:0832. Flipping an Image (E)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more