18 KiB
ನಿಮ್ಮ IoT ಸಾಧನದಿಂದ ಸ್ಟಾಕ್ ಎಣಿಕೆ - ವಾಸ್ತವಿಕ IoT ಹಾರ್ಡ್ವೇರ್ ಮತ್ತು ರಾಸ್ಪ್ಬೆರ್ರಿ ಪೈ
ಭವಿಷ್ಯವಾಣಿ ಮತ್ತು ಅವುಗಳ ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳ ಸಂಯೋಜನೆ ಚಿತ್ರದಲ್ಲಿ ಸ್ಟಾಕ್ ಎಣಿಸಲು ಬಳಸಬಹುದು
ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳನ್ನು ತೋರಿಸಿ
ಉಪಯುಕ್ತ ಡಿಬಗ್ಗಿಂಗ್ ಹಂತವಾಗಿ ನೀವು ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳನ್ನು ಮುದ್ರಿಸುವುದಲ್ಲದೆ, ಕ್ಯಾಪ್ಚರ್ ಮಾಡಿದಾಗ ಡಿಸ್ಕ್ಗೆ ಬರೆಯಲಾದ ಚಿತ್ರದಲ್ಲಿ ಅವುಗಳನ್ನು ರೇಖಾಚಿತ್ರದ ಮೂಲಕ ಕೂಡ ಬರೆಯಬಹುದು.
ಕಾರ್ಯ - ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳನ್ನು ಮುದ್ರಿಸಿ
-
stock-counterಯೋಜನೆ VS ಕೋಡ್ನಲ್ಲಿ ತೆರೆಯಲ್ಪಟ್ಟಿದ್ದಿರಲಿ ಮತ್ತು ನೀವು ವರ್ಚುವಲ್ IoT ಸಾಧನವನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ ವರ್ಚುವಲ್ ಪರಿಸರ ಸಕ್ರಿಯಗೊಂಡಿರಲಿ. -
ಕೆಳಗಿನಂತೆ
forಲೂಪಿನಲ್ಲಿನprintಹೇಳಿಕೆಯನ್ನು ಬದಲಾಯಿಸಿ ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳನ್ನು ಕಾನ್ಸೋಲ್ಗೆ ಮುದ್ರಿಸಲು:print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%\t{prediction.bounding_box}') -
ಕ್ಯಾಮೆರಾ ಬೇಲೆಯ ಮೇಲೆ ಯಾವುದೇ ಸ್ಟಾಕ್ ನೋಡುತ್ತಿರುವಂತೆ ಆಪ್ ಅನ್ನು ಚಾಲನೆ ಮಾಡಿ. ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳು 0-1 ರಲ್ಲಿ ಎಡ, ಮೇಲೆ, ಅಗಲ ಮತ್ತು ಎತ್ತರ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಕಾನ್ಸೋಲ್ನಲ್ಲಿ ಮುದ್ರಿಸಲಾಗುವುದು.
pi@raspberrypi:~/stock-counter $ python3 app.py tomato paste: 33.42% {'additional_properties': {}, 'left': 0.3455171, 'top': 0.09916268, 'width': 0.14175442, 'height': 0.29405564} tomato paste: 34.41% {'additional_properties': {}, 'left': 0.48283678, 'top': 0.10242918, 'width': 0.11782813, 'height': 0.27467814} tomato paste: 31.25% {'additional_properties': {}, 'left': 0.4923783, 'top': 0.35007596, 'width': 0.13668466, 'height': 0.28304994} tomato paste: 31.05% {'additional_properties': {}, 'left': 0.36416405, 'top': 0.37494493, 'width': 0.14024884, 'height': 0.26880276}
ಕಾರ್ಯ - ಚಿತ್ರದಲ್ಲಿ ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳನ್ನು ಅಳೆಯಿರಿ
-
ಪಿಪ್ ಪ್ಯಾಕೇಜ್ Pillow ಅನ್ನು ಚಿತ್ರಗಳ ಮೇಲೆ ರೇಖಾಚಿತ್ರ ಮಾಡಲು ಬಳಸಬಹುದು. ಇದನ್ನು ಕೆಳಗಿನ ಆಜ್ಞೆಯಿಂದ ಸ್ಥಾಪಿಸಿರಿ:
pip3 install pillowನೀವು ವರ್ಚುವಲ್ IoT ಸಾಧನವನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ, ಸಕ್ರಿಯಗೊಂಡಿರುವ ವರ್ಚುವಲ್ ಪರಿಸರದೊಳಗಿನಿಂದ ಇದನ್ನು ಚಾಲನೆ ಮಾಡುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
-
ಈ ಕೆಳಗಿನ ಆಮದು ಹೇಳಿಕೆಯನ್ನು
app.pyಫೈಲ್ನ ತುದಿಯಲ್ಲಿ ಸೇರಿಸಿ:from PIL import Image, ImageDraw, ImageColorಇದು ಚಿತ್ರ ಸಂಪಾದನೆಗಾಗಿ ಅಗತ್ಯವಿರುವ ಕೋಡ್ ಅನ್ನು ಆಮದು ಮಾಡುತ್ತದೆ.
-
ಈ ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು
app.pyಫೈಲ್ನ ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ:with Image.open('image.jpg') as im: draw = ImageDraw.Draw(im) for prediction in predictions: scale_left = prediction.bounding_box.left scale_top = prediction.bounding_box.top scale_right = prediction.bounding_box.left + prediction.bounding_box.width scale_bottom = prediction.bounding_box.top + prediction.bounding_box.height left = scale_left * im.width top = scale_top * im.height right = scale_right * im.width bottom = scale_bottom * im.height draw.rectangle([left, top, right, bottom], outline=ImageColor.getrgb('red'), width=2) im.save('image.jpg')ಈ ಕೋಡ್ ಹಿಂದಿನ ಸೇವ್ ಮಾಡಲಾದ ಚಿತ್ರವನ್ನು ಸಂಪಾದನೆಗೆ ತೆಗೆಯುತ್ತದೆ. ನಂತರ ಭವಿಷ್ಯವಾಣಿ ಗಳನ್ನು ಲೂಪ್ ಮೂಲಕ ತೆಗೆದುಕೊಂಡು ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳನ್ನು ಪಡೆಯುತ್ತದೆ, ಮತ್ತು ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ ಮೌಲ್ಯಗಳಿಂದ ಕೆಳಗಡೆ ಬಲದ ಸಂಯೋಜನೆಯನ್ನು ಲೆಕ್ಕಹಾಕುತ್ತದೆ 0-1 ವ್ಯಾಪ್ತಿಯಲ್ಲಿ. ಅವುಗಳನ್ನು ಚಿತ್ರದ ಆಯಾಮದೊಡನೆ ಗುಣಿಸಿ ಚಿತ್ರ ಸಂಯೋಜನೆಗಳಿಗೆ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಎಡ ಮೌಲ್ಯ 0.5 ಆಗಿದ್ದರೆ 600 ಪಿಕ್ಸೆಲ್ಸ್ ಅಗಲದ ಚಿತ್ರದಲ್ಲಿ, ಇದನ್ನು 300 (0.5 x 600 = 300) ಗೆ ಪರಿವರ್ತಿಸುವುದಾಗಿದೆ.
ಪ್ರತಿ ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ ಅನ್ನು ಎರೆಗಿನ ರೇಖೆಯಿಂದ ಚಿತ್ರದಲ್ಲಿ ರೇಖಿಸುತ್ತಾರೆ. ಕೊನೆಗೆ ಸಂಪಾದಿಸಿದ ಚಿತ್ರ ಸೇವ್ ಮಾಡಿ ಮೂಲ ಚಿತ್ರವನ್ನು ಮರುಬರೆಯಲಾಗುತ್ತದೆ.
-
ಕ್ಯಾಮೆರಾ ಬೇಲೆಯ ಮೇಲೆ ಕೆಲವು ಸ್ಟಾಕ್ ನೋಡುತ್ತಿರುವಂತೆ ಆಪ್ ಅನ್ನು ಚಾಲನೆ ಮಾಡಿ. ನೀವು VS ಕೋಡ್ ಎಕ್ಸ್ಪ್ಲೋರರ್ನಲ್ಲಿ
image.jpgಫೈಲ್ ಅನ್ನು ಕಾಣಬಹುದು, ಮತ್ತು ಅದನ್ನು ಆರಿಸಿ ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳನ್ನು ನೋಡಬಹುದಾಗಿದೆ.
ಸ್ಟಾಕ್ ಎಣಿಕೆ
ಮೇಲಿನ ಚಿತ್ರದಲ್ಲಿ ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳಿಗೆ ಸ್ವಲ್ಪ ಜೋಡಣೆ ಇದೆ. ಈ ಜೋಡಣೆ ತುಂಬು ದೊಡ್ಡದಾಗಿದ್ದರೆ, ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳು ಒಬ್ಬೇ ವಸ್ತುವನ್ನು ಸೂಚಿಸಬಹುದು. ವಸ್ತುಗಳನ್ನು ಸರಿಯಾಗಿ ಎಣಿಸಲು ನೀವು ಮಹತ್ವದ ಜೋಡಣೆಯಿರುವ ಬಾಕ್ಸ್ಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಬೇಕಾಗುತ್ತದೆ.
ಕಾರ್ಯ - ಜೋಡಣೆ ನಿರ್ಲಕ್ಷಿಸಿ ಸ್ಟಾಕ್ ಎಣಿಸಿ
-
ಪಿಪ್ ಪ್ಯಾಕೇಜ್ Shapely ಬಳಸಿ ವಿಚಲನ ಲೆಕ್ಕಹಾಕಬಹುದು. ನೀವು ರಾಸ್ಪ್ಬೆರ್ರಿ ಪೈ ಬಳಸುತ್ತಿದ್ದರೆ, ಮೊದಲು ಗ್ರಂಥಾಲಯ ಡಿಪೆಂಡೆನ್ಸಿ ಸ್ಥಾಪಿಸಬೇಕು:
sudo apt install libgeos-dev -
ಶ್ಯಾಪ್ಲಿ ಪಿಪ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ:
pip3 install shapelyನೀವು ವರ್ಚುವಲ್ IoT ಸಾಧನವನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ, ಸಕ್ರಿಯಗೊಂಡಿರುವ ವರ್ಚುವಲ್ ಪರಿಸರದಿಂದ ಇದನ್ನು ಚಾಲನೆ ಮಾಡುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
-
ಈ ಕೆಳಗಿನ ಆಮದು ಹೇಳಿಕೆಯನ್ನು
app.pyಫೈಲ್ನ ತುದಿಯಲ್ಲಿ ಸೇರಿಸಿ:from shapely.geometry import Polygonಇದು ಜೋಡಣೆ ಲೆಕ್ಕಿಸಲು ಪೊಲಿಗೋನ್ಗಳನ್ನು ರಚಿಸಲು ಅಗತ್ಯವಿರುವ ಕೋಡ್ ಅನ್ನು ಆಮದು ಮಾಡುತ್ತದೆ.
-
ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳನ್ನು ರೇಖಿಸುವ ಕೋಡ್ಗೂ ಮೊದಲು ಈ ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ಸೇರಿಸಿ:
overlap_threshold = 0.20ಇದು ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳನ್ನು ಒಬ್ಬೇ ವಸ್ತುವಾಗಿ ಪರಿಗಣಿಸುವ ಮೊದಲು ಅನುಮತಿಸಲಾದ ಜೋಡಣೆ ಶೇಕಡಾವಾರಿಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. 0.20 ಎಂದರೆ 20% ಜೋಡಣೆ.
-
ಶ್ಯಾಪ್ಲಿ ಬಳಸಿ ಜೋಡಣೆ ಲೆಕ್ಕಿಸಲು, ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳನ್ನು ಶ್ಯಾಪ್ಲಿ ಪೊಲಿಗೋನ್ಗಳಾಗಿ ಪರಿವರ್ತಿಸಬೇಕು. ಇದಕ್ಕಾಗಿ ಈ ಕೆಳಗಿನ ಕಾರ್ಯವನ್ನು ಸೇರಿಸಿ:
def create_polygon(prediction): scale_left = prediction.bounding_box.left scale_top = prediction.bounding_box.top scale_right = prediction.bounding_box.left + prediction.bounding_box.width scale_bottom = prediction.bounding_box.top + prediction.bounding_box.height return Polygon([(scale_left, scale_top), (scale_right, scale_top), (scale_right, scale_bottom), (scale_left, scale_bottom)])ಇದು ಭವಿಷ್ಯವಾಣಿ ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ ಬಳಸಿ ಒಂದು ಪೊಲಿಗೋನ್ ಸೃಷ್ಟಿಸುತ್ತದೆ.
-
ಜೋಡಣೆಯಾಗಿರುವ ವಸ್ತುಗಳನ್ನು ತೆಗೆದುಹಾಕುವ ಲಾಜಿಕ್ ಎಂದರೆ ಎಲ್ಲಾ ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳನ್ನು ಹೋಲಿಸಿ, ಮತ್ತು ಯಾವಯಾವ ಜೋಡಿಯ ಭವಿಷ್ಯವಾಣಿಗಳ ಬಾಕ್ಸ್ಗಳು ಪಾರಮಿತಿ ಮೀರಿದಷ್ಟು ಜೋಡಣೆಯುಳ್ಳದಾಗಿದ್ದರೆ, ಒಂದನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ. ಎಲ್ಲಾ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಹೋಲಿಸಲು, ಮೊದಲನೆಯ ಭವಿಷ್ಯವಾಣಿ 2, 3, 4 ಇತ್ಯಾದಿ ಜೊತೆ ಹೋಲಿಸಿ, ನಂತರ 2 ಅನ್ನು 3, 4 ಇತ್ಯಾದಿ ಜೊತೆ ಹೋಲಿಸಲಾಗುತ್ತದೆ. ಈ ಕೆಳಗಿನ ಕೋಡ್ ಇದನ್ನು ಮಾಡುತ್ತದೆ:
to_delete = [] for i in range(0, len(predictions)): polygon_1 = create_polygon(predictions[i]) for j in range(i+1, len(predictions)): polygon_2 = create_polygon(predictions[j]) overlap = polygon_1.intersection(polygon_2).area smallest_area = min(polygon_1.area, polygon_2.area) if overlap > (overlap_threshold * smallest_area): to_delete.append(predictions[i]) break for d in to_delete: predictions.remove(d) print(f'Counted {len(predictions)} stock items')ಜೋಡಣೆ ಶ್ಯಾಪ್ಲಿ
Polygon.intersectionವಿಧಾನದೊಂದಿಗೆ ಲೆಕ್ಕಿಸಲ್ಪಡುತ್ತದೆ ಅದು ಜೋಡಣೆ ಹೊಂದಿರುವ ಪೊಲಿಗೋನನ್ನು ನೀಡುತ್ತದೆ. ನಂತರ ಆ ಪ್ರದೇಶ ಲೆಕ್ಕಿಸಲಾಗುತ್ತದೆ. ಈ ಜೋಡಣೆ ಪಾರಮಿತಿ ಸಾಬೀತು ಅಂತಮೌಲ್ಯವಲ್ಲ, ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ ಶೇಕಡಾವಾರಿಯಾಗಿ ಇರಬೇಕು, ಆದಕಾರಣ ಸಣ್ಣ ಬಾಕ್ಸ್ ಕಂಡು, ಆ ಜೋಡಣೆ ಪಾರಮಿತಿ ಡಗರದಲ್ಲಿ ಇರುವ ಶೇಕಡಾವಾರಿ ಅದಕ್ಕೂ ಸಂಬಂಧಿಸಿ ಲೆಕ್ಕಿಸಲಾಗುತ್ತದೆ. ಜೋಡಣೆ ಅದನ್ನು ಮೀರಿ ಇದ್ದರೆ ಭವಿಷ್ಯವಾಣಿ ಅಳಿಸಲು ಗುರುತಿಸಲಾಗುತ್ತದೆ.ಒಂದು ಭವಿಷ್ಯವಾಣಿ ಅಳಿಸಲ್ಪಡುವುದಾಗಿ ಗುರುತಿಸಿದರೆ ಮತ್ತೊಮ್ಮೆ ಪರಿಶೀಲಿಸುವ ಅಗತ್ಯವಿಲ್ಲದಿರುವುದರಿಂದ ಒಳದ ಲೂಪ್ ಮುಕ್ತಾಯವಾಗುತ್ತದೆ ಮುಂದಿನ ಭವಿಷ್ಯವಾಣಿಗಾಗಿ. ನೀವು ಒಂದು ಪಟ್ಟಿಯಿಂದ ವಸ್ತುಗಳನ್ನು ಅಳಿಸಲಾಗದು ಅದನ್ನು ಮರುಹೊಂದುವಾಗ, ಆದ್ದರಿಂದ ಜೋಡಣೆಯು ಹೆಚ್ಚಾಗಿ ಇರುವ ಬಾಕ್ಸ್ಗಳನ್ನು
to_deleteಪಟ್ಟಿಗೆ ಸೇರಿಸಿ ಕೊನೆಯಲ್ಲಿ ಅಳಿಸಲಾಗುವುದು.ಕೊನೆಗೆ ಸ್ಟಾಕ್ ಎಣಿಕೆ ಕಾನ್ಸೋಲ್ಗೆ ಮುದ್ರಿಸಲಾಗುತ್ತದೆ. ಇದನ್ನು ಬಳಿಕ IoT ಸೇವೆಗೆ ಕಳುಹಿಸಿ ಸ್ಟಾಕ್ ಮಟ್ಟಗಳು ಕಡಿಮೆ ಇದ್ದರೆ ಎಚ್ಚರಿಕೆ ನೀಡಬಹುದು. ಎಲ್ಲಾ ಈ ಕೋಡ್ ಬೌಂಡಿಂಗ್ ಬಾಕ್ಸ್ಗಳನ್ನು ರೇಖಿಸುವುದಕ್ಕೂ ಮುಂಚಿತದಲ್ಲಿದೆ, ಆದ್ದರಿಂದ ರಚಿಸಲಾದ ಚಿತ್ರಗಳಲ್ಲಿ ಜೋಡಣೆ ಇಲ್ಲದ ಸ್ಟಾಕ್ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ನೋಡಬಹುದು.
💁 ಇದು ಸರಳ ವಿಧಾನ ಜೋಡಣೆಗಳನ್ನು ತೆಗೆದುಹಾಕಲು, ಒಟ್ಟಿಗೆ ಇದ್ದ ಜೋಡಿ ಮೊದಲದಲ್ಲಿಯೇ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ. ಉತ್ಪಾದನಾ ಕೋಡ್ಗೆ ನೀವು ಇನ್ನಷ್ಟು ಲಾಜಿಕ್ ಸೇರಿಸಬೇಕಾಗಿರಬಹುದು, ಉದಾ: ಹಲವಾರು ವಸ್ತುಗಳ ಜೋಡಣೆಗಳನ್ನು ಪರಿಗಣಿಸುವುದು ಅಥವಾ ಒಬ್ಬ ಬಾಕ್ಸ್ ಇನ್ನೊಬ್ಬರಿಂದ ಒಳಗೊಂಡಿದ್ದರೆ.
-
ಕ್ಯಾಮೆರಾ ಬೇಲೆಯ ಮೇಲೆ ಕೆಲವು ಸ್ಟಾಕ್ ನೋಡುತ್ತಿರುವಂತೆ ಆಪ್ ಚಾಲನೆ ಮಾಡಿ. ಔಟ್ಪುಟ್ ಪಾರಮಿತಿ ಮೀರಿದ ಜೋಡಣೆ ಇಲ್ಲದ ಬಾಕ್ಸ್ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ.
overlap_thresholdಮೌಲ್ಯವನ್ನು ಬದಲಾಯಿಸಿ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸುವುದನ್ನು ಪ್ರಯತ್ನಿಸಿ.
💁 ನೀವು ಈ ಕೋಡ್ ಅನ್ನು code-count/pi ಅಥವಾ code-count/virtual-iot-device ಫೋಲ್ಡರ್ನಲ್ಲಿ ಕಾಣಬಹುದು.
😀 ನಿಮ್ಮ ಸ್ಟಾಕ್ ಎಣಿಕೆ ಯೋಜನೆ ಯಶಸ್ವಿಯಾಯಿತು!
ಬೆಳವಣಿಗೆ: ಈ ದಸ್ತಾವೇಜನ್ನು AI ಅನುವಾದ ಸೇವೆ Co-op Translator ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯನ್ನು ಪ್ರಯತ್ನಿಸಿದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರುವ ಸಾಧ್ಯತೆ ಇದೆ. ಮೂಲ ದಸ್ತಾವೇಜು ಅದರ ಸ್ವದೇಶಿ ಭಾಷೆಯಲ್ಲಿ ಅಧಿಕೃತ ಮೂಲ ಎಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಬೌದ್ಧಿಕ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪಿಗೆ ನಾವು ಹೊಣೆಗಾರರಲ್ಲ.
