ከአንተ በፊት ነገሮችን የማወቅ ተግባር ነው። ቅድሚያ የሚሰጠው - የስራ ፍጥነት ተቀባይነት ባለው ትክክለኛነት. የYOLOv3 አርክቴክቸር ወስደህ የበለጠ አሰልጥነህ። ትክክለኛነት (mAp75) ከ0.95 በላይ ነው። ነገር ግን የሩጫው ፍጥነት አሁንም ዝቅተኛ ነው. ክፋት።
ዛሬ መጠኑን እናልፋለን። እና በመቁረጫው ስር, ግምት ውስጥ ያስገቡ ሞዴል መከርከም - ትክክለኛነትን ሳያሳጣ ኢንፈረንስ ለማፋጠን ተደጋጋሚ የአውታረ መረብ ክፍሎችን መቁረጥ። በግልጽ - የት, ምን ያህል እና እንዴት እንደሚቆረጥ. በእጅ እንዴት እንደሚሰራ እና የት አውቶማቲክ ማድረግ እንደሚችሉ እንወቅ። መጨረሻ ላይ - በ keras ላይ ማጠራቀሚያ.
መግቢያ
በመጨረሻው የሥራ ቦታዬ ፣ በፔር ውስጥ ማክሮስኮፕ ፣ አንድ ልማድ አገኘሁ - የስልተ ቀመሮችን የአፈፃፀም ጊዜ ሁል ጊዜ መከታተል። እና የአውታረ መረቡ የማስኬጃ ጊዜ ሁል ጊዜ በቂ በሆነ ማጣሪያ በኩል መረጋገጥ አለበት። ብዙውን ጊዜ በምርት ውስጥ ያለው ዘመናዊ ይህንን ማጣሪያ አያልፍም ፣ ይህም ወደ መከርከም መራኝ።
መግረዝ በ ውስጥ የተብራራ የቆየ ርዕስ ነው።
ግን ለመበተን
ወደ ባዮሎጂ እይታ
ከባዮሎጂ የሚመጡ ሀሳቦች ወደ ጥልቅ ትምህርት ሲመለከቱ ወድጄዋለሁ። እነሱ፣ ልክ እንደ ዝግመተ ለውጥ፣ እምነት ሊጣልባቸው ይችላል (ReLU በጣም ተመሳሳይ መሆኑን ያውቃሉ
የሞዴል መከርከም ሂደት ለባዮሎጂ ቅርብ ነው። እዚህ ያለው የአውታረ መረብ ምላሽ ከአንጎል ፕላስቲክ ጋር ሊመሳሰል ይችላል. በመጽሐፉ ውስጥ ሁለት አስደሳች ምሳሌዎች አሉ።
- አንድ ግማሽ ብቻ የተወለደችው ሴት አንጎል የጎደለውን ግማሽ ተግባራት ለማከናወን እራሱን እንደገና አዘጋጀ
- ሰውዬው ለዕይታ ተጠያቂ የሆነውን የአንጎሉን ክፍል በጥይት ተኩሷል። ከጊዜ በኋላ, ሌሎች የአንጎል ክፍሎች እነዚህን ተግባራት ተቆጣጠሩ. (ለመድገም አይሞክሩ)
ስለዚህ ከእርስዎ ሞዴል, አንዳንድ ደካማ ውዝግቦችን መቁረጥ ይችላሉ. በአስጊ ሁኔታ ውስጥ, የተቀሩት እሽጎች የተቆራረጡትን ለመተካት ይረዳሉ.
የዝውውር ትምህርት ይወዳሉ ወይንስ ከባዶ ይማራሉ?
አማራጭ ቁጥር አንድ. በዮሎቭ3 ላይ የማስተላለፊያ ትምህርትን ትጠቀማለህ። ሬቲና፣ ማስክ-RCNN ወይም U-Net ግን ብዙ ጊዜ፣ እንደ COCO ያሉ 80 የቁስ ክፍሎችን መለየት አያስፈልገንም። በእኔ ልምምድ ሁሉም ነገር በ1-2 ክፍሎች የተገደበ ነው. ለ 80 ክፍሎች ያለው አርክቴክቸር እዚህ ብዙ ነው ብሎ መገመት ይቻላል. አርክቴክቸር መቀነስ አለበት የሚል ሀሳብ ይነሳል። ከዚህም በላይ ቀደም ሲል የሰለጠኑ ክብደቶችን ሳላጠፋ ይህን ማድረግ እፈልጋለሁ.
አማራጭ ቁጥር ሁለት. ምናልባት ብዙ ዳታ እና የኮምፒውተር ግብዓቶች አሉዎት፣ ወይም ልዕለ-ብጁ አርክቴክቸር ብቻ ያስፈልግዎታል። ምንም ማለት አይደለም. ግን ኔትወርኩን ከባዶ እየተማርክ ነው። የተለመደው ቅደም ተከተል - የውሂብ አወቃቀሩን እንመለከታለን, ከኃይል አኳያ ከመጠን በላይ የሆነ ስነ-ህንፃን እንመርጣለን እና ማቋረጥን ከስልጠና እንገፋፋለን. ካርል 0.6 መቋረጦችን አየሁ።
በሁለቱም ሁኔታዎች አውታረ መረቡ ሊቀንስ ይችላል. አስተዋወቀ። አሁን ምን ዓይነት የግርዛት መግረዝ ምን እንደሆነ ለማወቅ እንሞክር
አጠቃላይ ስልተ ቀመር
ውዝግቦችን ማስወገድ እንደምንችል ወስነናል። በጣም ቀላል ይመስላል:
ማንኛውንም ማወዛወዝ ማስወገድ ለአውታረ መረቡ አስጨናቂ ነው, ይህም አብዛኛውን ጊዜ ወደ አንዳንድ የስህተት መጨመር ያመራል. በአንድ በኩል፣ ይህ የስህተት መጨመር ውዝግቦችን እንዴት በትክክል እንደምናስወግድ አመላካች ነው (ለምሳሌ ትልቅ ጭማሪ ስህተት እየሰራን መሆኑን ያሳያል)። ነገር ግን ትንሽ ጭማሪ በጣም ተቀባይነት ያለው እና ብዙ ጊዜ የሚጠፋው በቀጣይ የብርሃን መልሶ ማሰልጠኛ በትንሽ LR ነው። የመልሶ ማሰልጠኛ ደረጃ መጨመር፡-
አሁን ትምህርታችንን መቼ ማቆም እንደምንፈልግ ማወቅ አለብን<->መግረዝ ሉፕ። አውታረ መረቡን በተወሰነ መጠን መቀነስ እና ፍጥነትን (ለምሳሌ ለሞባይል መሳሪያዎች) ፍጥነት መቀነስ ስንፈልግ እዚህ ላይ ያልተለመዱ አማራጮች ሊኖሩ ይችላሉ። ይሁን እንጂ በጣም የተለመደው አማራጭ ስህተቱ ከሚፈቀደው በላይ እስኪሆን ድረስ ዑደቱን መቀጠል ነው. ሁኔታ መጨመር፡-
ስለዚህ, አልጎሪዝም ግልጽ ይሆናል. የሚወገዱትን ውዝግቦች እንዴት እንደሚወስኑ ለማወቅ ይቀራል.
የተወገዱ ቅርቅቦችን በማግኘት ላይ
አንዳንድ ውዝግቦችን ማስወገድ አለብን። ወደፊት መጣደፍ እና ማንኛውንም "መተኮስ" መጥፎ ሀሳብ ነው፣ ምንም እንኳን ቢሰራም። ነገር ግን ጭንቅላት ስላለ ለማሰብ እና ለመሰረዝ "ደካማ" ውዝግቦችን ለመምረጥ መሞከር ትችላለህ. በርካታ አማራጮች አሉ፡-
ዝቅተኛው L1-መለኪያ ወይም ዝቅተኛ_መግኒቱድ_መግረዝ . ከትንሽ ክብደቶች ጋር የሚጋጭ ሀሳብ ለመጨረሻው ውሳኔ ትንሽ አስተዋጽኦ ያደርጋል- አነስተኛው L1 መለኪያ በአማካኝ እና በመደበኛ ልዩነት የተሰጠው። የስርጭቱን ባህሪ ግምት እናሟላለን።
በመጨረሻው ትክክለኛነት ላይ አነስተኛ ተጽዕኖ ያላቸውን የኮንቮሉሽን ጭንብል እና ማግለል። . ትርጉም የለሽ ውዝግቦች የበለጠ ትክክለኛ ትርጓሜ፣ ግን ጊዜ እና ሀብት የሚወስድ።- ሌላ
እያንዳንዳቸው አማራጮች በህይወት የመኖር መብት እና የአተገባበር ባህሪያት አላቸው. እዚህ ከትንሽ L1-መለኪያ ጋር ያለውን ልዩነት እንመለከታለን
ለ YOLOv3 በእጅ ሂደት
የመጀመሪያው አርክቴክቸር ቀሪ ብሎኮችን ይዟል። ነገር ግን ለጥልቅ ኔትወርኮች የቱንም ያህል አሪፍ ቢሆኑም በጥቂቱ ጣልቃ ይገቡብናል። ችግሩ በእነዚህ ንብርብሮች ውስጥ ከተለያዩ ኢንዴክሶች ጋር እርቅ መሰረዝ አለመቻል ነው፡-
ስለዚህ ፣ እርቅን በነፃ የምናስወግድባቸውን ንብርብሮች እንመርጣለን-
አሁን የስራ ዑደት እንገንባ፡-
- ማነቃቂያዎችን በመስቀል ላይ
- ምን ያህል እንደሚቆረጥ ማወቅ
- ቆርጦ ማውጣት
- በLR=10e-1 4 ዘመናትን መማር
- በመሞከር ላይ
ጥቅልሎችን ማውረድ በተወሰነ ደረጃ ምን ያህል ማስወገድ እንደምንችል ለመገምገም ጠቃሚ ነው። ምሳሌዎችን ይስቀሉ፡
በሁሉም ቦታ ማለት ይቻላል 5% convolutions በጣም ዝቅተኛ L1-ኖርም እንዳላቸው እና እኛ እነሱን ማስወገድ እንደሚችሉ እናያለን. በእያንዳንዱ ደረጃ, እንዲህ ዓይነቱ ማራገፊያ ተደግሟል እና የትኞቹ ንብርብሮች እና ምን ያህል እንደሚቆረጡ ግምገማ ተዘጋጅቷል.
አጠቃላይ ሂደቱ በ4 ደረጃዎች (እዚህ እና በሁሉም ቦታ የ RTX 2060 ሱፐር ቁጥሮች) ጋር ይጣጣማሉ፡
Шаг | ካርታ75 | የመለኪያዎች ብዛት, ሚሊዮን | የአውታረ መረብ መጠን፣ mb | ከመጀመሪያው፣% | የሩጫ ጊዜ፣ ms | የመቁረጥ ሁኔታ |
---|---|---|---|---|---|---|
0 | 0.9656 | 60 | 241 | 100 | 180 | - |
1 | 0.9622 | 55 | 218 | 91 | 175 | ከሁሉም 5% |
2 | 0.9625 | 50 | 197 | 83 | 168 | ከሁሉም 5% |
3 | 0.9633 | 39 | 155 | 64 | 155 | 15% 400+ ጥቅሎች ላሉት ንብርብሮች |
4 | 0.9555 | 31 | 124 | 51 | 146 | 10% 100+ ጥቅሎች ላሉት ንብርብሮች |
አንድ አዎንታዊ ተጽእኖ በደረጃ 2 ላይ ተጨምሯል - ባች-መጠን 4 ወደ ማህደረ ትውስታ ውስጥ ገባ, ይህም ተጨማሪ የስልጠና ሂደትን በእጅጉ አፋጥኗል.
በ 4 ኛ ደረጃ, ሂደቱ ቆሟል, ምክንያቱም የተራዘመ ተጨማሪ ስልጠና እንኳ mAp75 ወደ አሮጌው እሴት አላሳደገውም።
በውጤቱም, በ ላይ ያለውን ፍንጭ ማፋጠን ተችሏል 15%፣ መጠኑን በ 35% እና ትክክለኛነት አያጡም.
ለቀላል አርክቴክቸር አውቶማቲክ
ለቀላል የኔትወርክ አርክቴክቸር (ያለ ሁኔታዊ አክል፣ ውህድ እና ቀሪ ብሎኮች) በሁሉም የኮንቮሉሽን ንብርብሮች ሂደት ላይ ማተኮር እና የመቁረጥ ሂደትን በራስ-ሰር ማድረግ ይቻላል።
ይህንን አማራጭ ተግባራዊ አድርጌያለሁ
ቀላል ነው፡ እርስዎ የኪሳራ ተግባር፣ አመቻች እና ባች ጀነሬተሮች ብቻ ነው ያለዎት።
import pruning
from keras.optimizers import Adam
from keras.utils import Sequence
train_batch_generator = BatchGenerator...
score_batch_generator = BatchGenerator...
opt = Adam(lr=1e-4)
pruner = pruning.Pruner("config.json", "categorical_crossentropy", opt)
pruner.prune(train_batch, valid_batch)
አስፈላጊ ከሆነ የውቅር መለኪያዎችን መለወጥ ይችላሉ-
{
"input_model_path": "model.h5",
"output_model_path": "model_pruned.h5",
"finetuning_epochs": 10, # the number of epochs for train between pruning steps
"stop_loss": 0.1, # loss for stopping process
"pruning_percent_step": 0.05, # part of convs for delete on every pruning step
"pruning_standart_deviation_part": 0.2 # shift for limit pruning part
}
በተጨማሪም በመደበኛ ልዩነት ላይ የተመሰረተ ገደብ ተግባራዊ ይሆናል. ግቡ የተወገዱትን ክፍል መገደብ ነው፣ ቀድሞውንም “በቂ” L1-መለኪያዎች ያሉ ውዝግቦችን ሳያካትት፡-
ስለዚህ፣ ከቀኝ ጋር ተመሳሳይ ከሆኑ ስርጭቶች ውስጥ ደካማ ውዝግቦች እንዲወገዱ እና ከግራ ተመሳሳይ ስርጭቶች መወገድ ላይ ተጽዕኖ እንዳያደርጉ እንፈቅዳለን።
ስርጭቱ ወደ መደበኛው ሲቃረብ የፕሪንግ_standart_deviation_part Coefficient ከሚከተሉት ሊመረጥ ይችላል፡
2 ሲግማ ግምት እመክራለሁ. ወይም እሴቱን <1.0 በመተው ይህን ባህሪ ችላ ማለት ይችላሉ።
ውጤቱ የአውታረ መረብ መጠን፣ መጥፋት እና የአውታረ መረብ አሂድ ጊዜ በሙከራው ላይ ያለው ግራፍ ነው፣ መደበኛ ወደ 1.0። ለምሳሌ፣ እዚህ የኔትወርክ መጠኑ በጥራት ሳይቀንስ በ2 ጊዜ ያህል ቀንሷል (ትንሽ ኮንቮሉሽን አውታር ለ100k ክብደት)።
የሩጫው ፍጥነት ለተለመደው መለዋወጥ የተጋለጠ ነው እና ብዙም አልተለወጠም። ለዚህም ማብራሪያ አለ፡-
- የመቀየሪያዎቹ ብዛት ከምቾት (32, 64, 128) ወደ ቪዲዮ ካርዶች በጣም ምቹ አይደለም - 27, 51, ወዘተ. እዚህ ልሳሳት እችላለሁ፣ ግን ምናልባት ያደርጋል።
- አርክቴክቸር ሰፊ ሳይሆን ወጥነት ያለው ነው። ስፋቱን በመቀነስ, ጥልቀቱን አንነካውም. ስለዚህ, ጭነቱን እንቀንሳለን, ነገር ግን ፍጥነቱን አንቀይርም.
ስለዚህ ማሻሻያው የተገለጸው በሩጫው ወቅት የ CUDA ጭነት በ 20-30% በመቀነሱ ነው, ነገር ግን የሩጫ ጊዜ መቀነስ አይደለም.
ውጤቶች
እናንጸባርቅ። 2 የመግረዝ አማራጮችን ተመልክተናል - ለ YOLOv3 (በእጅዎ መስራት ሲኖርብዎት) እና ቀላል አርክቴክቸር ላላቸው አውታረ መረቦች። በሁለቱም ሁኔታዎች የኔትወርክን መጠን መቀነስ እና ትክክለኛነትን ሳያሳጣው ማፋጠን እንደሚቻል ሊታይ ይችላል. ውጤቶች፡-
- መጠኑን በመቀነስ
- ማፋጠንን አሂድ
- የCUDA ጭነትን በመቀነስ ላይ
- በውጤቱም, የአካባቢ ወዳጃዊነት (የወደፊቱን የኮምፒዩተር ሀብቶች አጠቃቀምን እናስተካክላለን. የሆነ ቦታ አንድ ሰው ይደሰታል
ግሬታ ታንበርግ )
የትርፍ አንጀት ሕመም
- ከመግረዝ ደረጃ በኋላ፣ መጠኑን ማስተካከልም ይችላሉ (ለምሳሌ በ TensorRT)
- Tensorflow ለ መገልገያዎችን ይሰጣል
ዝቅተኛ_መግነጢሳዊ_መግረዝ . ይሰራል። ማከማቻ ማዳበር እፈልጋለሁ እና ለመርዳት ደስ ይለኛል
ምንጭ: hab.com