خوب خوب البته علاوه بر شبکه عصبی در قسمت هفتم خیلی بیشتر از شبکه عصبی در مورد دیگر ماژول ها و ترکیب انها یاد گرفتیم البته در این جلسه به چند تا چیز جالب و جلو تر بوردن پروژه پیش می رویم
قسمت 8
به نام خداوند بخشنده مهربان سجاد عابدی طامه هستم
خوب حالا چند تا نکته :
1 اقا تعداد نرون ها در لایه پنهان خیلی مهم هست خیلی مهم خیلی خیلی مهم
به خاطر اینکه ما اگر تعداد نرون ها رو کم بگزاریم شبکه دقتش کم می شود
و اگر زیاد باشد فقت روی تست ها و داده اموزشی درست کار می کند به قول یکی از استاد های ما
شبکه overfitting می شود خودتون نگاه کنید :
خوب حالا چی کار کنیم ؟
خوب آرامش را حفظ می کنیم .
و بعد می گیم خوب بریم ادامه مقاله
بدانید به تجربه نیاز دارد یعنی برای بعضی ها 50 تا برای بعضی ها 1 جواب می دهد
توی سیستم ها فرق دارد
مثلا من توی یکی از پروژه هام شبکه عصبی داشت عالی کار می کرد اما رفت توی یک سیستم دیگر و انجا
overfitting شد
خوب پس به تجربه و ازمایش و خطا باید تعداد رو پیدا کنیم
خوب بریم سراغ کد ها
یک فایل جدید باز کنید
و بعد توش کد اجرای دوربین و نمایش ان را بنویسید
اگر هم بلد نیستید
کد ها :
import cv2 cv = cv2.VideoCapture(0) while True: _ , frame = cv.read() cv2.imshow("PORT",frame) key = cv2.waitKey(10) if(key == ord('q')): break
خوب بعدش یک تابع توش بسازید
من اسمش رو
AI_frame
می گزارم
خوب حالا بعدش بگم قرار چی کا کنیم
خوب خوب حالا باید بگیم که تشخیص چهره رو بده
ما برای تشخیص چهره از یک فایل با پسوند xml احتیاج داریم
خوب فایل را شما همیشه دارید فقط بیاید دنبال من تا بگم کجا هست
اول وارد Lib شوید
برای من اینجا است Lib پایتونم
C:\Users\ASREBAZI\AppData\Local\Programs\Python\Python38\Lib
و بعد
C:\Users\ASREBAZI\AppData\Local\Programs\Python\Python38\Lib\site-packages\cv2
و بعد
C:\Users\ASREBAZI\AppData\Local\Programs\Python\Python38\Lib\site-packages\cv2\data
و بعد در سرچ بزنید
haarcascade_frontalface_default.xml
و بعد ازش یک کپی بگیرید
و بقل فایل کد های که داریم روش کار می کنیم بگزارید
import cv2
import numpy as np
face = "haarcascade_frontalface_default.xml"
face_my = cv2.CascadeClassifier(face)
cv = cv2.VideoCapture('f//1.avi')
while True:
_ , frame = cv.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces =face_my.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5,minSize=(60,60),flags=cv2.CASCADE_SCALE_IMAGE)
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow("PORT",frame)
key = cv2.waitKey(1)
if(key == ord('q')):
break
خوب اگر فکر می کنید تشخیص چهره ضعیف است و دقت کمی دارد
باید
minSize=(60,60)
را عدد های داخلش را کم تر کنید مثلا
minSize=(30,30)
اما سرعت پایین تر می اید
و اگر می خواهید سرعت تشخیص بالا رود و دقت مناسب من
عدد 100 رو پیش نهاد می کنم
minSize=(100,100)
خوب حالا بریم سراغ اینکه داده های عکس رو کم تر کنیم
import cv2
import numpy as np port = [ ] #########
face = "haarcascade_frontalface_default.xml"
face_my = cv2.CascadeClassifier(face)
cv = cv2.VideoCapture('f//1.avi')
while True:
def AI_Face(o = None): #######
print(o) ######
_ , frame = cv.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces =face_my.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5,minSize=(60,60),flags=cv2.CASCADE_SCALE_IMAGE)
m = 0 #############
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
m = 1 ###########################
AI_Face(m) ###########################
cv2.imshow("PORT",frame)
key = cv2.waitKey(1)
if(key == ord('q')):
break
خوب کد هایی که جلوش ###### گزاشتم یعنی این کد ها رو اضافه کردم توی این برنامه می گم اگر
ادم رو دید بگزار 1 اما ندید همان 0 بگزار و بعد تابع AI_Face رو بخوان
و مقدار m را توش بگزار
خوب حالا باید بگیم بیاد مقدار m رو در یک لیست ذخیره کند
مثل کد زیر
import cv2
import numpy as np
face = "haarcascade_frontalface_default.xml"
face_my = cv2.CascadeClassifier(face)
port = [ ]
cv = cv2.VideoCapture('f//1.avi')
while True:
def AI_Face(o = None):
port.append(o) #################
_ , frame = cv.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces =face_my.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5,minSize=(115,115),flags=cv2.CASCADE_SCALE_IMAGE)
m = 0
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
m = 1
AI_Face(m)
cv2.imshow("PORT",frame)
key = cv2.waitKey(1)
if(key == ord('q')):
break
خوب بعدش باید بشماریم فریم چندم هست ؟
تکه کد زیر را بعد از کد
port.append(o)
بگزارید
g = -1 for i in port: g = g +1 if g == 50: print(port[50]) port.clear()
بعد باید شبکه عصبی رو بهش اضافه کنیم و بعد کلی کار دیگه
تا جلسه نهم خدا نگهدار